当$ header达到一定长度时,php mail()不发送邮件

时间:2013-06-14 18:29:48

标签: php email encoding header postfix-mta

mail()标题达到一定长度时,我的PHP From始终停止发送电子邮件。我在From标题中使用了西里尔符号,因此我必须在windows-1251中对其进行编码(这是我需要支持的所有HTML邮件客户端中唯一可用的编码)。

所以,我的代码:

$to = 'myemail@test.com';
$subject = 'Cyrillic subject goes here';
$message = $letterbody; //letterbody gets form data and packs it into nice table
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n"; 
//takes Lastname of the person registering, encodes it so all the clients can read, takes its email address
$headers .= "From: =?windows-1251?B?".base64_encode($lastname)."?= <$email>\r\n"; 
$headers .= "Content-type: text/html; charset=\"windows-1251\"\r\n";
mail($to,"=?windows-1251?B?".base64_encode($subject)."?=",$message,$headers);

因此,举例来说,我将$email变量设置为test@test.com并将$lastname设置为“tttt”。电子邮件发送和$headers看起来像这样(在发送前从var_dump()获取):

  

MIME-Version:1.0
  内容传输编码:8位
  从:=?windows-1251?B?dHR0dHQ =?=
  内容类型:text / html;字符集= “窗口-1251”

如果我再添加一个“t”,使用相同的电子邮件地址

$email = test@test.com;
$lastname = "tttttt"

邮件不发送,$headers看起来像这样:

  

MIME-Version:1.0
  内容传输编码:8位
  从:=?windows-1251?B?dHR0dHR0?=
  内容类型:text / html;字符集= “窗口-1251”

我不知道我还能做些什么。没有$lastname的编码它似乎工作正常,但在某些电子邮件客户端上它是不可读的,例如Ubuntu 13上的Postfix。

也许我需要在Postfix中设置一些$headers限制?

0 个答案:

没有答案