从Centos 7服务器发送邮件不起作用

问题描述 投票:0回答:1

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

application.yml:

...
    mail:
        host: smtp.gmail.com
        port: 587
        username: [email protected]  #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
...

mail service.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上安装postfix或其他人来传递邮件?

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

java centos javamail jhipster centos7
1个回答
0
投票

所以我想知道是否有必要在我的服务器Centos 7上安装postfix或其他人来传递邮件?

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

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

如果被阻止,则必须解锁服务器防火墙上端口587上的出站连接。但是阻止传出端口并不常见。

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

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


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

© www.soinside.com 2019 - 2024. All rights reserved.