From: Masato Toyoshima Date: 2003-08-26T19:19:01+09:00 Subject: [ruby-list:38279] CRAM-MD5でエラー(Net::SMTP)(自己解決) こんばんは 豊島と申します。 簡単なメール送信のテストを行う必要がでてきたので、久しぶりにRubyを触ってみました。 #おかしな表現を使っていましたら、優しくご指摘を:- さて本題ですが、 SMTP認証に関してテストしようとしたところ、なぜかエラーでうまく動かず、 試行錯誤しておりました。 結果、Net::SMTPに少し手を入れることにより、動作するようになりましたので、 ご報告させていただきます。 MTAはEximを利用しております。Rubyは1.8(Mingw版)を使用しています。 メールの送信自体は、 Net::SMTP.start(smtpsvr, smtpport, 'TESTSERVER', account=authuid,password=authpwd,authtype=authtyp){|smtp| smtp.send_mail(src, sender, to) } といった形で呼び出しています。 実際に遭遇したエラーは、次のとおりです。 `check_response': 334 ..(略).. (Net::SMTPUnknownError) 上記エラーを見て、334というレスポンスに対して、うまく動作してないのだろうと考えました。 そこでNet::SMTPのソースの中で、SMTPUnknownErrorを探してみましたら、 check_responseで返されているエラーだとわかりました。 check_responseでは、SMTPの応答メッセージの300番台については、354(DATAコマンド)のみの 対応となっていましたので、思い切って300番台は、すべて同じ処理と考えて、 以下のようにしました。 return res if allow_continue and /\A354/ === res ↓ return res if allow_continue and /\A3/ === res これで一応、無事CRAM-MD5で認証が通るようになりました。 こんな感じの対処で問題なかったでしょうか? より良い対処策がありましたら、ご教示ください。