2011-12-19 42 views
9

私のCRMオンラインシステムIMAPプロトコルでメールを管理しています。 私はphpmailerとSMTPプロトコルでメールを送信しています。 すべては大丈夫ですが、私は1つの奇妙なことがあります。 phpmailerスクリプトメールで送信する方法は、「送信済み」IMAPフォルダに移動しますか?あなたはIMAPホストが(非常に少数が行うもの)機能をサポートする必要がIMAPホスト phpmailerで送信されたメールは、 "送信済み" IMAPフォルダには移動しません

  • を通して、あなたの送信されたメールを中継する必要が

  • 答えて

    8

    全体MIME文字列を返すphpmailerの中の方法getSentMIMEMessage

    $mail = new PHPMailer(); 
    //code to handle phpmailer 
    $result = $mail->Send(); 
    if ($result) { 
        $mail_string = $mail->getSentMIMEMessage(); 
        imap_append($ImapStream, $folder, $mail_string, "\\Seen"); 
    } 
    
    +0

    そうです。 2012年7月13日以降。この変更履歴をご覧ください:https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md#version-522-beta1-july-13-2012 http://もチェックする必要がありますphp.net/manual/en/function.imap-append.php関数imap_append()と$ folderパラメータ、 とhttp://php.net/manual/en/function.imap-open.phpを理解する$ ImapStreamを入手する方法。 – Cosmitar

    1

    これら2点のいずれかが満たされていない場合短い答えは "できません"です。要するに、実際にはあなたのコードではなく、メールプロバイダの責任です。

    私はM $が嫌いですが、Exchangeは本当に物事が正しい場所です.Exchangeサーバーを使用している場合、このすべてが処理されます。

    4

    まあ、それはかなり難しいですが、行うことができます。

    imap-appendの機能を見てください。
    IMAPストリームリソースに接続することで、imap-append()を使用してIMAPアカウントの送信済みフォルダにメールを追加できます。

    しかし、コメントを読むことは少し面倒ですが、不可能ではないことを示しています。phpmailerはこれをサポートしていないため、おそらくあなた自身でコードを作成する必要があります自分で何かを作るのではなく、実装に時間がかかりすぎる可能性が高い)。

    +0

    うわ、本当に、今がありますか?それでも解決策はあると思いますが、私はあなたにこれらのおいしい+ 1の1つを与えます。 – DaveRandom

    +0

    応答ありがとう - 私はこれを試してみます。 – piernik

    +0

    @DaveRandom私はあなたに同意します、それはかなりではありませんが、OPの問題を解決することは可能です。私は必要性を理解していません... – Repox

    13

    これを行う方法がわかりました。 PHPmailerは電子メールを文字列として準備します - あなたがしなければならないことは右のIMAPフォルダに入れることだけです。

    私は(VARSが保護されているので、私はそれらを達することができない)、このコードでphpmailerのクラスを拡張し:

    class PHPMailer_mine extends PHPMailer { 
    public function get_mail_string() { 
        return $this->MIMEHeader.$this->MIMEBody; 
    }} 
    

    PHPコード:

    $mail= new PHPMailer_mine(); 
    //code to handle phpmailer 
    $result=$mail->Send(); 
    if ($result) { 
        $mail_string=$mail->get_mail_string(); 
        imap_append($ImapStream, $folder, $mail_string, "\\Seen"); 
    } 
    

    をそれはうまく動作します。

    +1

    $ ImapStreamと$ folderの値の例を挙げられますか?特にメールサーバーへのファイルレベルのアクセス権がない場合(私はGmailで使用しています)、$ folderの正しい値は何かを知ることができません。 – Zeeshan