メール本文の内容からデータ コードを取得するプロジェクトに 2 日間取り組んでいます。
!"$%&/()=?^ のような get chars に関する問題が見つかりました。
すべてUTF-8にエンコードすることで解決しましたが、'=A3'のように£の文字がメール本文に残ったままです。
私が話していたシナリオをせいぜい理解するためのサンプルコードは次のとおりです。
$mail = new Zend\Mail\Storage\Imap ( array (
'host' => 'imap.xxxxxxxx', //is gmail if it can be useful
'user' => 'xxxxx@xxxxxxxxx',
'password' => 'xxxxxxxxxx',
'port' => '993',
'ssl' => 'SSL'
) );
$folder = $mail->getFolders ()->INBOX;
foreach ( $mail as $emailMsg ) {
$bodymsg = $emailMsg->getContent ();
$pos = strpos ( $bodymsg, '*DATA CODE*' );
$datacode= substr ( $bodymsg, $pos + 11, 10 );
$datacode= mb_convert_encoding ($datacode,'ISO-8859-1','UTF-8');
echo $datacode; //example of datacode £GS&9KBS8 but i get =A3GS&9KBS8
私は解決策を見つけました
$datacode= str_replace ( '=A3', '£', $datacode);
その後
$datacode= mb_convert_encoding ($datacode,'ISO-8859-1','UTF-8');
しかし、それは良い考えではないと思います。
UTF-8 、ISO-8859-**、windows-1252 でエンコードされたメールを読んでも同じ結果になります。
QP2TERMまたはQP2SHELLによってそれを呼び出すIBMi上のCLPプログラムによって実行されるPHPスクリプト(私は今QP2TERMを使用して、それが何をするかを確認します)。
それについてどう思いますか?それを解決するアイデアはありますか?
アドバイスをいただければ幸いです。
よろしくお願いします