zendでメールを受信して処理実行

Zendでメール受信をして、もろもろの処理をキックしようとしたときの調査メモ

基本、zend のmailさんがほとんどやってくれるんだけども、データの取り出し方とかで若干はまったので、要注意。

特に、エンコード関係はやっぱり鬼門だなぁ。

ヘッダのcontent-typeの中に、エンコードタイプがあるので、そこを正規表現できりとって、mb_convert_encodingで加工する。

これで、テキストメールは大丈夫なはず。

require_once ‘Mail/Storage/Pop3.php’;
$param = array(‘host’ => ‘server_name’,
‘user’ => ‘user’,
‘password’ => ‘pw’,
‘ssl’      => ‘ssl’);
//接続します
$mail = new Zend_Mail_Storage_Pop3($param);
foreach($mail->getUniqueId() as $uniqueId){
echo “<br />.<br />”.$uniqueId.”<br />”;
$message = $mail->getMessage($mail->getNumberByUniqueId($uniqueId));
//件名出してます
echo mb_convert_encoding(mb_decode_mimeheader($message->subject),”UTF-8″).”<br />”;
// echo ‘<pre>’;
$header=$message->getHeaders();
preg_match(“/charset=(.*)$/”,$header[“content-type”],$match);
print($match[“1″].”!!!!<br />”);
if($match[“1”]){
$encode=$match[“1”];
}else{
$encode=”ISO-2022-JP”;
}
echo “content is here>>>”.mb_convert_encoding($message->getContent(),”UTF-8″,$match[“1”]);
// echo ‘</pre>’;
foreach ($message->getHeaders() as $name => $value) {
if (is_string($value)) {
// echo “$name: $value<br />”;
continue;
}
foreach ($value as $entry) {
// echo “$name: $entry<br />”;
}

よし、うまくいった!

とおもいきや、HTMLメールのときにはうまく受信できていない。。

せいかくには、受信はできているんだけど、余計なものがいっぱいついていて加工がめんどくさい。

あきらめて、フォームつくってそこからやるようにしようかなぁ。

  1. コメントはまだありません。

  1. トラックバックはまだありません。