CodeIgniter SMTP 电子邮件 - 用等号替换的字符

2022-08-30 20:43:54

我正在使用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”字符被替换为等号“=”(例如:安哥拉>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();

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


答案 1

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

也试试打电话。在 Exchange 中查找邮件详细信息,并检查和字符集/编码 - 在此处发布原始内容,以便我们可以对其进行检查。$this->email->set_crlf( "\r\n" );Content-Type

我在微软知识库中发现了这个:

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


答案 2

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

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


推荐