私のCRMオンラインシステムIMAPプロトコルでメールを管理しています。 私はphpmailerとSMTPプロトコルでメールを送信しています。 すべては大丈夫ですが、私は1つの奇妙なことがあります。 phpmailerスクリプトメールで送信する方法は、「送信済み」IMAPフォルダに移動しますか?あなたはIMAPホストが(非常に少数が行うもの)機能をサポートする必要がIMAPホスト phpmailerで送信されたメールは、 "送信済み" IMAPフォルダには移動しません
答えて
全体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");
}
これら2点のいずれかが満たされていない場合短い答えは "できません"です。要するに、実際にはあなたのコードではなく、メールプロバイダの責任です。
私はM $が嫌いですが、Exchangeは本当に物事が正しい場所です.Exchangeサーバーを使用している場合、このすべてが処理されます。
まあ、それはかなり難しいですが、行うことができます。
imap-appendの機能を見てください。
IMAPストリームリソースに接続することで、imap-append()を使用してIMAPアカウントの送信済みフォルダにメールを追加できます。
しかし、コメントを読むことは少し面倒ですが、不可能ではないことを示しています。phpmailerはこれをサポートしていないため、おそらくあなた自身でコードを作成する必要があります自分で何かを作るのではなく、実装に時間がかかりすぎる可能性が高い)。
うわ、本当に、今がありますか?それでも解決策はあると思いますが、私はあなたにこれらのおいしい+ 1の1つを与えます。 – DaveRandom
応答ありがとう - 私はこれを試してみます。 – piernik
@DaveRandom私はあなたに同意します、それはかなりではありませんが、OPの問題を解決することは可能です。私は必要性を理解していません... – Repox
これを行う方法がわかりました。 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");
}
をそれはうまく動作します。
$ ImapStreamと$ folderの値の例を挙げられますか?特にメールサーバーへのファイルレベルのアクセス権がない場合(私はGmailで使用しています)、$ folderの正しい値は何かを知ることができません。 – Zeeshan
そうです。 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