2011-05-26 109 views
0

我创建它使用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> 

我发现了一些这样的问题,但很少公布答案。我相信这是明显的。任何想法如何我可以继续?

谢谢!

回答

0

本地托管?如果你不使用'localhost'或'127.0.0.1',那不是本地托管的。在我看来,你试图连接到网络中的服务器,但不是运行Air应用程序的机器上。

我很确定STMP发件人使用套接字连接到服务器,所以我认为你需要做的是加载手册socket policy file,但我不是100%确定。您可能想尝试将crossdomain文件完全打开(通过使用'*'代替)。有没有弹出的错误,或者它只是不连接?

+0

通过“本地托管”,我的意思是,邮件服务器和服务的Flex应用程序的Apache实例在同一机器上运行。应该不重要,但是...我会尝试使用套接字策略文件。我没有收到任何错误。当我检查SMTP服务器日志时,客户端已经打开了一个连接,但是在看到来自邮件服务器的SMTP公告后立即关闭它。 – 2011-05-26 20:02:31

+0

如果它们在同一个盒子上运行,为什么不使用'localhost'而不是IP地址?另外,由于这个项目是开源的,我说下载代码并进行调试。 – 2011-05-26 20:09:04

+0

在发布之前,我从crossdomain文件中剪掉了一些。它包含本地主机的相同范围的条目,IP地址,完全限定的域名(例如www.test.com),域(test.com)以及Apache用于存放HTML文件的虚拟主机Flex应用程序。就调试代码而言,我不是一名Flex开发人员。我希望中小企业能够跳入并帮助解决似乎是一个结构性问题。 – 2011-05-26 20:23:23