Enviando e-mail com um script Ruby - 501 5.5.4 endereço inválido
Pergunta
Eu estou tentando enviar e-mail com um script Ruby, mas a minha prova de conceito não está funcionando. Eu posso telnet para o e-mail do servidor de correio e de envio que maneira, mas esse script faz com que o servidor de correio para gerar um erro: 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"
No meu script real, my@email.com
é um email válido. 192.168.10.213
é o servidor de correio e 192.168.0.218
é o meu ip local. Note que eu estou executando o Windows XP, e o servidor de correio é um servidor de troca.
Eu não entendo por telnet funciona com os mesmos valores, mas esse script gera o erro de endereço inválido.
Alguém pode me ajudar?
Editar : O código acima funciona agora bem, eu originalmente deixado de fora as vírgulas na chamada do método final. Eu me sinto como um idiota.
Solução 3
Você pode acreditar nisso? Eu me sinto como um idiota, eu estou apenas vírgulas na chamada de método faltando ...
send_email "my@email.com", "test", "blah blah blah"
Eu estou envergonhado.
De qualquer forma, o código acima funciona muito bem se alguém estiver interessado. Basta não deixar de fora as vírgulas como eu fiz.
Outras dicas
Verifique se o seu endereço de email real não contém caracteres inválidos. Por exemplo, veja esta questão .
Eu recomendo Action Mailer para enviar e-mails com Ruby. Veja um trecho aqui .
Há um bug em seu código. Um utilizador mal intencionado poderia inserir mais cabeçalhos em seu e-mail usando novas linhas no assunto.