我已經編寫了一個小腳本來發送帶有Ruby附件的電子郵件。只要有一個收件人,它就像一個魅力一樣,但是我需要發送郵件給收件人列表。收件人都存儲在一個YAML文件,該文件是由腳本讀取,然後電子郵件是在一個循環的幫助發送到每個收件人:如何使用Ruby Mail.rb發送電子郵件給多個收件人
Mail.defaults do
delivery_method :smtp, options
end
mail['mail_to'].each do |i|
mail = Mail.new do
to i
from mail['mail_from']
subject mail_subject
body mail_body
add_file :filename => 'Report.pdf', :content => File.read(global['filename_pdf'])
end
mail.deliver!
end
然而,這僅適用於第一個收件人,事後紅寶石拋出這個:
/home/juwi/.gem/ruby/1.9.1/gems/mail-2.5.4/lib/mail/check_delivery_params.rb:5:in `check_delivery_params': An SMTP From address is required to send a message. Set the message smtp_envelope_from, return_path, sender, or from address. (ArgumentError)
from /home/juwi/.gem/ruby/1.9.1/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:98:in `deliver!'
from /home/juwi/.gem/ruby/1.9.1/gems/mail-2.5.4/lib/mail/message.rb:248:in `deliver!'
from main.rb:47:in `block in <main>'
from main.rb:33:in `each'
from main.rb:33:in `<main>'
我真的不明白爲什麼會發生這種情況。所以我很想在這裏開悟!
嘗試'pp mail ['mail_to']'並查看是否有任何無效(空白?)條目。 – davogones
郵件['mail_to']不是問題。 mail ['mail_from']在循環的第二次運行中爲零。 – juwi