2017-09-26 6 views
0

現在、CSVからインポートされたデータの配列を処理するプロジェクトに取り組んでいます。特定の行のデータが処理されると、その行に指定された電子メールアドレスに電子メールが送信されます。PHP経由でバウンスされた電子メールアドレス

私のクライアントは、csvに不正な電子メールアドレスが入力されたために電子メールがバウンスするかどうかを知る必要があります。

私は現在、PHPと私たちがホストしているSMTPリレーを使用してメールを送信しています。私が今までに働いていた唯一の方法は、件名Undelivered Mail Returned to Senderを含むメールの送信メールアドレスをスキャンすることです。

これは完全に動作しており、私はバウンスしたすべてのメールのリストを取得しています。私の問題は、間違って入力された電子メールアドレスを取得する必要があるということです。下のスクリーンショットが表示された場合、スクリプトが電子メールアドレスを含むHTML要素/ノードを生成することがわかります。

HTML Element/Node

私の質問は、私がつかむためにどのように/この要素を呼んでいるのですか?

私はprint_r電子メールオブジェクトを送信しようとしましたが、残念ながら必要なメールアドレスの配列インデックスはありません。

私はここまで得ているかを確認するには、以下の私のコードを参照してください。過去の上に優れたヘルプとサポートのための

<?php 

    $date = date('y-m-d'); 
    $hostname = ''; 
    $username = ''; 
    $password = ''; 

    $inbox = imap_open($hostname,$username,$password) or die('Cannot 
    connect to mailbox: ' . imap_last_error()); 
    $emails = imap_search($inbox,'SUBJECT "Undelivered Mail Returned to Sender" ON "'.$date.'"'); 


    if($emails){ 
    rsort($emails); 
     foreach($emails as $email){ 
      $overview = imap_fetch_overview($inbox,$email,0); 
      $message = imap_body($inbox, $email); 
      print_r($overview); 
      print_r($message); 
      echo '<br>'; 

      print_r($email); 
     } 
    } 

感謝。

ルイス

+0

は、あなたが任意のコード例がありますか?アドレスはどこかにある必要があります。 – Kyrre

+0

電子メールの取得方法に関するコードが追加されました。電子メールアドレスが指定されている唯一の場所は、以前に参照したhtmlノードです。ありがとう –

+1

私は 'imap_search()'を一度も使ったことはありませんが、http://php.net/manual/en/function.imap-searchに従って 'SUBJECT'と' ON'キーワードを使用しています。 phpには、 'TO'キーワードがあります。たぶんクエリでいくつかの魔法をやることができます。申し訳ありませんが、私は嫌うと助けていないが、 '$ emails'には何が入っていますか? – Kyrre

答えて

1

DavidとKyrreは正しい方向に私を向けることができました。もう少し研究を重ねた結果、メールアドレスがFinal-Recipientであることが判明しました。ちょっと調べたらFinal-Recipientできました私が必要なものをつかむ。このSAのスレッド上で述べたように、私は次のようでした。これを行うために

Regular expression to parse Final-Recipient email header

$message = imap_body($inbox, $email); 
    $pattern = '/Final-Recipient: rfc822; (.*)/'; 
    $matches = Array(); 
    preg_match($pattern, $message, $matches); 
    $email = $matches[1]; 
0

@Kyrreはimap_search()文字列を述べたように、それはSQLクエリであるふり。バウンスされたメールの返信はhereでした。 this甘い散歩もあり、電子メールメッセージの内容全体を返します。

関連する問題