2011-05-26 76 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