FTP文件传输后邮件通知失效求助(本地测试正常)
问题:FTP服务器部署后无法通过mailto发送邮件通知
我搭建了基于FTP服务器的文件传输服务,通过文件连接器实现目录间文件传输。本地测试时,文件传输成功后可正常发送邮件通知,但部署到FTP服务器后,无任何报错却无法发送邮件。想了解使用mailto配合FTP服务器实现该功能是否有特定配置方式?
邮件序列代码
<log level="custom"> <property name="sequence" value="FileReadSeq"/> </log> <property name="messageType" scope="axis2" type="STRING" value="text/html"/> <property name="ContentType" scope="axis2" type="STRING" value="text/html"/> <property name="Subject" scope="transport" type="STRING" value="File Received"/> <property name="OUT_ONLY" scope="default" type="STRING" value="true"/> <send> <endpoint name="FileEpr"> <address uri="mailto:myemail@gmail.com"> <suspendOnFailure> <initialDuration>-1</initialDuration> <progressionFactor>1</progressionFactor> </suspendOnFailure> <markForSuspension> <retriesBeforeSuspension>0</retriesBeforeSuspension> </markForSuspension> </address> </endpoint> </send>
Deployment.toml 配置
[[transport.mail.sender]] name = "mailto" parameter.hostname = "smtp.gmail.com" parameter.port = "587" parameter.enable_tls = true parameter.auth = true parameter.username = "myemail@gmail.com" parameter.password = "emailpassword" parameter.from = "myemail@gmail.com"
axis.xml 配置
<transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender"> <parameter name="mail.smtp.host">smtp.gmail.com</parameter> <parameter name="mail.smtp.port">587</parameter> <parameter name="mail.smtp.starttls.enable">true</parameter> <parameter name="mail.smtp.auth">true</parameter> <parameter name="mail.smtp.user">myemail@gmail.com</parameter> <parameter name="mail.smtp.password">emailpassword</parameter> <parameter name="mail.smtp.from">myemail@gmail.com</parameter> </transportSender>
可能的原因及解决方法
- 网络连通性限制:FTP服务器所在环境可能封禁了SMTP端口(587),需验证服务器能否访问
smtp.gmail.com:587,可通过以下命令测试:telnet smtp.gmail.com 587 # 或使用curl curl -v smtp://smtp.gmail.com:587 - Gmail账号权限问题:
- 若开启了两步验证,必须使用应用专用密码替换配置中的原密码;
- 未开启两步验证时,需在Google账号设置中启用低安全性应用访问(Gmail已逐步淘汰该选项,优先推荐应用专用密码)。
- 配置优先级冲突:同时在
axis.xml和deployment.toml中配置邮件参数可能导致冲突,建议保留deployment.toml的配置,注释掉axis.xml中的transportSender节点。 - 日志排查:查看WSO2的
wso2carbon.log日志,搜索MailTransportSender关键词,排查是否存在认证失败、连接超时等隐藏异常。 - 端点超时配置:在邮件端点中添加超时设置,避免因网络延迟导致静默失败:
<address uri="mailto:myemail@gmail.com"> <suspendOnFailure> <initialDuration>-1</initialDuration> <progressionFactor>1</progressionFactor> </suspendOnFailure> <markForSuspension> <retriesBeforeSuspension>0</retriesBeforeSuspension> </markForSuspension> <timeout> <duration>30000</duration> <!-- 设置30秒超时 --> </timeout> </address>
内容的提问来源于stack exchange,提问作者Nalyssia Govender
相关产品推荐
相关产品推荐

