Existe uma maneira de especificar o e-mail E o nome para as informações do remetente e do destinatário ao usar o ActionMailer?
Normalmente você faria:
@recipients = "#{user.email}"
@from = "[email protected]"
@subject = "Hi"
@content_type = "text/html"
Mas, eu quero especificar o nome como bem-- MyCompany <[email protected]>
, John Doe <john.doe@mycompany>
.
Existe uma maneira de fazer isso?
ruby-on-rails
actionmailer
Grnbeagle
fonte
fonte
Respostas:
Se você estiver usando a entrada do usuário para nome e e-mail, a menos que valide com muito cuidado ou evite o nome e o e-mail, você pode acabar com um cabeçalho De inválido simplesmente concatenando strings. Aqui está uma maneira segura:
fonte
Mail::Address
não está claro em nenhuma documentação que li.address.display_name
parece mudar a codificação da string em alguns casos, então se você planeja usarname
mais tarde, por exemplo, em visualizações do Rails Mailer, façaaddress.display_name = name.dup
name.dup
não parece mais necessária. A fonte lê:@display_name = str.nil? ? nil : str.dup
config.mailer_sender = Proc.new { address = Mail::Address.new... }
fonte
Em rails3, coloco o seguinte em cada ambiente. ie production.rb
Colocar aspas em torno do nome da empresa não funcionou para mim no Rails3.
fonte
:from => "Company Name <[email protected]>"
se você não tiver restrições de ambiente.no Rails 2.3.3, um bug no ActionMailer foi introduzido. Você pode ver o tíquete aqui Tíquete # 2340 . Está resolvido em 2-3-stable e master, por isso será corrigido em 3.xe 2.3.6.
Para corrigir o problema dentro de 2.3. * Você pode usar o código fornecido nos comentários do tíquete:
fonte
A versão que gosto de usar é
`<< são crases.
Atualizar
Você também pode mudar isso para
Leia mais sobre literais de string.
fonte
Outro aspecto irritante, pelo menos com o novo formato AR, é lembrar que 'default' é chamado no nível da classe. Rotinas de referência que são apenas de instância fazem com que ele falhe silenciosamente e forneça quando você tenta usá-lo:
Aqui está o que acabei usando:
fonte