我创建了一个Flex应用程序,它使用Coltware的airxmail发送SMTP消息。它调用本地托管的SMTP服务器(hmailserver),该服务器会根据需要中继电子邮件。在Flash Builder环境中运行时,一切都按预期工作。我也可以使用telnet从SMTP服务器本地和远程发送电子邮件,所以我知道这不是服务器的问题。
当在电子邮件服务器框上托管GUI时,应用程序无法发送电子邮件。我创建了一个crossdomain.xml文件以允许此访问,但我不相信它已正确配置。
Flex代码:
sender = new SMTPSender();
sender.setParameter(SMTPSender.HOST,"192.168.10.10");
sender.setParameter(SMTPSender.PORT,25);
sender.setParameter(SMTPSender.AUTH,true);
sender.setParameter(SMTPSender.USERNAME,"emailuser@domain.com");
sender.setParameter(SMTPSender.PASSWORD,"password");
var message:MimeMessage = new MimeMessage();
message.contentType = ContentType.MULTIPART_ALTERNATIVE;
var from:INetAddress = new INetAddress("emailuser@server.com","Fake Name");
message.setFrom(from);
var toRecpt:INetAddress = new INetAddress(email,username);
message.addRcpt(RecipientType.TO,toRecpt);
message.setSubject(subject);
var partHtml:MimeTextPart = message.createTextPart();
partHtml.setHtmlText(body);
sender.send(message);
sender.close();
当我为各种SMTPEvents添加侦听器时,它们都不会触发。我认为这是由于crossdomain.xml文件中缺少权限或配置不当造成的:设置为:
<?xml version="1.0" ?>
<!DOCTYPE cross-domain-policy (View Source for full doctype...)>
- <cross-domain-policy>
<allow-access-from domain="192.168.10.10" to-ports="25" secure="true" />
<allow-access-to domain="192.168.10.10" secure="false" />
</cross-domain-policy>
我发现了很多像这样的问题,但很少发布答案。我确信它是显而易见的。关于如何进行的任何想法?
谢谢!
答案 0 :(得分:0)
本地托管?如果你没有使用'localhost'或'127.0.0.1',那就不是本地托管的。在我看来,您正在尝试连接到网络中的服务器,而不是在运行Air应用程序的计算机上。
我很确定STMP发件人正在使用套接字连接到服务器,所以我认为您需要做的是加载手册socket policy file,但我不是100%肯定。您可能希望尝试完全打开crossdomain文件(改为使用'*')。是否有任何错误弹出或只是没有连接?