Есть ли способ указать адрес электронной почты И имя для информации об отправителе и получателе при использовании ActionMailer?
Обычно вы делаете:
@recipients = "#{user.email}"
@from = "info@mycompany.com"
@subject = "Hi"
@content_type = "text/html"
Но я хочу , чтобы указать имя в качестве well-- MyCompany <info@mycompany.com>
, John Doe <john.doe@mycompany>
.
Есть ли способ сделать это?
ruby-on-rails
actionmailer
Grnbeagle
источник
источник
Ответы:
Если вы вводите пользовательский ввод для имени и электронной почты, то, если вы не очень тщательно проверяете или не экранируете имя и адрес электронной почты, вы можете получить недопустимый заголовок From, просто объединив строки. Вот безопасный способ:
источник
Mail::Address
неясно ни в одной из прочитанных мною документации.address.display_name
в некоторых случаях кажется, что кодировка строки видоизменяется, поэтому, если вы планируете использовать ееname
позже, например, в представлениях почтовой программы rails, сделайте этоaddress.display_name = name.dup
name.dup
больше не кажется необходимым. Источник гласит:@display_name = str.nil? ? nil : str.dup
config.mailer_sender = Proc.new { address = Mail::Address.new... }
источник
В rails3 я помещаю следующее в каждую среду. т.е. production.rb
Размещение цитат вокруг названия компании в Rails3 у меня не сработало.
источник
:from => "Company Name <no-reply@email.com>"
если у вас нет ограничений среды.в Rails 2.3.3 появилась ошибка в ActionMailer. Вы можете увидеть билет здесь Билет № 2340 . Это разрешено в версиях 2-3-stable и master, поэтому будет исправлено в 3.x и 2.3.6.
Для решения проблемы в 2.3. * Вы можете использовать код, указанный в комментариях к заявке:
источник
Мне нравится использовать эту версию
`<< - обратные кавычки.
Обновить
Вы также можете изменить это на
Подробнее о строковых литералах.
источник
Еще один раздражающий аспект, по крайней мере, с новым форматом AR, - это помнить, что «default» вызывается на уровне класса. Ссылка на подпрограммы, предназначенные только для экземпляра, приводит к тому, что он молча терпит неудачу и дает при попытке использовать его:
Вот что я в итоге использовал:
источник