Java can';不要用liferay发送电子邮件

Java can';不要用liferay发送电子邮件,java,liferay,Java,Liferay,那样不行 MailServiceUtil.sendEmail(msg); 这样我就犯了一个错误: MailEngine.send(from, to, sub, body); 我应该怎么做才能使其正常工作?您缺少身份验证属性,请检查完整的示例。您缺少身份验证属性,请检查完整的示例。最可能的问题是您使用的是SMTP协议而没有SSL。如果这是基于JavaMail的,请确保使用smtps协议,因为它是带SSL的SMTP协议。还要确保启用身份验证。请参阅最有可能的问题是您正在使用不带SSL的SMTP协

那样不行

MailServiceUtil.sendEmail(msg);
这样我就犯了一个错误:

MailEngine.send(from, to, sub, body);

我应该怎么做才能使其正常工作?

您缺少身份验证属性,请检查完整的示例。

您缺少身份验证属性,请检查完整的示例。

最可能的问题是您使用的是SMTP协议而没有SSL。如果这是基于JavaMail的,请确保使用smtps协议,因为它是带SSL的SMTP协议。还要确保启用身份验证。请参阅

最有可能的问题是您正在使用不带SSL的SMTP协议进行连接。如果这是基于JavaMail的,请确保使用smtps协议,因为它是带SSL的SMTP协议。还要确保启用身份验证。查看邮件配置页面“发送SMTP服务器”下的“使用安全网络连接”是否选中

您还可以尝试设置“手动指定其他JavaMail属性以覆盖上述配置”

您是否在邮件配置页面的“发送SMTP服务器”下选中了“使用安全网络连接”

您还可以尝试设置“手动指定其他JavaMail属性以覆盖上述配置”


要从Liferay发送电子邮件,我建议使用消息总线。为此目的,有两个临时目的地。您可以在我的存储库中找到完整的示例。下面是一段使用SubscriptionSender类的示例代码,SubscriptionSender类反过来使用消息总线

mail.smtp.auth=true
mail.smtp.port=465
mail.smtp.socketFactory.port=465
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback=false
SubscriptionSender SubscriptionSender=newsubscriptionsender();
认购人。集合主体(“Lista degli utenti disattivati”);
subscriptionSender.setBody(emailBody.toString());
subscriptionSender.setUserId(user.getUserId());
subscriptionSender.setCompanyId(user.getCompanyId());
subscriptionSender.setFrom(“noreply@liferay.com“,“Liferay门户”);
subscriptionSender.setHtmlFormat(false);
subscriptionSender.setMailId(“user”,user.getUserId());
subscriptionSender.addRuntimeSubscribers(
user.getEmailAddress(),
user.getFullName());
列表电子邮件=(列表)user.getEmailAddresses();
如果(emails.size()>0){
如果(_log.isInfoEnabled()){
_log.info(“User”+User.getUserId()+
“有其他电子邮件地址”);
}
用于(电子邮件地址电子邮件地址:电子邮件){
subscriptionSender.addRuntimeSubscribers(
emailAddress.getAddress(),
(字符串)user.getFullName());
}
}
subscriptionSender.flushNotificationsAsync();

您可以在

找到完整的源代码,以便从Liferay发送电子邮件。我建议使用消息总线。为此目的,有两个临时目的地。您可以在我的存储库中找到完整的示例。下面是一段使用SubscriptionSender类的示例代码,SubscriptionSender类反过来使用消息总线

mail.smtp.auth=true
mail.smtp.port=465
mail.smtp.socketFactory.port=465
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback=false
SubscriptionSender SubscriptionSender=newsubscriptionsender();
认购人。集合主体(“Lista degli utenti disattivati”);
subscriptionSender.setBody(emailBody.toString());
subscriptionSender.setUserId(user.getUserId());
subscriptionSender.setCompanyId(user.getCompanyId());
subscriptionSender.setFrom(“noreply@liferay.com“,“Liferay门户”);
subscriptionSender.setHtmlFormat(false);
subscriptionSender.setMailId(“user”,user.getUserId());
subscriptionSender.addRuntimeSubscribers(
user.getEmailAddress(),
user.getFullName());
列表电子邮件=(列表)user.getEmailAddresses();
如果(emails.size()>0){
如果(_log.isInfoEnabled()){
_log.info(“User”+User.getUserId()+
“有其他电子邮件地址”);
}
用于(电子邮件地址电子邮件地址:电子邮件){
subscriptionSender.addRuntimeSubscribers(
emailAddress.getAddress(),
(字符串)user.getFullName());
}
}
subscriptionSender.flushNotificationsAsync();

您可以在

