Apakah ada cara untuk menentukan email DAN nama untuk pengirim dan penerima info saat menggunakan ActionMailer?
Biasanya Anda akan melakukan:
@recipients = "#{user.email}"
@from = "[email protected]"
@subject = "Hi"
@content_type = "text/html"
Tapi, saya ingin menentukan nama seperti baik MyCompany <[email protected]>
, John Doe <john.doe@mycompany>
.
Apakah ada cara untuk melakukannya?
ruby-on-rails
actionmailer
Grnbeagle
sumber
sumber
Jawaban:
Jika Anda mengambil masukan pengguna untuk nama dan email, maka kecuali Anda dengan sangat hati-hati memvalidasi atau melepaskan nama dan email, Anda dapat berakhir dengan tajuk Dari yang tidak valid hanya dengan menggabungkan string. Inilah cara yang aman:
sumber
Mail::Address
tidak jelas dalam dokumentasi mana pun yang saya baca.address.display_name
tampaknya mengubah pengkodean string dalam beberapa kasus, jadi jika Anda berencana untuk menggunakanname
nanti, misalnya di tampilan mailer rails, lakukanaddress.display_name = name.dup
name.dup
sepertinya tidak diperlukan lagi. Sumber berbunyi:@display_name = str.nil? ? nil : str.dup
config.mailer_sender = Proc.new { address = Mail::Address.new... }
sumber
Di rails3 saya menempatkan yang berikut ini di setiap lingkungan. yaitu production.rb
Menempatkan kutipan di sekitar nama perusahaan tidak berhasil untuk saya di Rails3.
sumber
:from => "Company Name <[email protected]>"
jika Anda tidak memiliki batasan lingkungan.dalam Rails 2.3.3 bug di dalam ActionMailer telah diperkenalkan. Anda dapat melihat tiketnya di sini Tiket # 2340 . Ini diselesaikan dalam 2-3-stable dan master sehingga akan diperbaiki dalam 3.x dan 2.3.6.
Untuk memperbaiki masalah dalam 2.3. * Anda dapat menggunakan kode yang disediakan dalam komentar tiket:
sumber
Versi yang saya suka gunakan ini adalah
`<< adalah backtick.
Memperbarui
Anda juga bisa mengubahnya menjadi
Baca lebih lanjut tentang string literal.
sumber
Aspek lain yang menjengkelkan, setidaknya dengan format AR baru, adalah mengingat bahwa 'default' dipanggil di tingkat kelas. Merujuk rutinitas yang hanya instance menyebabkannya gagal secara diam-diam dan menyerah saat Anda mencoba menggunakannya:
Inilah yang akhirnya saya gunakan:
sumber