如何通过MailServiceUtil检查Liferay 6.1.20EE中是否已成功发送电子邮件

时间:2013-09-19 14:26:11

标签: email service smtp liferay

我正在使用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

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

2 个答案:

答案 0 :(得分:3)

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

首先,消息通过Liferay消息总线异步发送,因此用户可以获得更快的响应,但您不知道路上是否有任何故障。

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

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

答案 1 :(得分:0)

从Liferay 6.2开始,如果在portal-ext.properties文件中设置 mail.throws.exception.on.failure = true ,则MailEngine类还将在其上抛出<script> document.write('script'); </script> <noscript> noscript </noscript> 错误,而不仅仅是记录。