Цель
Я хочу реализовать проверку работоспособности SMTP-сервера. Эта проверка работоспособности должна включать проверку подлинности, чтобы я знал не только о том, доступен ли сервер, но и о том, смогу ли я отправлять электронные письма с использованием данного сертификата.
Я понимаю, что это возможно при использовании Te lnet.
Если возможно, я бы хотел что-то более высокого уровня. В настоящее время я использую javax.mail.Session
, javax.mail.Transport
, et c.
Вопросы
Можно ли проверить, будет ли (вероятно) SMTP-сервер принимать мой запрос от проверка подлинности с использованием сертификата, без отправки чего-то вроде тестового сообщения на сервер с использованием простого java API?
Также у меня есть еще один вопрос: следует ли мне использовать сеанс для MimeMessage, а затем отправлять их с помощью stati c Transport # метод отправки. Или я могу использовать что-то, где я получаю экземпляр. Главное, чего я хотел бы добиться, это получить код возврата с сервера также в успешных случаях.
Я также согласен с использованием другой библиотеки.
Для справки приведу некоторый код того, как я Готовлю сеанс и сообщения атм.
public class SmtpMailService {
public Session prepareSession() {
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", port);
return Session.getInstance(properties, null);
}
public List<MimeMessage> sendMessages(List<MimeMessage> messages) {
Iterator<MimeMessage> m = messages.iterator();
while (m.hasNext()) {
MimeMessage currentMessage = m.next();
try {
Transport.send(currentMessage);
m.remove();
} catch (MessagingException e) {
break;
}
}
List<MimeMessage> mailsWithError = StreamUtils.asList(m);
return mailsWithError;
}
}
И как мне тогда отправлять письма.
public class SmtpMailSenderService {
private SmtpMailService mailerService;
public List<SmtpEmailNotificationRecipient> sendNotificationMails(final List<SmtpEmailNotificationRecipient> recipients,
final SmtpMailTemplate templateId, final Map<String, String> templateValues) {
// templating stuff
final Session smtpSession = mailerService.prepareSession();
final List<MimeMessage> messages = mailerService.prepareMessages(smtpSession, recipients, email);
final List<MimeMessage> unsentMessages = mailerService.sendMessages(messages);
return collectRemainingRecipients(unsentMessages);
}
}