私はRubyスクリプトで電子メールを送信しようとしていますが、私の概念証明が機能していません。私はメールサーバーにtelnetで接続し、そのようにメールを送信しますが、このスクリプトはエラーを発生させるために、メールサーバの原因となることができます。私の実際のスクリプトで501 5.5.4 Invalid Address
Rubyスクリプトで電子メールを送信する - 501 5.5.4無効なアドレス
#!/usr/bin/ruby
require 'net/smtp'
def send_email(to, subject = "", body = "")
from = "[email protected]"
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 "[email protected]", "test", "blah blah blah"
を、[email protected]
は有効なメールです。 192.168.10.213
はメールサーバー、192.168.0.218
は私のローカルIPです。私はWindows XPを実行していることに注意してください。メールサーバはExchangeサーバです。
telnetが同じ値で動作する理由はわかりませんが、このスクリプトは無効なアドレスエラーを発生させます。
誰かが私を助けることができますか?
EDIT:上記のコードは正常に動作しますが、最初は最後のメソッド呼び出しでコンマを使いませんでした。私は馬鹿のように感じる。
ありがとうございますが、私のマシン名と私のメールアドレスの両方が完全に有効で、奇数の文字はなく、先頭または末尾の空白やドットはありません。私のマシン名にはダッシュが付いていますが...私は企業ネットワークに入っているので、コンピュータ名を変更するのは面倒です。ダッシュが問題になることはありますか? telnetが動作することを忘れないでください! –
ダッシュは問題ありませんが、アンダースコアはドメインには有効ではありません。サーバーが実際に見ているものを見るためにSMTPトラフィックを調べる必要があるかもしれません。あなたが見ているとは思っていないかもしれません。 –