找到完整的源代码,这是我多年来在portal-ext.properties中使用的GMail配置:

            SubscriptionSender subscriptionSender = new SubscriptionSender();

        subscriptionSender.setSubject("Lista degli utenti disattivati");
        subscriptionSender.setBody(emailBody.toString());
        subscriptionSender.setUserId(user.getUserId());
        subscriptionSender.setCompanyId(user.getCompanyId());
        subscriptionSender.setFrom("noreply@liferay.com", "Liferay Portal");
        subscriptionSender.setHtmlFormat(false);
        subscriptionSender.setMailId("user", user.getUserId());

        subscriptionSender.addRuntimeSubscribers(
            user.getEmailAddress(),
            user.getFullName());

        List<EmailAddress> emails = (List<EmailAddress>) user.getEmailAddresses();
        if (emails.size() > 0) {
            if (_log.isInfoEnabled()) {
                _log.info("User " + user.getUserId() +
                    " has additional emails address");
            }
            for (EmailAddress emailAddress : emails) {
                subscriptionSender.addRuntimeSubscribers(
                    emailAddress.getAddress(),
                    (String) user.getFullName());

            }
        }

        subscriptionSender.flushNotificationsAsync();
mail.session.mail.pop3.host=localhost
mail.session.mail.pop3.password=
mail.session.mail.pop3.port=110
mail.session.mail.pop3.user=
mail.session.mail.smtp.auth=true
mail.session.mail.smtp.host=smtp.gmail.com
mail.session.mail.smtp.port=465
mail.session.mail.smtp.password=
mail.session.mail.smtp.user=
mail.session.mail.store.protocol=pop3
mail.session.mail.transport.protocol=smtp
mail.session.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.session.mail.smtp.starttls.enable=true

以下是portal-ext.properties中为我工作多年的GMail配置:

            SubscriptionSender subscriptionSender = new SubscriptionSender();

        subscriptionSender.setSubject("Lista degli utenti disattivati");
        subscriptionSender.setBody(emailBody.toString());
        subscriptionSender.setUserId(user.getUserId());
        subscriptionSender.setCompanyId(user.getCompanyId());
        subscriptionSender.setFrom("noreply@liferay.com", "Liferay Portal");
        subscriptionSender.setHtmlFormat(false);
        subscriptionSender.setMailId("user", user.getUserId());

        subscriptionSender.addRuntimeSubscribers(
            user.getEmailAddress(),
            user.getFullName());

        List<EmailAddress> emails = (List<EmailAddress>) user.getEmailAddresses();
        if (emails.size() > 0) {
            if (_log.isInfoEnabled()) {
                _log.info("User " + user.getUserId() +
                    " has additional emails address");
            }
            for (EmailAddress emailAddress : emails) {
                subscriptionSender.addRuntimeSubscribers(
                    emailAddress.getAddress(),
                    (String) user.getFullName());

            }
        }

        subscriptionSender.flushNotificationsAsync();
mail.session.mail.pop3.host=localhost
mail.session.mail.pop3.password=
mail.session.mail.pop3.port=110
mail.session.mail.pop3.user=
mail.session.mail.smtp.auth=true
mail.session.mail.smtp.host=smtp.gmail.com
mail.session.mail.smtp.port=465
mail.session.mail.smtp.password=
mail.session.mail.smtp.user=
mail.session.mail.store.protocol=pop3
mail.session.mail.transport.protocol=smtp
mail.session.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.session.mail.smtp.starttls.enable=true

谢谢,我已经尝试通过ROOT.xml和控制面板设置我的SMTP属性,你有其他想法吗?@user1075116在哪里设置用户名和密码?其中一个示例对您有用吗?谢谢,我已经尝试通过ROOT.xml和控制面板设置SMTP属性,您有其他想法吗?@user1075116在哪里设置用户名和密码?其中的一个例子对您有用吗?因为JavaMail有一个单独的smtps协议提供程序来处理使用SSL的SMTP,所以
mail.session.mail.pop3.host=localhost
mail.session.mail.pop3.password=
mail.session.mail.pop3.port=110
mail.session.mail.pop3.user=
mail.session.mail.smtp.auth=true
mail.session.mail.smtp.host=smtp.gmail.com
mail.session.mail.smtp.port=465
mail.session.mail.smtp.password=<MY-PASSWORD-ON-GMAIL>
mail.session.mail.smtp.user=<MY-USERNAME-ON-GMAIL-(WITHOUT-@GMAIL.COM)>
mail.session.mail.store.protocol=pop3
mail.session.mail.transport.protocol=smtp
mail.session.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.session.mail.smtp.starttls.enable=true