Airxmail、SMTP 和 crossdomain.xml 混淆
我创建了一个 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,"[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();
当我为各种 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>
我发现了很多这样的问题,但很少有人发布答案。我确信这是显而易见的事情。关于我如何继续有什么想法吗?
谢谢!
I've created a Flex app which uses Coltware's airxmail to send SMTP messages. It calls a locally-hosted SMTP server (hmailserver), which relays the email out as appropriate. When run within the Flash Builder environment, everything works as intended. I can also send email both locally and remotely from the SMTP server using telnet, so I know that it's not a problem with the server.
When hosted on the email server box itself, outside of the GUI, the app fails to send email. I've created a crossdomain.xml file to allow this access, but I don't believe it's configured properly.
The Flex code:
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();
When I add listeners for the various SMTPEvents, none of them fire. I think this is due to a lack of permissions or poor configuration within the crossdomain.xml file, which is set up as:
<?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>
I've found a number of questions like this, but few posted answers. I'm convinced it's something obvious. Any ideas as to how I can proceed?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
本地托管?如果您不使用“localhost”或“127.0.0.1”,则该主机不是本地托管的。在我看来,您正在尝试连接到网络中的服务器,但不是运行 Air 应用程序的计算机。
我相当确定 STMP 发送方正在使用套接字连接到服务器,所以我认为您需要做的是加载手册 套接字策略文件,但我不是 100% 确定。您可能想尝试完全打开跨域文件(通过使用“*”代替)。是否出现任何错误或无法连接?
Locally hosted? if you're not using 'localhost' or '127.0.0.1', that is not locally hosted. Seems to me you're trying to connect to a server within your network, but not on the machine running the Air application.
I'm fairly sure that the STMP sender is using Sockets to connect to the server, so I think what you need to do is load a manual socket policy file, but I'm not 100% sure. You might want to try to get the crossdomain file completely open (by using '*' instead). Are there any errors that pop up or it just doesn't connect?