Airxmail,SMTP和crossdomain.xml混淆

时间:2011-05-26 19:44:04

标签: flex smtp flexbuilder

我创建了一个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>

我发现了很多像这样的问题,但很少发布答案。我确信它是显而易见的。关于如何进行的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

本地托管?如果你没有使用'localhost'或'127.0.0.1',那就不是本地托管的。在我看来,您正在尝试连接到网络中的服务器,而不是在运行Air应用程序的计算机上。

我很确定STMP发件人正在使用套接字连接到服务器,所以我认为您需要做的是加载手册socket policy file,但我不是100%肯定。您可能希望尝试完全打开crossdomain文件(改为使用'*')。是否有任何错误弹出或只是没有连接?