Может кто-нибудь, пожалуйста, помогите?Я создал SMTP-сервер и добавил SMTP-клиент.Оба запускаются в одном приложении.Я пытаюсь отправить электронное письмо с хоста localhost на localhost: SMTP-сервер 1025 через TLS, но возникает ошибка:
Ошибка при отправке электронной почты: org.springframework.mail.MailSendException: сбой подключения к почтовому серверу;Вложенное исключение - javax.mail.MessagingException: STARTTLS требуется, но хост не поддерживает STARTTLS.Неудачные сообщения: javax.mail.MessagingException: STARTTLS требуется, но хост не поддерживает STARTTLS;исключения сообщения (1): Сообщение об ошибке 1: javax.mail.MessagingException: STARTTLS требуется, но хост не поддерживает STARTTLS
Что я делаю не так?
application.properties
spring.profiles.active=local
smtpserver.enabled=true
smtpserver.hostName=localhost
smtpserver.port=1025
#enable/diable https
server.ssl.enabled=true
#ssl ciphers
server.ssl.ciphers=TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA256
# SSL protocol to use.
server.ssl.protocol=TLS
# Enabled SSL protocols.
server.ssl.enabled-protocols=TLSv1.2
server.ssl.key-store = certificate.p12
server.ssl.key-store-password = password
server.ssl.key-store-type = PKCS12
#send
spring.mail.host=localhost
spring.mail.port=1025
spring.mail.username=username
spring.mail.password=password
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000
Контроллер для отправки электронной почты
@RestController
@ResponseBody
public class RestTest
{
private static final Logger LOG = LoggerFactory.getLogger(Application.class);
@Autowired
private JavaMailSender sender;
@GetMapping("/test")
public ResponseEntity<String> test()
{
return ResponseEntity.ok("hi");
}
@GetMapping("/send")
public String sendEmailGet()
{
try
{
LOG.info("Before send");
sendEmail();
LOG.info("After send");
return "Email Sent!";
}
catch (Exception ex)
{
LOG.error("Error: {}", ex.getMessage());
return "Error in sending email: " + ex;
}
}
private void sendEmail()
throws Exception
{
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
message.setSender(new InternetAddress("client@test.com"));
helper.setTo("test@gmail.com");
helper.setText("TEST");
helper.setSubject("SUBJECT");
LOG.info("Sending");
sender.send(message);
}
}
SMTP-сервер
@Service
public class SMTPServerService
{
private static final Logger LOG = LoggerFactory.getLogger(SMTPServerService.class);
@Value("${smtpserver.enabled:false}")
String enabled = "";
@Value("${smtpserver.hostName:localhost}")
String hostName = "";
@Value("${smtpserver.port:25}")
String port = "";
SMTPServer smtpServer;
@PostConstruct
public void start()
{
if (BooleanUtils.toBoolean(enabled))
{
SimpleMessageListenerImpl l = new SimpleMessageListenerImpl();
smtpServer = new SMTPServer(new SimpleMessageListenerAdapter(l));
smtpServer.setHostName(this.hostName);
smtpServer.setPort(Integer.valueOf(port));
smtpServer.setRequireTLS(true);
smtpServer.start();
LOG.info("******SMTP Server is running for domain {} on port {}", smtpServer.getHostName(),
smtpServer.getPort());
}
else
{
LOG.warn("SMTP Server NOT ENABLED by settings");
}
}
@PreDestroy
public void stop()
{
if (BooleanUtils.toBoolean(enabled))
{
LOG.info("******SStopping SMTP Server for domain {} on port {}", smtpServer.getHostName(),
smtpServer.getPort());
smtpServer.stop();
}
}
public boolean isRunning()
{
return smtpServer.isRunning();
}
}
Сертификаты: Сертификаты