Liferay 7 MailService.sendMail из пользовательского портлета работает не только на HOST SERVER - PullRequest
0 голосов
/ 25 апреля 2018

У меня странная проблема с пользовательским портлетом в Liferay 7, которую нужно решить:

  1. MailService.sendMail работает из МОЕ КОМПЬЮТЕР с google smtp и личным аккаунтом: это означает, что код работает...
  2. На моем ХОСТ-СЕРВЕРЕ отправка сообщений электронной почты с помощью final-smtp работает правильно: я попытался использовать пользователя root и liferay с портом telnet final-smtp.
  3. На сервере Liferay на ХОСТ-СЕРВЕРЕотправка электронной почты работает правильно: если я забуду пароль, Liferay отправит мне электронное письмо.
  4. Но ... если я попытаюсь отправить письмо с моим портлетом из Liferay на HOST SERVER, это не такработать без ошибок.Я использую Liferay MailService.sendMail.Я отправляю код, но он работает (на МОЕМ КОМПЬЮТЕРЕ).

Я получаю услугу следующим образом:

    @Reference(unbind = "-")
    protected void setMailService(MailService mailService) {
       _mailService = mailService;
    }

И код вызова следующий:

    InternetAddress fromAddress = null;
    String newsletterPrefix = null;
    InternetAddress toAddress = null;

    try {
        String smtpUser = PropsUtil.get(
        "newsletter.send.mail.smtp.user");

        String smtpToUser = PropsUtil.get(
        "newsletter.send.mail.smtp.to.user");

        if (Validator.isNotNull(smtpUser)) {
            fromAddress = new InternetAddress(smtpUser);
        }
        if (Validator.isNotNull(smtpToUser)) {
            toAddress = new InternetAddress(smtpToUser);
        }
    }
    catch (Exception e) {
        _log.error(e, e);
        result = false;
    }



    MailMessage mailMessage = new MailMessage(
        fromAddress, toAddress, subject, body, true);
        mailMessage.setBCC(addressList);


    _mailService.sendEmail(mailMessage);

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Причин может быть несколько, некоторые даже не связаны с кодом. Я вижу, что вы используете этот код для рассылки новостей, которая предполагает, что вы используете SMTP-сервис, предназначенный для этого.

Возможно, ваш сервер действительно успешно отправляет электронное письмо, но сервер smtp просто блокирует, отклоняет или помечает для отправки позже. Кроме того, этот сервер может быть настроен так, чтобы не отправлять сообщение об ошибке или отправлять сообщение об ошибке в форме успешной доставки, но данные содержат ошибку.

Я бы начал проверять конфигурацию вашего почтового сервера и разрешения для учетных записей, а затем его логи. Кроме того, вы можете рассмотреть возможность использования плагинов для массовой доставки почты, например: https://www.e -systems.tech / blog / - / blogs / connect-liferay-to-mailgun

0 голосов
/ 25 апреля 2018

Несколько вещей, которые вы можете сделать для устранения этой проблемы:

  • Убедитесь, что вы развертываете нужный код на HOST-машине.(Глупое предложение, но во многих случаях это проблема.)
  • Попробуйте установить для уровня логирования следующего пакета значение ALL / DEBUG, чтобы увидеть, показывает ли это какие-либо проблемы в журналах.
    com.liferay.mail.service
...