You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter中HTML邮件发送失败,纯文本邮件正常问题求助

问题:CodeIgniter结合Google SMTP发送HTML邮件异常,纯文本正常

我在子域名下使用CodeIgniter邮件库结合Google SMTP发送邮件,配置代码如下:

$this->load->library('email'); 
$config['protocol']  = 'SMTP';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_crypto'] = 'ssl';
$config['smtp_user'] = 'email@gmail.com';
$config['smtp_pass'] = 'passowrd';
$config['smtp_port'] = '587';
$config['mailtype'] = 'html';
$config['newline'] = '"\r\n"';

$this->email->initialize($config);
$this->email->from('info@domain.com', 'Smarty');
$this->email->to('email@gmail.com');
            
$subject=addslashes('Order Placed');
$this->email->subject($subject);
$data['data']  = $somedata;
$this->email->message(render_emailview('email',$data));
$bool=$this->email->send();

发送HTML邮件时,收件箱收到异常内容(表现为邮件头部信息乱码/显示原始头部),但发送纯文本邮件可正常送达,请问还需要哪些配置才能正常发送HTML邮件?


解决方案

  • 修正newline配置:当前newline的设置是错误的,CodeIgniter要求邮件换行必须使用标准的CRLF格式,无需添加HTML实体或多余转义,直接修改为:

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

    错误的换行符会导致邮件头部解析混乱,这是HTML邮件显示异常的核心原因。

  • 匹配SMTP加密方式与端口:当前配置中加密方式和端口不匹配,Google SMTP的两种正确配置组合二选一:

    • TLS配置(推荐):
      $config['smtp_host'] = 'smtp.googlemail.com';
      $config['smtp_crypto'] = 'tls';
      $config['smtp_port'] = 587;
      
    • SSL配置:
      $config['smtp_host'] = 'ssl://smtp.googlemail.com';
      $config['smtp_crypto'] = 'ssl';
      $config['smtp_port'] = 465;
      
  • 移除主题的addslashes处理:addslashes会给主题添加不必要的转义字符,导致邮件解析异常,直接使用原始主题字符串:

    $subject = 'Order Placed';
    
  • 确保HTML内容规范:检查render_emailview生成的HTML是否为完整标准结构(包含<html>、<body>标签),避免未闭合标签或非法语法,否则邮件客户端无法正常渲染。

  • 配置Google账号权限:确保你的Google账号已设置应用专用密码(适用于开启两步验证的账号),或开启低安全性应用访问(仅旧账号支持),否则Google会拒绝SMTP连接请求。

内容的提问来源于stack exchange,提问作者Hamza Zafeer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:33:11