Gibt es eine Möglichkeit, bei Verwendung von ActionMailer E-Mail-UND-Namen für Absender- und Empfängerinformationen anzugeben?
Normalerweise würden Sie Folgendes tun:
@recipients = "#{user.email}"
@from = "[email protected]"
@subject = "Hi"
@content_type = "text/html"
Aber will ich Namen wie well-- angeben MyCompany <[email protected]>
, John Doe <john.doe@mycompany>
.
Gibt es eine Möglichkeit, das zu tun?
ruby-on-rails
actionmailer
Grnbeagle
quelle
quelle
Antworten:
Wenn Sie Benutzereingaben für Name und E-Mail vornehmen, können Sie durch einfaches Verketten von Zeichenfolgen einen ungültigen From-Header erhalten, wenn Sie den Namen und die E-Mail-Adresse nicht sehr sorgfältig überprüfen oder umgehen. Hier ist ein sicherer Weg:
quelle
Mail::Address
ist in keiner der von mir gelesenen Dokumentationen klar.address.display_name
scheint in einigen Fällen die Zeichenfolgencodierung zu mutieren. Wenn Sie alsoname
später verwenden möchten, z. B. in Rails-Mailer-Ansichten, tun Sie diesaddress.display_name = name.dup
name.dup
nicht mehr erforderlich zu sein scheint. Quelle liest:@display_name = str.nil? ? nil : str.dup
config.mailer_sender = Proc.new { address = Mail::Address.new... }
quelle
In Rails3 platziere ich in jeder Umgebung Folgendes. dh Produktion.rb
Das Platzieren von Zitaten um den Firmennamen hat bei Rails3 bei mir nicht funktioniert.
quelle
:from => "Company Name <[email protected]>"
wenn Sie keine Umgebungsbeschränkungen haben.In Rails 2.3.3 wurde ein Fehler im ActionMailer eingeführt. Sie können das Ticket hier sehen Ticket # 2340 . Es ist in 2-3-Stable und Master aufgelöst, sodass es in 3.x und 2.3.6 behoben wird.
Um das Problem innerhalb von 2.3. * Zu beheben, können Sie den in den Ticketkommentaren angegebenen Code verwenden:
quelle
Die Version, die ich gerne benutze, ist
`<< sind Backticks.
Aktualisieren
Sie können das auch in ändern
Lesen Sie mehr über String-Literale.
quelle
Ein weiterer irritierender Aspekt, zumindest beim neuen AR-Format, besteht darin, sich daran zu erinnern, dass "Standard" auf Klassenebene aufgerufen wird. Das Referenzieren von Routinen, die nur Instanzen sind, führt dazu, dass es stillschweigend fehlschlägt und gibt, wenn Sie versuchen, es zu verwenden:
Folgendes habe ich letztendlich verwendet:
quelle