2

私はこのコードを持っています:

require "net/smtp"

MAIL_SERVER = "xxx.ad.xxx.net"

def lib_sending_report(email_hash)

    # define message body

    message = <<"MESSAGE_END"

From: <#{email_hash[:sender]}>

To: <#{email_hash[:recipients]}>

MIME-Version: 1.0

Content-type: text/html

Subject: #{email_hash[:subject]}

<p>Hi All,</p>

    <p>We've just executed a round of load test.</p>

<p>Regards</p>
MESSAGE_END

    Net::SMTP.start(MAIL_SERVER) do |smtp|
      smtp.send_message message, email_hash[:sender], email_hash[:recipients]
    end
end

test = ""
lib_sending_report( {:sender => "abc@xxx.com",
                      :recipients => "abc@xxxx.com",
                      :subject => "Load.Test.Report.of.#{test}"} )

に変更:recipients => "abc@xxxx.com"すると:recipients => "abc@xxxx.com;efg@xxx.com"、次のエラーが発生します。

 501 5.5.4 Invalid Address (Net::SMTPSyntaxError)

受信者が1人だけの場合、メールを正常に送信できます:recipients => "abc@xxxx.com"

私はどこが間違っていますか?使用したセパレータ(セミコロン)が間違っているようです。

セミコロンの代わりにカンマを使用しようとしましたが、機能しませんでした

4

1 に答える 1

6

Net :: SMTPsend_messageは、「To:」アドレス文字列の配列を取ります。

ドキュメントによると:

to_addrは、1つまたは複数の宛先メールアドレスを表す1つまたは複数の文字列または文字列の配列です。

ドキュメントのこの例は、次の方法を示しています。

Net :: SMTP.start('smtp.example.com')do | smtp |
  smtp.send_message msgstr、
                    'from@example.com'、
                    ['dest@example.com'、'dest2@example.com']
終わり
于 2013-01-09T10:33:15.627 に答える