Ich möchte meine Dienste im Frühjahr testen, die E-Mails senden sollte. Ich versuche org.subethamail:subethasmtp
zu verwenden.Test Senden von E-Mail im Frühjahr
mein Ziel acieve ich erstellt Service MySender
wo ich E-Mail:
@Autowired
private MailSender mailSender;
//...
SimpleMailMessage message = new SimpleMailMessage();
message.setTo("[email protected]");
message.setSubject("Subject");
message.setText("Text");
mailSender.send(message);
// ...
dieses Stück Code zu testen I-Test erstellt application.properties
(in Prüfumfang):
spring.mail.host=127.0.0.1
spring.mail.port=${random.int[4000,6000]}
und Testkonfiguration Klasse, die den Wiser-SMTP-Server starten und in Tests wieder verwendbar machen sollte:
@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();
}
}
Das erwartete Ergebnis ist, dass die Anwendung E-Mails mit dem Wiser-SMTP-Server sendet und die Anzahl der gesendeten Nachrichten überprüft.
Aber wenn ich Dienstanwendung ausführen wirft MailSendException(Couldn't connect to host, port: 127.0.0.1, 4688; timeout -1;)
. Aber wenn ich Haltepunkt hinzufügen und versuchen, verbinden Sie mit Telnet SMTP-Server erlauben zu verbinden und werfen Sie nicht Connection refused
.
Haben Sie eine Idee, warum ich das Versenden von Mails nicht testen kann?
Voll Code Vorschau ist auf Github verfügbar: https://github.com/karolrynio/demo-mail
Bei einer Vermutung war, desto weiser Server starten nicht beendet ist, wenn der Test ausgeführt wird. Möglicherweise müssen Sie etwas in einem '@ Before 'tun, um sicherzustellen, dass der Socket aktiv ist, bevor Sie den Test ausführen. – Taylor
Ich bin nicht sicher darüber, weil in den Protokollen habe ich Informationen, dass der Server vor den Protokollen aus den Tests gestartet wird, aber ich versuche zu warten, bevor der Server die Tests gestartet. – krynio
Ich habe einen Fehler gefunden. Ursache meiner Probleme war die Konfiguration. Zeile: spring.mail.port = $ {random.int [4000,6000]}, weil spring zwei verschiedene Werte zu Bohnen injizieren. Bean MailSender hat einen anderen Port-Wert als Wiser. Danke für Ihre Hilfe. – krynio