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

使用Ruby脚本发送电子邮件-501 5.5.4无效地址,ruby,email,smtp,Ruby,Email,Smtp,我正试图用Ruby脚本发送电子邮件,但我的概念证明不起作用。我可以通过telnet向邮件服务器发送邮件,但此脚本会导致邮件服务器引发错误:501 5.5.4无效地址 #!/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}

我正试图用Ruby脚本发送电子邮件,但我的概念证明不起作用。我可以通过telnet向邮件服务器发送邮件,但此脚本会导致邮件服务器引发错误:
501 5.5.4无效地址

#!/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使用相同的值工作,但是这个脚本引发了无效地址错误

有人能帮我吗


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

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

我建议使用Ruby发送邮件。看到一个片段。

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

发送电子邮件”my@email.com“,”测试“,”诸如此类“

我很尴尬


无论如何,如果有人感兴趣,上面的代码非常有用。请不要像我那样漏掉逗号。

您的代码中有一个bug。恶意用户可以使用主题中的换行符在电子邮件中插入更多标题。

谢谢,但我的机器名和电子邮件地址都是完全有效的,没有奇数字符,没有前导或尾随空格或圆点。但是我的机器名中有一个破折号。。。更改我的计算机名很麻烦,因为我在公司网络中。破折号可能是问题所在吗?记住,telnet是有效的!破折号应该可以,但下划线对域无效。您可能需要查看SMTP通信量以查看服务器实际看到的内容-它可能不是您认为它看到的内容。我宁愿使用Net::SMTP。。。我不需要那种爵士乐。使用ruby内核之外的任何东西都是我最后的选择(比如Action Mailer或TMail或类似工具)。此代码仅用于一次性使用批处理作业的本地运行脚本,因此我不考虑这种安全性。不过,对于任何想使用此代码的人来说,这仍然是一个很好的观点。谢谢