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

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

有人能帮助我吗?

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

有帮助吗?

解决方案 3

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

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

我很尴尬。

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

其他提示

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

我建议 Action Mailer 用于发送带有Ruby的邮件。请参阅此处的摘要。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top