Liferay 不发送电子邮件

Posted

技术标签:

【中文标题】Liferay 不发送电子邮件【英文标题】:Liferay not sending emails 【发布时间】:2021-12-28 10:24:27 【问题描述】:

我目前遇到了 Liferay 的问题,它无法发送电子邮件。日志中有一个AuthenticationFailedException,但没有更多细节(例如从远程服务器收到的错误消息)。我创建了一个脚本来测试,但没有出现异常或错误。

def from = new InternetAddress("user@example.com", "user@ecample.com")
def to = new InternetAddress ("other@example.com", "other@example.com")
def mail = new MailMessage(from, to, "subject", "message", false)
MailServiceUtil.sendEmail(mail)

如何检查原因并解决问题?

更新 电子邮件设置为通过 office 365 (smtp.office365.com) 发送,并且在我使用该网站登录时使用的凭据有效。当我得到属性时,它们被设置为:

mail.smtp.session.mail.smtp.host : smtp.office365.com mail.session.smtp.port:587 mail.session.smtp.user = user@example.com mail.session.smtp.password = 密码

由于服务器管理页面为空白,密码更改时通过脚本设置它们。

def session = MailServiceUtil.getSession()
def properties = session.getProperties()
properties.setProperty(PropsKeys.MAIL_SESSION_MAIL, "password")
MailServiceUtil.clearSession()

凭据没有问题,但由于其他原因可能会出现异常。

谢谢

【问题讨论】:

您是否配置了邮件服务器连接?这通常涉及发件人的帐户、SMTP 主机和密码。背景:使用 MailServiceUtil,您正在使用 Liferay 的内部基础设施,它将使用自己的配置。这些天没有一个健全的邮件服务器会接受随机传入的连接,你必须配置一个传出 SMTP 服务器。 它最近工作,所以我怀疑可能是配置更改。由于 try/catch 不起作用,它会使任何发送电子邮件的自定义 portlet 变得复杂,因为它是一个没有抛出异常的 void 方法。 【参考方案1】:

我已尝试配置 Liferay smtp 设置以连接 office 365 (smtp.office365.com),但由于 TLS 要求,它不可能。捆绑的 java 邮件引擎无法与某些现代 smtp 一起使用。

在本地安装一个 postfix 并将其配置为中继 smtp 到 smtp.office365.com,然后将 Liferay 切换到 easy localhost:25 smtp。

【讨论】:

当它以前对我有用时,我使用了session.setProperty("mail.smtp.starttls.enable", "true") 后缀更好 您可能只需要正确配置信任关系,例如导入 O365 在其 SMTP 服务器上使用的根证书。

以上是关于Liferay 不发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

用户不会从 Liferay DB 中删除

使用简单的 Java 代码获取当前用户 Liferay

PHP发送带有文件附件的电子邮件 - 电子邮件根本不发送

贝宝发送发票不发送电子邮件

javamail电子邮件不发送

发送的电子邮件客户端中不存在 Android 发送电子邮件