【发布时间】:2013-04-20 17:05:14
【问题描述】:
当主题标头被 MIME 编码并折叠 mail() 时,会导致 PHP 警告:
<?php
$mime_subject = "=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=\r\n =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=";
mail( "name@domain.com", $mime_subject , "Hallo");
=> mail(): Bad parameters to mail() function, mail not sent.
主题行是 RFC2047(第 8 节)中的示例之一。它被折叠成两行,mail() 不喜欢它。由于它在其他主机上运行良好,我怀疑配置错误。但那会是哪一个呢?
PHP 是 5.4.0 版
有什么想法吗?
编辑:
关于 php 配置的更多信息:
'./configure' '--prefix=/home/www/PHP/php-5.4.0' '--with-openssl'
'--with-zlib-dir=/usr/lib/' '--with-jpeg-dir=/usr/lib/' '--with-mysql'
'--enable-fastcgi' '--with-informix=/opt/informix'
'--with-oci8=shared,instantclient,/opt/oracleclient/instantclient,10.2'
'--enable-pcntl' '--with-gettext' '--with-ldap' '--with-curl'
'--with-gd' '--with-freetype-dir=/usr/include/freetype2/' '--with-dom'
'--enable-bcmath' '--enable-soap' '--enable-mbstring'
'--with-mcrypt=shared,/usr/local/libmcrypt' '--enable-pdo'
'--with-pdo-mysql' '--enable-zip' '--with-imap' '--with-kerberos'
'--with-imap-ssl' '--with-ldap-sasl' '--with-icu-dir=/usr' '--enable-intl'
mail.add_x_header Off Off
mail.force_extra_parameters no value no value
mail.log no value no value
sendmail_from no value no value
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
SMTP localhost localhost
smtp_port 25 25
mailparse version 2.1.6
【问题讨论】:
-
换行的目的是什么?无论如何,您并没有传递任何人类可读的内容,我推测删除它会解决问题。
-
因为 RFC2047 第 2 节。编码字的语法:“编码字”的长度不得超过 75 个字符,包括“字符集”、“编码”、“编码文本”、和分隔符。如果希望编码的文本多于 75 个字符的“编码字”,则可以使用多个“编码字”(由 CRLF SPACE 分隔)。 (ietf.org/rfc/rfc2047.txt)
-
是的,但如果这不是 PHP 界面向您公开的内容,则不一定相关。
-
我不确定我理解你的意思。根据php.net/manual/en/function.mail.php,主题需要遵守2047。我在它工作的其他机器上进行了测试。我只是想知道,为什么它不能在一台机器上工作。
标签: php email configuration character-encoding mime