Я хочу проверить свои услуги весной, которая должна отправлять электронные письма. Я стараюсь использовать org.subethamail:subethasmtp
.Проверка отправки электронной почты весной
Чтобы успешно достичь своей цели я создал службу MySender
, где я отправить по электронной почте:
@Autowired
private MailSender mailSender;
//...
SimpleMailMessage message = new SimpleMailMessage();
message.setTo("[email protected]");
message.setSubject("Subject");
message.setText("Text");
mailSender.send(message);
// ...
Чтобы проверить этот кусок кода я создал тест application.properties
(в тестовом объеме):
spring.mail.host=127.0.0.1
spring.mail.port=${random.int[4000,6000]}
И тест конфигурации класс, который должен запустить Wiser SMTP-сервер и сделать его многоразовым в тестах:
@Configuration
public class TestConfiguration {
@Autowired
private Wiser wiser;
@Value("${spring.mail.host}")
String smtpHost;
@Value("${spring.mail.port}")
int smtpPort;
@Bean
public Wiser provideWiser() {
// provide wiser for verification in tests
Wiser wiser = new Wiser();
return wiser;
}
@PostConstruct
public void initializeMailServer() {
// start server
wiser.setHostname(smtpHost);
wiser.setPort(smtpPort);
wiser.start();
}
@PreDestroy
public void shutdownMailServer() {
// stop server
wiser.stop();
}
}
Ожидаемый результат: приложение отправляет электронное письмо с использованием Wiser smtp-сервера и проверяет количество отправленных сообщений.
Но когда я запускаю служебное приложение, то выбрасывает MailSendException(Couldn't connect to host, port: 127.0.0.1, 4688; timeout -1;)
. Но когда я добавляю точку останова и пытаюсь подключиться с помощью сервера telnet smtp, позвольте подключиться и не бросать Connection refused
.
У вас есть идеи, почему я не могу проверить отправку писем?
Полный код предварительного просмотра доступен на GitHub: https://github.com/karolrynio/demo-mail
На догадке, мудрее сервер не закончил, начиная, когда тест выполняется. Возможно, вам нужно что-то сделать в '@ Before', чтобы убедиться, что сокет активен до запуска теста. – Taylor
Я не уверен в этом, потому что в журналах у меня есть информация о том, что сервер запускается до журналов из тестов, но я пытаюсь дождаться запуска сервера до запуска тестов. – krynio
Я нашел ошибку. Причиной моих проблем была конфигурация. Линия: spring.mail.port = $ {random.int [4000,6000]}, потому что весна впрыскивает 2 разных значения в фасоль. Bean MailSender имеет другое значение порта, чем Wiser. Спасибо за вашу помощь. – krynio