Rubyスクリプトを使用した電子メールの送信-501 5.5.4無効なアドレス

StackOverflow https://stackoverflow.com/questions/1200882

  •  05-07-2019
  •  | 
  •  

質問

Rubyスクリプトを使用してメールを送信しようとしていますが、概念実証が機能していません。メールサーバーにtelnetで接続してメールを送信できますが、このスクリプトによりメールサーバーでエラーが発生します: 501 5.5.4 Invalid Address

#!/usr/bin/ruby

require 'net/smtp'

def send_email(to, subject = "", body = "")
    from = "my@email.com"
    body= "From: #{from}\r\nTo: #{to}\r\nSubject: #{subject}\r\n\r\n#{body}\r\n"

    Net::SMTP.start('192.168.10.213', 25, '192.168.0.218') do |smtp|
        smtp.send_message body, from, to
    end
end

send_email "my@email.com", "test", "blah blah blah"

実際のスクリプトでは、 my@email.com は有効なメールです。 192.168.10.213 はメールサーバーで、 192.168.0.218 はローカルIPです。 Windows XPを実行していることに注意してください。メールサーバーはExchangeサーバーです。

telnetが同じ値で機能する理由がわかりませんが、このスクリプトでは無効なアドレスエラーが発生します。

誰か助けてくれますか?

編集:上記のコードは正常に動作するようになりました。最初の最後のメソッド呼び出しではコンマを省略しました。私はばかみたいです。

役に立ちましたか?

解決 3

信じられますか?私はばかみたいに感じます、メソッド呼び出しでコンマが抜けているだけです...

send_email" my@email.com"、" test"、" blah blah blah"

恥ずかしいです。

とにかく、誰かが興味を持っているなら、上記のコードは素晴らしい働きをします。私のようにカンマを省かないでください。

他のヒント

実際のメールアドレスに無効な文字が含まれていないことを確認してください。たとえば、この質問を参照してください。

Rubyでメールを送信するには、アクションメーラーをお勧めします。スニペットこちらを参照してください。

コードにバグがあります。悪意のあるユーザーは、件名に改行を使用することで、メールにさらにヘッダーを挿入できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top