お世話になります。
WindowsServer上でメールを自動受信を行う方法を探しておりまして、qdmailというライブラリを見つけました。
アップデートが止まっているというのが気にはなりますが、簡単にメール受信と添付ファイルの保存が、1つのファイルをインクルードするだけでいとも簡単にできてしまいました。秀悦なライブラリのようです。
しかし、実装するにあたり、特定のアドレスと件名だけに絞って受信するようにしたところ、文字コードの問題で、件名が読み取れません。
qdmailの固有問題ではないと思いますが、メールのヘッダ情報をエンコードしてWindowsサーバー上で識別できるようにする方法が、色々検索して調べてみたのですがうまくいきません。
アドバイス頂ければ幸いです。
OS:WindowsServer2012
PHP:7.2
文字コード:utf-8
PHP
1<?php 2require_once('qdmail_receiver.php'); 3$server = array( 4 'protocol'=>'pop3', 5 'host'=>'*****.co.jp', 6 'user'=>'hoge', 7 'pass'=>'hogehoge', 8); 9$info = array( 10 'address'=>'target@*****.co.jp', 11 'title'=>'出荷完了通知', 12); 13print mb_convert_encoding($info['title'], "UTF-8", mb_internal_encoding()); 14 15$receiver = QdmailReceiver::start('pop', $server); 16for($i = 1 ; $i <= $receiver->count() ; $i++){ 17 $from = $receiver->header(array('from','mail')); 18 $to = $receiver->header(array('to','mail')); 19 $h = $receiver->header(array('subject','name')); 20// $h = mb_convert_encoding($h, 'ISO-2022-JP-MS', mb_internal_encoding()); 21// $h = mb_convert_encoding($h, "UTF-8", "auto"); 22 if(strcmp($from, $info['address'])==0){ 23 if(strcmp($h, $info['title'])==0){ 24 } else { 25 continue; 26 } 27 } else { 28 continue; 29 } 30 $body = $receiver->bodyAutoSelect(); 31 print "From:[{$from}]\n"; 32 print "To:[{$to}]\n"; 33 print "Title:[{$h}]\n"; 34 print "Contents:\n[{$body}]\n"; 35 // 添付ファイルを保存 36 $attach = $receiver->attach(); 37 foreach($attach as $att){ 38 $fp=fopen($att['filename_safe'],'w'); 39 fputs($fp,$att['value']); 40 fclose($fp); 41 } 42// $pointer = $receiver->pointer(); // 現在のメールIDを取得 43// $receiver->delete($pointer); // 現在のメールを削除 44 $receiver->next(); 45} 46?> 47
あなたの回答
tips
プレビュー