バウンスしたメールをPHPスクリプトに転送して、そのメールを処理したいと考えています。使っています。TOフィールドを収集するPHPスクリプトを使用した電子メール配管?
#!/usr/bin/php -q
<?php
// read from stdin
$fd = fopen("php://stdin", "r");
$email = "";
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);
// handle email
$lines = explode("\n", $email);
// empty vars
$from = "";
$subject = "";
$headers = "";
$message = "";
$splittingheaders = true;
for ($i=0; $i < count($lines); $i++) {
if ($splittingheaders) {
// this is a header
$headers .= $lines[$i]."\n";
// look out for special headers
if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) {
$subject = $matches[1];
}
if (preg_match("/^From: (.*)/", $lines[$i], $matches)) {
$from = $matches[1];
}
} else {
// not a header, but message
$message .= $lines[$i]."\n";
}
if (trim($lines[$i])=="") {
// empty line, header section has ended
$splittingheaders = false;
}
}
?>
完璧!しかし、どのように私はバウンスされたメッセージの "To"フィールドを収集するのですか?私は変数に$を追加しようとしましたが、うまくいきません。
すべてのヘルプは素晴らしいことだ、
おかげで、
EDITは:実は私は、メッセージの本文内の "TO" フィールドを取得する必要があります。 - それが戻ってきた電子メール。特定の情報を取得するには、メッセージの本文をどのように分解しますか?この情報を入手するのがより簡単になるように、その人の電子メールで特別なヘッダーを作成する必要がありますか?
あなたはメッセージの本文をどのように見ているのかを知ってから、正規表現でそれをつかむ必要があります。 – Alasdair
時にはより信頼できる別のオプションは、すべてのメッセージを一意のリターンパスで送信することです。そうすれば、メッセージが返送されている電子メールアドレスに基づいて、どのメッセージがあなたに返ってくるのか正確に知ることができます。 –