它现在有两天时间致力于从电子邮件正文内容中获取数据代码的项目。
我发现了一个关于获取字符的问题,例如 !"$%&/()=?^.
通过编码为 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 编码的邮件,结果相同。
由 IBMi 上的 CLP 程序运行的 PHP 脚本,它通过 QP2TERM 或 QP2SHELL 调用它(我现在使用 QP2TERM 来查看它的作用)。
对此有何看法?有什么办法解决吗?
任何意见,将不胜感激,
此致