bugfix> php > 投稿

PHPMailerを使用してメッセージを送信し、PHP imap_searchを使用してメールを検索しています。私のシナリオは-

  1. ユーザーはPHPMailer tp受信者からメールを送信します。 (完了)
  2. メールユーザーがカスタムメッセージIDを送信すると(完了)
  3. 受信者がメールに返信します。

ここでは、ユーザーの受信ボックスで返信を検索する必要があります。ユーザーがメールで返信を受け取ったら検索する必要があります。どうすればいいのかわかりません。

メールを送信するユーザーにGMAIL SMTPを使用しています。

ありがとう

回答 1 件
  • このような回避策が見つかりました。 PHPMailerで電子メールを送信するために、電子メールに一意のIDを送信し、これをカスタムヘッダーに割り当てました。 (メールヘッダーの受信者側でこのメッセージIDを確認できます)。

    $mid="<" . md5('MAXIFY'.(idate("U")-1000000000).uniqid()).'-sales@mydomain.com>';
    $mail->MessageID = $mid;
    $mail->addCustomHeader('In-Reply-To', $mid);
    $mail->send();
    
    

    メールを検索するために、imap_searchを使用しました。

    $date="25-May-2018";
    $emails = imap_search($inbox,'ON "'.$date.'"' );
    foreach($emails as $email_number)
    {
    /* get information specific to this email */ 
    $overview = imap_fetch_overview($inbox,$email_number,0);
    print_r($overview);
    }
    
    

    概要には、メッセージIDなどの詳細が表示されます。ここから、これが返信かどうかを追跡できます。 ただし、一部のメールでは、メッセージIDが存在しないことがわかりました。そのため、メール本文に一意のIDを追加し、imap_searchの検索条件を使用するのは次のようになります-

    $emails=imap_search($inbox,'TEXT "5b0b72417f673" ');
    
    

    返信を追跡する他の方法は見つかりませんでした。

あなたの答え