これがサンプルメールです。私がやりたいのは、zend mailを使用して、特定のヘッダーと件名を持つ電子メールを除外することです。これが私のregexperssionです。
$pattern_subject = "#delivery errors|delivery failure|delivery has failed|delivery notification|delivery problem|delivery status notif|failure delivery|failure notice|mail delivery failed|mail delivery system|mail status report|mail system error|mail transaction failed|mailserver notification|mdaemon notification|nondeliverable mail|returned email|returned mail|returned mail|returned to sender|returning message to sender|spam eater|undeliverable|undelivered mail|warning: message#i";
$pattern_body = "#554 delivery error|554 TRANSACTION FAILED|Action: failed|Delivery attempts will continue to be made for|delivery temporarily suspended|Invalid recipient|is not a valid mailbox|Mail rejected by Windows Live Hotmail for policy reasons|mailbox is full|Mailbox quota usage exceeded|mailbox unavailable|my badmailfrom list|no mailbox here by that name|no such address|No such user here|not yet been delivered|Over quota|PERM_FAILURE: DNS Error: Domain name not found|Recipient address rejected|retry timeout exceeded|Status: 4.4.1|The account or domain may not exist, they may be blacklisted, or missing the proper dns entries.|The following address doesn't exist|The message that you sent was undeliverable to the following|The recipient name is not recognized|This Gmail user does not exist|This is a permanent error|Unrouteable address|unrouteable mail domain|User mailbox exceeds allowed size|User unknown in virtual alias table|User unknown#i";
1つは被写体用、もう1つは体用です。
1)それらを使用してメールをフィルタリングし、reg expに一致するものだけを取得しますか?
2)別の部分のメールを受け取ります。必要なのは別に
受信日、ヘッダー、本文
これが私の試したコードです(imapセットアップは無視されます)が、ヘッダーを出力するだけで、フィルター処理されません。
foreach ($mail as $message) {
foreach ($message->getHeaders() as $name => $value) {
if (is_string($pattern_subject)) {
echo "$name: $value\n";
echo "<br>";
}
}
}
ありがとうございました