6

我正在使用 Liferay 6.1.20,我的 Portlet 正在使用 Liferay 邮件服务通过 Liferay 中配置的 SMTP 服务器发送电子邮件。

我现在的问题是:是否可以检查 SMTP 服务器是否可用,或者是否可以检查电子邮件是否成功发送?如果 SMTP 服务器不可用,我想给用户一个输出。实际上我只在服务器控制台中看到以下行:

14:06:47,679 WARN  [liferay/mail-1][MailEngine:560] Failed to connect to a valid mail server. Please make sure one is properly configured. Could not connect to SMTP host: localhost, port: 25

我希望有人能给我一个解决方案。谢谢!

4

3 回答 3

4

基本上有两个问题阻止您发现使用 MailServiceUtil 服务发送电子邮件时是否发生任何故障。

首先,消息通过 Liferay 消息总线异步发送,因此用户得到更快的响应,但您永远不知道途中是否有任何故障。

其次,消息最终到达 MailEngine,所有异常都被捕获并仅写入日志。

因此,我建议您使用 ext-plugin(它在 util-java 中)覆盖 MailEngine 类以不同方式处理异常,然后直接从您的插件中使用它,而不是 MailServiceUtil,后者仅将所有内容推送到消息总线。

于 2013-09-22T07:44:11.373 回答
1

从 Liferay 6.2 开始,如果你在你的 portal-ext.properties 文件中设置mail.throws.exception.on.failure=true,MailEngine 类也会抛出一个com.liferay.util.mail.MailEngineException错误,而不仅仅是记录。

于 2019-07-01T08:25:09.247 回答
0

一个非常老的问题,但是当我不断到达这里时,我将把它留给任何可能需要的人(在 7.3 上测试)。

我们可以使用以下 Groovy 脚本测试邮件流是否正常:

import com.liferay.mail.kernel.service.MailServiceUtil
import javax.mail.*
import javax.mail.internet.*
import com.liferay.mail.kernel.model.MailMessage;

def from = new InternetAddress("no-reply@example.com")
def to = new InternetAddress ("where@example.com")
def mail = new MailMessage(from, to, "subject", "test message", false)
MailServiceUtil.sendEmail(mail)

而且,正如另一个答案中提到的,查看异常的属性仍然有效。

mail.throws.exception.on.failure=true
于 2022-01-11T22:40:15.257 回答