Czy istnieje sposób określenia adresu e-mail ORAZ nazwy dla informacji o nadawcy i odbiorcy podczas korzystania z ActionMailer?
Zwykle zrobiłbyś:
@recipients = "#{user.email}"
@from = "[email protected]"
@subject = "Hi"
@content_type = "text/html"
Ale chcę, aby podać nazwę, jak well-- MyCompany <[email protected]>
, John Doe <john.doe@mycompany>
.
Czy jest na to sposób?
ruby-on-rails
actionmailer
Grnbeagle
źródło
źródło
Odpowiedzi:
Jeśli przyjmujesz dane wejściowe użytkownika dla nazwy i adresu e-mail, to jeśli nie sprawdzisz bardzo dokładnie nazwy i adresu e-mail lub nie zmienisz ich znaczenia, możesz skończyć z nieprawidłowym nagłówkiem From, po prostu łącząc ciągi. Oto bezpieczny sposób:
źródło
Mail::Address
nie jest jasne w żadnej z przeczytanych dokumentacji.address.display_name
wydaje się, że w niektórych przypadkach modyfikuje kodowanie ciągów znaków, więc jeśli planujesz używaćname
później, np. w widokach mailera rails, zróbaddress.display_name = name.dup
name.dup
nie wydaje się już potrzebny. Źródło brzmi:@display_name = str.nil? ? nil : str.dup
config.mailer_sender = Proc.new { address = Mail::Address.new... }
źródło
W rails3 umieszczam następujące elementy w każdym środowisku. tj. production.rb
Umieszczanie cudzysłowów wokół nazwy firmy nie działało w Rails3.
źródło
:from => "Company Name <[email protected]>"
jeśli nie masz ograniczeń środowiskowych.w Railsach 2.3.3 pojawił się błąd w ActionMailer. Możesz zobaczyć bilet tutaj. Bilet # 2340 . Jest rozwiązany w wersji 2-3-stabilnej i głównej, więc zostanie naprawiony w wersjach 3.x i 2.3.6.
Aby rozwiązać problem w 2.3. *, Możesz użyć kodu podanego w komentarzach do zgłoszenia:
źródło
Wersja, którą lubię używać, to
`<< to grawerunki.
Aktualizacja
Możesz to również zmienić na
Przeczytaj więcej o literałach ciągów.
źródło
Innym irytującym aspektem, przynajmniej w przypadku nowego formatu AR, jest pamiętanie, że na poziomie klas nazywa się „default”. Odwoływanie się do procedur, które są tylko instancjami, powoduje dyskretne niepowodzenie i daje przy próbie użycia:
Oto, czego ostatecznie użyłem:
źródło