Codeigniter 3 - PHP 8 - 邮件问题

问题描述 投票:0回答:1

自从 PHP 7.4 更新到 8.1 以来,我通过发送电子邮件收到奇怪的消息。

$config = Array(
             'protocol' => 'asmtp',
             'smtp_host' => 'asmtp.mail.*****.com',
             'smtp_port' => 587,
             'smtp_user' => '[email protected]',
             'smtp_pass' => '*******',
             'mailtype' => 'html',
             'charset' => 'utf-8',
             'wordwrap' => TRUE
         ); 

        $message = $this->load->view('email/index.php', $data, TRUE);
        
        $subject = "My title;
        
        $this->load->library('email', $config);
        $this->email->set_mailtype("html");
        $this->email->set_crlf( "\r\n" );
        $this->email->from('[email protected]');
        $this->email->to($email);
        $this->email->subject($subject);
        $this->email->message($message);
        $this->email->attach($root.'assets/'.$attachment);

错误信息:

这是一条 MIME 格式的多部分消息。您的电子邮件申请 可能不支持这种格式。

--B_ATC_64eceaf56642a 内容类型:多部分/替代;边界=“B_ALT_64eceaf566426”

--B_ALT_64eceaf566426 内容类型:文本/纯文本;字符集=UTF-8 内容传输编码:8 位


--B_ALT_64eceaf566426 内容类型:text/html;字符集 = UTF-8 内容传输编码:引用打印

我将字符集从 UTF-8 更改为 ISO-8859-1 和其他一些字符集,但这并不能解决问题。此外,邮件服务器上没有任何变化。

php codeigniter codeigniter-3
1个回答
0
投票

我昨天将 PHP 从 7.4 版本升级到 8.2,然后发现邮件不再正确发送。

原因似乎是,自升级以来,CodeIgniter 3 电子邮件库似乎仅使用“ ” 作为外发电子邮件标题中的行分隔符。将其更改为“ ”,问题已解决。

我通过更改

application/config/email.php
文件以包含以下行来实现此目的:

$config['newline'] = "\r\n";

想必您也可以通过在调用库时设置配置换行符来达到相同的结果:

$this->email->set_newline("\r\n");
© www.soinside.com 2019 - 2024. All rights reserved.