2011-06-08 129 views
3

我们使用CodeIgniter(v1.7)和PHPMailer(v5.1)以PHP的纯文本格式发送电子邮件。当前的生产设置使用便宜的SMTP中继,计划是切换到CritSend或SendGrid。我们正在测试Rackspace Cloud服务器的选项。通过sendgrid发送的纯文本电子邮件中的额外换行符

当我们使用SendGrid SMTP时,emials中的所有“\ r \ n”换行符最终都会翻倍,因此最终为“\ r \ n \ r \ n”。

当使用CritSend SMTP和其他两个SMTP服务器时,所有工作都很好。

SendGrid技术支持不认为这是与他们的系统有关,但听说过另一个客户端有相同的问题,显然它解决了客户端的配置更改。

任何人都遇到过这个问题?

对于我们来说这并不重要,因为CritSend运行良好,并且看起来和SendGrid功能一样好,所以我们会和他们一起去。但作为一个好奇的类型,我不能让这个去:-)

常用设置:PHP脚本 - > sendmail的/后缀 - >外部SMTP中继 - > ....

为了测试不同SMTP中继我更改了后缀配置,只有SendGrid提供了额外的换行符,所有其他SMTP选项都可以正常工作。如果我通过CodeIgniter电子邮件类调试功能转储电子邮件,它看起来很好,然后它进入后缀。

备用设置:PHP脚本(无论是CI邮件类或PHPMialer) - >外部SMTP中继 - > ....

为了测试不同的SMTP中继我在CI电子邮件设定或更改PHPMialer SMTP设置配置。只有SendGrid提供额外的换行符,所有其他SMTP选项都可以正常工作。

就我所知,并不是所有这些选项都可以玩。我尝试过“utf-8”和“ISO-something或其他”,我们这边的所有换行符都是“\ r \ n”......看起来像某处非常晦涩的bug。

任何想法?

回答

3

OK,多一点尝试,并且这些设置使纯文本电子邮件很好走线槽SendGrid从PHPMailer的:

$mailer->CharSet = "utf-8"; 
    $mailer->LE   = "\r\n"; 
    $mailer->Encoding = "quoted-printable"; 
    $mailer->WordWrap = 80; 

的“引用可打印”部分是关键。

1

什么工作对我来说是使用的PHP文本实际的换行符如下:

// Prepare email 
    $email = array(
     'api_user' => App::emailAPIUser(), 
     'api_key' => App::emailAPIPwd(), 
     'to'  => $email, 
     'subject' => 'Thank you for entering ' . App::name(), 
     'html'  => $email_body, 
     'text'  => ' 

Thank you for entering Competition. 

You are now in the running to WIN your prices valued at $6000. 

Winners will be notified of their status by the 14th February 2012. 

Good luck!', 
     'from'  => '[email protected]' 
    );