1

現在、特定の条件が満たされたときにSMTP Mailerを使用してユーザーに電子メールを自動的に送信するアプリケーションを Flex で構築しています。アプリケーションは、この状態を 30 秒ごとにチェックします。この条件は、データベース テーブルから返される新しいレコードに基づいて満たされます。

問題は次のとおりです。

条件が最初に満たされると、電子メールは問題なくユーザーに配信されます。

2 回目に条件が満たされた場合、メールは配信されません。smtp ログでは、次の行で配信の試行がハングアップしているように見えます。

354 Start mail input; end with <CRLF>.<CRLF>

smtp ログにエラー コードはありませんが、SMTP Mailer クラスから次のイベントをトレースします。

[Event type="mailError" bubbles=false cancelable=false eventPhase=2]

3回目の条件成立時に、前回条件成立時に配信されなかったメールが、今回のメールとともに配信されるようになりました。

その後、このパターンが繰り返され、次の電子メールが送信されず、条件が再び満たされると 2 つの電子メールが同時に送信されます。

使用されている smtp サーバーは、内部ネットワーク上の Windows 2003 です。電子メールは、この内部ネットワークにもある Exchange サーバーでホストされている Outlook アカウントに送信されています。

SMTPMailer オブジェクトを作成する actionscript コードは次のとおりです。

public var testMail:SMTPMailer = null;

public function alertNotify()
{   
    Security.loadPolicyFile("crossdomain.xml"); 
    this.testMail = new SMTPMailer("myserver.ec.local",25); 
    this.testMail.addEventListener(SMTPEvent.MAIL_SENT, onEmailEvent);
    this.testMail.addEventListener(SMTPEvent.MAIL_ERROR, onEmailError);
    this.testMail.addEventListener(SMTPEvent.DISCONNECTED, onEmailConn);
    this.testMail.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onEmailError);
}

メール本文を作成し、メソッドを呼び出してメールを送信するコードは次のとおりです。

public function alertUser(emailAC:ArrayCollection):void 
{
    var testStr:String = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></head><body><TABLE border=\"1\"><TR><TH><b> Key </b></TH><TH><b> Location </b></TH><TH><b> Event Type </b></TH><TH><b> Comment  </b></TH><TH><b> Update Time  </b></TH></TR>";
    for each (var event:rEntity in emailAC) {
        testStr = testStr + "<TR><TD>" + event.key.toString() + "</TD><TD>" + event.xml.address.toString() + " " + event.xml.@municipality.toString() + "</TD><TD>" + event.xml.@type.toString() + "</TD><TD>" + event.xml.@comment.toString() + "</TD><TD>" + event.xml.attribute("update-time").toXMLString() + "</TD></TR>"; 
    }

    testStr = testStr + "</TABLE></body></html>";
    testMail.flush();
    testMail.sendHTMLMail("r@ec.ca","w@ec.ca","Event Notification",testStr);
}

ハングしたメールが最終的に送信されるまでどこに保存されているのか本当にわかりません....

この問題を解決する方法についての提案は大歓迎です。

4

0 に答える 0