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メールのときにはうまく受信できていない。。
せいかくには、受信はできているんだけど、余計なものがいっぱいついていて加工がめんどくさい。
あきらめて、フォームつくってそこからやるようにしようかなぁ。
コメントはまだありません。