Я пытаюсь отправить электронное письмо с помощью скрипта 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 работает с теми же значениями, но этот сценарий вызывает ошибку неверного адреса.
Кто-нибудь может мне помочь?
ИЗМЕНИТЬ : приведенный выше код теперь работает нормально, я изначально не использовал запятые в последнем вызове метода. Я чувствую себя идиотом.
4 ответа
Ты можешь в это поверить? Чувствую себя идиотом, мне просто не хватает запятых в вызове метода ...
send_email "my@email.com", "test", "blah blah blah"
Я смущен.
В любом случае, приведенный выше код отлично работает, если кому-то интересно. Только не опускайте запятые, как я.
В вашем коде есть ошибка. Злоумышленник может вставить в ваше электронное письмо больше заголовков, используя в теме сообщения новые строки.
Я бы порекомендовал Action Mailer для отправки писем с помощью Ruby. См. Фрагмент здесь.
Убедитесь, что ваш реальный адрес электронной почты не содержит недопустимых символов. Например, см. этот вопрос.
Похожие вопросы
Связанные вопросы
Новые вопросы
ruby
Ruby - это многоплатформенный динамический объектно-ориентированный интерпретируемый язык с открытым исходным кодом. Тег [ruby] предназначен для вопросов, связанных с языком Ruby, включая его синтаксис и его библиотеки. Вопросы Ruby on Rails должны быть помечены [ruby-on-rails].