Отправка почты не работает с моего сервера Centos 7 - PullRequest
0 голосов
/ 28 марта 2019

В моем 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пересылать почту?

Я открыл порт 587 25 на своем брандмауэре Centos 7

1 Ответ

0 голосов
/ 28 марта 2019

Так что мне интересно, нужно ли устанавливать постфикс или другие на моем сервере Centos 7 для ретрансляции почты?

Это не должно быть необходимо. Javamail API должен иметь возможность напрямую общаться с SMTP-сервером без какого-либо локального посредника для ретрансляции электронной почты.

Я открыл порт 587 25 на брандмауэре Centos 7

Было бы необходимо разблокировать исходящие соединения через порт 587 на брандмауэре вашего сервера ... если бы он был заблокирован. Но не принято блокировать исходящие порты.

Скорее всего, исходящие соединения через порт 587 заблокированы вашим интернет-провайдером или облачным провайдером. Проверьте их политику в отношении клиентов, отправляющих электронную почту.

Другая возможность состоит в том, что электронные письма достигают почтовых серверов Google, но они классифицируются как спам ... и незаметно отфильтровываются.


Вы можете получить больше информации о том, что на самом деле происходит, установив для свойства mail.debug значение true или вызвав setDebug(true) для объекта mail Session.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...