Отправка электронной почты с помощью сценария Ruby - 501 5.5.4 Неверный адрес - PullRequest
4 голосов
/ 29 июля 2009

Я пытаюсь отправить электронное письмо со скриптом на 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 работает с теми же значениями, но этот скрипт вызывает ошибку неверного адреса.

Может ли кто-нибудь мне помочь?

EDIT : вышеприведенный код теперь работает нормально, я изначально пропустил запятые в последнем вызове метода. Я чувствую себя идиотом.

Ответы [ 4 ]

1 голос
/ 05 августа 2010

В вашем коде есть ошибка. Злонамеренный пользователь может вставить больше заголовков в вашу электронную почту, используя новые строки в теме.

1 голос
/ 29 июля 2009

Я бы рекомендовал Action Mailer для отправки писем с Ruby. Смотрите фрагмент здесь .

1 голос
/ 30 июля 2009

Вы можете в это поверить? Я чувствую себя идиотом, мне просто не хватает запятых в вызове метода ...

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

Я смущен.

В любом случае, приведенный выше код прекрасно работает, если кому-то интересно. Только не пропускайте запятые, как я.

1 голос
/ 29 июля 2009

Убедитесь, что ваш фактический адрес электронной почты не содержит недопустимых символов. Например, см. этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...