Неудачные сообщения: javax.mail.MessagingException: STARTTLS требуется, но хост не поддерживает STARTTLS - PullRequest
0 голосов
/ 14 декабря 2018

Может кто-нибудь, пожалуйста, помогите?Я создал 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();
    }
}

Сертификаты: Сертификаты

...