使用Ruby脚本发送电子邮件 - 501 5.5.4无效地址

时间:2009-07-29 14:55:54

标签: ruby email smtp

我正在尝试使用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,而邮件服务器是一个交换服务器。

我不明白为什么telnet使用相同的值,但是这个脚本会引发无效的地址错误。

有人能帮助我吗?

编辑:上面的代码现在运行正常,我最初在最后的方法调用中省略了逗号。我觉得自己像个白痴。

4 个答案:

答案 0 :(得分:1)

确保您的实际电子邮件地址不包含无效字符。例如,请参阅this question

答案 1 :(得分:1)

我建议Action Mailer用于发送带有Ruby的邮件。请参阅代码段here

答案 2 :(得分:1)

你能相信吗?我觉得自己像个白痴,我只是在方法调用中缺少逗号......

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

我很尴尬。

无论如何,如果有兴趣的话,上面的代码很有效。只是不要像我一样遗漏逗号。

答案 3 :(得分:1)

您的代码中存在错误。恶意用户可以使用主题中的换行符向您的电子邮件中插入更多标题。