Я пытаюсь отправить простое электронное письмо через Ruby (без рельсов) в OS X, с XCode (который устанавливает Ruby). Но я сталкиваюсь с проблемой с моим сервером smtp, который требует, чтобы почтовый клиент проверял почту раньше отправка как форма аутентификации.
Как я могу заставить Ruby проходить проверку подлинности на SMTP-сервере "POP", прежде чем я смогу отправлять почту? Не скачивать почту; Я хочу отправлять только письма в формате html (в конечном итоге через Applescript, вызывающий Ruby, поскольку Applescript не поддерживает smtp), но сервер требует, чтобы я проверял почту перед отправкой.
Изменить 4/05/10:
Ну, это смущает. Оказалось проще; Я пытался сделать это более сложным, чем нужно. Хотя мой почтовый сервер требует всплывающее окно перед SMTP, это отправляет ОК:
require 'net/smtp'
message = <<MESSAGE_END
From: Private Person <me@fromdomain.com>
To: A Test User <test@todomain.com>
Subject: SMTP e-mail test
This is a test e-mail message.
MESSAGE_END
Net::SMTP.start('mail.mydomain.com', 25) do |smtp|
smtp.send_message message,
'mark@mydomain.com',
'mark@mydomain.com'
end
Редактировать 04.04.10:
При этом я получаю 500 нераспознанных ошибок команды; хотя поп-сервер отвечает.
require 'net/smtp'
require 'net/pop'
message = <<MESSAGE_END
From: Private Person <me@fromdomain.com>
To: A Test User <test@todomain.com>
Subject: SMTP e-mail test
This is a test e-mail message.
MESSAGE_END
Net::POP3.start('mail.mydomain.com', 110, 'mark@mydomain.com', 'password') do |pop|
// If this line is included,
// I get a printout of the number
// of emails on the server
// right before the error:
//
// puts pop.n_mails end
Net::SMTP.start('mail.markratledge.com',
25,
'localhost',
'mark@mydomain.com', 'password', :plain) do |smtp|
smtp.send_message message, 'mark@mydomain.com',
'mark@mydomain.com'
end
end