Я пытаюсь отправить электронную почту с помощью скрипта Ruby, но мое доказательство концепции не работает. Я могу телнет к почтовому серверу и отправлять почту, что путь, но этот сценарий вызывает почтовый сервер, чтобы вызвать ошибку: 501 5.5.4 Invalid Address
Отправка электронной почты с помощью скрипта Ruby - 501 5.5.4 Недействительный адрес
#!/usr/bin/ruby
require 'net/smtp'
def send_email(to, subject = "", body = "")
from = "[email protected]"
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 "[email protected]", "test", "blah blah blah"
В моем фактическом сценарии, [email protected]
действительный адрес электронной почты. 192.168.10.213
- это почтовый сервер, а 192.168.0.218
- это мой местный ip. Обратите внимание, что я запускаю windows xp, а почтовый сервер - сервер обмена.
Я не понимаю, почему telnet работает с одинаковыми значениями, но этот скрипт вызывает неверную ошибку адреса.
Может кто-нибудь мне помочь?
EDIT: Приведенный выше код теперь работает нормально, я изначально отказался от запятых в конечном вызове метода. Я чувствую себя идиотом.
Спасибо, но и мое имя машины, и мой адрес электронной почты абсолютно верны, не имеют никаких нечетных символов, не имеют ни пробела, ни пробега или пробелов. У моего машинного имени есть черта в нем, хотя ... это хлопот, чтобы изменить имя моего компьютера, поскольку я в корпоративной сети. Может ли проблема быть проблемой? Помните, telnet работает! –
Черта должна быть хорошей, хотя подчеркивание недействительно для доменов. Возможно, вам придется посмотреть на SMTP-трафик, чтобы увидеть, что на самом деле видит сервер - возможно, это не так, как вы думаете. –