php - 解码传入电子邮件主题 (utf 8) 的正确方法

标签 php email

我正在尝试将收到的邮件通过管道传输到 PHP 脚本,以便我可以将它们存储在数据库和其他内容中。我正在使用类(class) MIME E-mail message parser (registration required)虽然我认为这并不重要。

我对电子邮件主题有疑问。当标题是英文时它工作正常,但如果主题使用非拉丁字符,我会得到类似的内容

=?UTF-8?B?2KLYstmF2KfbjNi0?=

对于像这样的标题

我这样解码主题:

  $subject  = str_replace('=?UTF-8?B?' , '' , $subject);
  $subject  = str_replace('?=' , '' , $subject);      
  $subject = base64_decode($subject); 

它适用于 10-15 个字符的短主题,但对于较长的标题,我会得到原始标题的一半,末尾带有诸如 ��� 之类的内容。

如果标题更长,比如 30 个字符,我什么也得不到。我这样做对吗?

最佳答案

您可以使用mb_decode_mimeheader()函数来解码您的字符串。

关于php - 解码传入电子邮件主题 (utf 8) 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8626786/

相关文章:

PHP Xdebug Netbeans 断点

php preg_match 在 C++ 中与 Boost 的等价物?

php - 替换单引号以正确搜索数据库的最佳方法?

java - SMTP 代码 250 但电子邮件在远程服务器丢失

email - IMAP 文件夹/消息同步策略?

bash - mutt:从控制台回复电子邮件

php - 来自 MySQL 查询的意外数组值

php - 我可以/如何...在 PHP 的类之外调用 protected 函数

php - 在 Paypal Express Checkout 订单完成后发送电子邮件

python - 电子邮件 "Date"标题应该是发件人的本地时间还是 UTC?