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 不发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章