19

我正在使用 CodeIgniter 电子邮件库通过我们的 Exchange 服务器发送电子邮件。我得到的问题是电子邮件的内容搞砸了。

有些单词被等号“=”替换,我尝试了 2 个不同的 Exchange 服务器(它们位于不同的位置,并且没有任何关系),但我仍然遇到同样的问题。如果我使用任何其他服务器作为 SMTP 服务器来发送电子邮件,一切正常,内容保持不变。

发送前的内容:

Dear Customer

Please find attached a comprehensive explanation of how to get our brochure of Angola. This has been sent to you at the request of Alex.

The information has been taken from www.example.co.uk  "Company name" is one of the leading tile and marble companies in the UK. 

通过 Microsoft Exchange 发送后的内容:

Dear Customer

Please find attached a comprehensive explanation of how to get our brochure of A=gola. This has been sent to you at the request of Alex.

The information has been taken from www.example.co.uk  "Company name" is one of the leadi=g tile and marble companies in the UK. 

正如您所看到的,出于某种原因,一些“n”字符被替换为等号“=”(示例:Angola > A=gola)

我的邮箱配置:

$this->load->library('email');
$config['charset']      = 'utf-8';
$config['mailtype']     = 'html';


// SMTP
$config['protocol']     = 'smtp';
$config['smtp_host']    = 'exchange.example.com'; //ssl://
$config['smtp_user']    = 'email@example.com';
$config['smtp_pass']    = 'password';
$config['smtp_port']    = 25;

$this->email->set_newline( "\r\n" );

$this->email->initialize( $config );

$this->email->clear();

......

$this->email->from( $frome, $fromn );
$this->email->to( $email );

$this->email->subject( $subject );
$this->email->message( $send_message );


$this->email->send();

有谁知道为什么微软交易所会这样?还是我应该使用某种设置?

4

2 回答 2

44

这很奇怪,特别是因为并非所有的ns 都被音译并且不在特定位置。

试着打电话$this->email->set_crlf( "\r\n" );。在 Exchange 中查找消息详细信息并检查Content-TypeCharset / Encoding - 在此处发布原始内容,以便我们对其进行检查。

我在Microsoft 知识库中找到了这个:

Microsoft Exchange 使用增强的字符集。Microsoft Exchange 的默认 MIME 字符集是 ISO 8859-1。一些网关不支持此字符集为换行发出软返回的方式。发生这种情况时,每行都以等号结束,表示网关的行长支持结束处的换行符。

于 2012-10-25T09:45:38.230 回答
2

我通过设置函数解决$charlim = '998'了这个问题(有点)。_prep_quoted_printable

当我设置$crlf = "\r\n"生成的电子邮件时,由于某种原因完全是乱码。但我注意到 = 符号定期出现,这是由于行长限制为 76 个字符造成的。所以增加每行的最大字符数(998 是 RFC2822 限制)可以解决问题,只要你没有很长的行。

于 2017-06-05T05:09:35.650 回答