org.springframework.mail.MailSendException / java.net.ConnectException的可能原因?

时间:2016-09-07 11:39:04

标签: java spring email pivotal-cloud-foundry

我有一个Spring Boot应用程序,每天应该向用户发送一些电子邮件,这些用户需要了解当天某些特定事件。我使用的是spring-boot-starter-mail依赖项和JavaMailSender

我的app.proiperties配置邮件看起来像这样(有适当的主机,用户和密码数据):

spring.mail.host = myhost.com
spring.mail.username = user@myhost.com
spring.mail.password = mypassword
spring.mail.port = 25
spring.mail.properties.mail.smtp.auth = true

负责发送邮件的代码是:

private void sendMessage(String email, String text, String subject) {
    try {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);

        helper.setFrom(SENDER);
        helper.setSubject(subject);
        helper.setTo(email);
        helper.setText(text, true);

        javaMailSender.send(message);

    } catch (MessagingException e) {
        e.printStackTrace();
    } catch (MailException e) {
        e.printStackTrace();
    }
}

其中javaMailSender是自动装配的,SENDER始终设置为spring.mail.username属性的值。此方法在预定作业内循环调用,通常约10到20次(对于应通知的每封电子邮件)。

当我在本地计算机或公司服务器上运行时,它没有问题,但是当应用程序在关键的云代工厂上运行时,它会发送2或3封第一封电子邮件然后抛出

org.springframework.mail.MailSendException: Mail server connection failed; nested exception is com.sun.mail.util.MailConnectException: Couldn't connect to host, port: myhost.com, 25; timeout -1;
java.net.ConnectException: Connection timed out. Failed messages: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: myhost.com, 25; timeout -1;
...

可能的原因是什么?我试图找到答案,但我发现的所有问题都是关于邮件根本不起作用,通常是由于配置错误而事实并非如此(我认为)因为我可以成功地从两台不同的机器发送电子邮件(两者都在邮件主机本地网络之外),但不能从关键云(或更具体 - 只能在出现异常之前部分地执行)。 / p>

0 个答案:

没有答案