我创建它使用Coltware的airxmail发送SMTP消息的Flex应用程序。它调用一个本地托管的SMTP服务器(hmailserver),根据需要将电子邮件转发出去。在Flash Builder环境中运行时,一切都按预期运行。我也可以使用telnet在本地和远程从SMTP服务器发送电子邮件,所以我知道这不是服务器的问题。Airxmail,SMTP和crossdomain.xml的混乱
当托管的电子邮件服务器框本身的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,"[email protected]");
sender.setParameter(SMTPSender.PASSWORD,"password");
var message:MimeMessage = new MimeMessage();
message.contentType = ContentType.MULTIPART_ALTERNATIVE;
var from:INetAddress = new INetAddress("[email protected]","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>
我发现了一些这样的问题,但很少公布答案。我相信这是明显的。任何想法如何我可以继续?
谢谢!
通过“本地托管”,我的意思是,邮件服务器和服务的Flex应用程序的Apache实例在同一机器上运行。应该不重要,但是...我会尝试使用套接字策略文件。我没有收到任何错误。当我检查SMTP服务器日志时,客户端已经打开了一个连接,但是在看到来自邮件服务器的SMTP公告后立即关闭它。 – 2011-05-26 20:02:31
如果它们在同一个盒子上运行,为什么不使用'localhost'而不是IP地址?另外,由于这个项目是开源的,我说下载代码并进行调试。 – 2011-05-26 20:09:04
在发布之前,我从crossdomain文件中剪掉了一些。它包含本地主机的相同范围的条目,IP地址,完全限定的域名(例如www.test.com),域(test.com)以及Apache用于存放HTML文件的虚拟主机Flex应用程序。就调试代码而言,我不是一名Flex开发人员。我希望中小企业能够跳入并帮助解决似乎是一个结构性问题。 – 2011-05-26 20:23:23