我正在尝试使用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使用相同的值,但是这个脚本会引发无效的地址错误。
有人能帮助我吗?
编辑:上面的代码现在运行正常,我最初在最后的方法调用中省略了逗号。我觉得自己像个白痴。
答案 0 :(得分:1)
确保您的实际电子邮件地址不包含无效字符。例如,请参阅this question。
答案 1 :(得分:1)
我建议Action Mailer用于发送带有Ruby的邮件。请参阅代码段here。
答案 2 :(得分:1)
send_email "my@email.com", "test", "blah blah blah"
我很尴尬。
无论如何,如果有兴趣的话,上面的代码很有效。只是不要像我一样遗漏逗号。
答案 3 :(得分:1)
您的代码中存在错误。恶意用户可以使用主题中的换行符向您的电子邮件中插入更多标题。