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