POP情報取得で転送元のアドレスを知りたい - PHPプロ!Q&A掲示板
携帯で撮影した画像を添付してメールを送信します。
そのメンバーが100人ぐらいいて、プログラムで毎回全部の
溜まっているメールを取り込むには時間がかかるため
一つのメールを設置して、100人分のメールボックスから自動的に
ひとつのメールへ転送するようにします。
その場合、送信元のメールアドレスと、100人分のメールのアドレス(つまり転送元アドレス)
を取得したいのです。
正規表現もあまり得意ではないので、転送元のアドレスの取得方法をおしえてほしいのですが。
今、Let’s PHP 様の 写メ BBSを利用してテストしております。
http://php.s3.to/bbs/bbs7.php
(let's PHPには質問するところが見当たりませんでした)
転送元以外のアドレスはすでに取得しております。一つ正規表現を入れて取得すればいいとは
思うのですがよくわかりません。
今ソースの途中ですがこのように入れています。
****************************************************
// サブジェクトの抽出
if (eregi("\nSubject:[ \t]*([^\r\n]+)", $head, $subreg)) {
$subject = $subreg[1];
while (eregi("(.*)=\?iso-2022-jp\?B\?([^\?]+)\?=(.*)", $subject, $regs)) {
$subject = $regs[1] . base64_decode($regs[2]) . $regs[3];
}
while (eregi("(.*)=\?iso-2022-jp\?Q\?([^\?]+)\?=(.*)", $subject, $regs)) {
$subject = $regs[1] . quoted_printable_decode($regs[2]) . $regs[3];
}
$subject = htmlspecialchars($this->convert($subject));
// 拒否件名
foreach ($this->deny["subj"] as $dsubj) {
if (stristr($subject, $dsubj))
$write = false;
}
}
// 送信者アドレスの抽出
if (eregi("From:[ \t]*([^\n]+)", $head, $freg)) {
$from = $this->addr_search($freg[1]);
} elseif (eregi("Reply-To:[ \t]*([^\r\n]+)", $head, $freg)) {
$from = $this->addr_search($freg[1]);
} elseif (eregi("Return-Path:[ \t]*([^\r\n]+)", $head, $freg)) {
$from = $this->addr_search($freg[1]);
}
******************* 仮にいれましたが取得できません******************************
// 送信元メールアドレスの取得
if (eregi("^Delivered-To:[ \t]*([^\n]+)", $head, $freg)){
print "forward="."<br>\n";
$forward = $this->addr_search($freg[1]);
}else{
print "foprward 取得なし<br>\n";
}
******************************************************************************
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。