问题描述
|
我创建了一个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();
当我为各种SMTPEvent添加侦听器时,没有一个触发。我认为这是由于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>
我发现了许多这样的问题,但是却很少发布答案。我相信这很明显。关于如何进行的任何想法?
谢谢!
解决方法
本地托管?如果您不使用\'localhost \'或\'127.0.0.1 \',则该文件不是本地托管的。在我看来,您正在尝试连接到网络中的服务器,但未连接到运行Air应用程序的计算机上。
我相当确定STMP发送者正在使用套接字连接到服务器,因此我认为您需要做的是加载手动套接字策略文件,但是我不确定100%正确。您可能想要尝试完全打开跨域文件(通过使用\'* \'代替)。是否弹出任何错误或只是没有连接?