无法从我的Centos 7服务器发送邮件

时间:2019-03-28 12:48:34

标签: java centos javamail jhipster centos7

在我的Java应用程序中,我有一个允许发送邮件的模块

application.yml:

...
    mail:
        host: smtp.gmail.com
        port: 587
        username: xxxxxx@gmail.com  #Replace this field with your Gmail username.
        password: xxxxxxx           #Replace this field with your Gmail password.
        protocol: smtp
        tls: true
        properties.mail.smtp:
            auth: true
            starttls.enable: true
            ssl.trust: smtp.gmail.com
...

MailService.java:

...
    @Async
    public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
        log.debug("Send email[multipart '{}' and html '{}'] to '{}' with subject '{}' and content={}",
            isMultipart, isHtml, to, subject, content);

        // Prepare message using a Spring helper
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper message = new MimeMessageHelper(mimeMessage, isMultipart, StandardCharsets.UTF_8.name());
            message.setTo(to);
            message.setFrom(Properties.getMail().getFrom());
            message.setSubject(subject);
            message.setText(content, isHtml);
            javaMailSender.send(mimeMessage);
            log.debug("Sent email to User '{}'", to);
        } catch (Exception e) {
            if (log.isDebugEnabled()) {
                log.warn("Email could not be sent to user '{}'", to, e);
            } else {
                log.warn("Email could not be sent to user '{}': {}", to, e.getMessage());
            }
        }
    }
...

在本地使用应用程序(Windows 10)时,我会收到电子邮件。 但是,当我在服务器Centos 7上部署应用程序时,我没有收到任何邮件,并且日志中也没有错误。

所以我想知道是否有必要在服务器Centos 7上安装后缀或其他后缀来中继邮件?

我在Centos 7防火墙上打开了端口587 25

1 个答案:

答案 0 :(得分:0)

  

所以我想知道是否有必要在服务器Centos 7上安装后缀或其他后缀来中继邮件?

这不是必需的。 Javamail API应该能够直接与SMTP服务器通信,而无需任何本地中介来中继电子邮件。

  

我在Centos 7防火墙上打开了端口587 25

如果需要阻止服务器防火墙上端口587上的出站连接,则有必要...但是通常不阻止传出端口。

您的ISP或云提供商很可能阻止了端口587上的传出连接。查看他们对客户发送电子邮件的政策。

另一种可能性是,电子邮件正在到达Google邮件服务器,但它们被归类为垃圾邮件……并被静默过滤掉。


通过将mail.debug属性设置为true,或在邮件setDebug(true)对象上调用Session,您可以得到有关实际情况的更多线索。