Sending email with a Ruby script - 501 5.5.4 Invalid Address

爱⌒轻易说出口 提交于 2020-01-03 16:54:52

问题


I'm trying to send email with a Ruby script, but my proof of concept isn't working. I can telnet to the mail server and send mail that way, but this script causes the mail server to raise an error: 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"

In my actual script, my@email.com is a valid email. 192.168.10.213 is the mail server and 192.168.0.218 is my local ip. Note that I'm running windows xp, and the mail server is an exchange server.

I don't understand why telnet works with the same values, but this script raises the invalid address error.

Can somebody help me?

EDIT: The above code now works fine, I originally left out the commas in the final method call. I feel like an idiot.


回答1:


Make sure your actual email address does not contain invalid characters. For example, see this question.




回答2:


I'd recommend Action Mailer for sending mails with Ruby. See a snippet here.




回答3:


Can you believe it? I feel like an idiot, I'm just missing commas in the method call...

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

I'm embarrassed.

Anyway, the above code works great if anyone is interested. Just don't leave out the commas like I did.




回答4:


There is a bug in your code. A malicious user could insert more headers into your email by using newlines in the subject.



来源:https://stackoverflow.com/questions/1200882/sending-email-with-a-ruby-script-501-5-5-4-invalid-address

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!