PhpMailer 发送的电子邮件内容仅显示纯文本,不包含 HTML 样式

Posted

技术标签:

【中文标题】PhpMailer 发送的电子邮件内容仅显示纯文本,不包含 HTML 样式【英文标题】:PhpMailer Sent email content is show only plain text not contain with HTML styles 【发布时间】:2020-10-08 12:15:26 【问题描述】:

我在 codeigniter 中使用 phpMailer 库发送电子邮件,电子邮件发送过程正常,我使用 Summernote 编写我的电子邮件内容,summernote 生成我在summernote 中编辑的 html 格式,但是当我发送电子邮件时,收到的邮件有只是纯文本,我不知道为什么会这样..

这里附上PhpMailer函数,

function send_email_common_method($email_id,$password,$to,$subject,$content,$attach_file,$ccmailarray,$bccmailarray,$email_id_name) 
  include_once(APPPATH."third_party/PHPMailer/PHPMailerAutoload.php");
  $mail = new PHPMailer;
  $mail->IsHTML(true);
  $mail->isSMTP();
  $mail->Host = 'smtp.gmail.com';
  $mail->Port = 465;//587
  $mail->SMTPSecure = 'ssl';
  $mail->SMTPAuth = true;
  $mail->Username = $email_id;
  $mail->Password = $password;
  $mail->setFrom($email_id, $email_id_name);
  $mail->addAddress($to);
  $mail->Subject = $subject;
  $mail->msgHTML(strip_tags($content));
  $mail->addAttachment($attach_file);
  foreach($ccmailarray as $ccarray)
  
    $mail->AddCC($ccarray);
  
  foreach($bccmailarray as $bccarray)
  
    $mail->AddBCC($bccarray);
  
  //print_r($mail);exit;
  if (!$mail->send()) 
    $error = "Mailer Error: " . $mail->ErrorInfo;
    return 0;
  //echo '<p id="para">'.$error.'</p>';exit;
  
  else 
    return 1;
  


下面我附上summernote视图代码,

<!--Wysiwyg editor : Summernote placeholder-->
<textarea name="reply_content_email" class="reply_content_email" id
   ="reply-mailbox-mail-compose"></textarea>
<p class="text-danger" id="reply_content_email_err"></p>
<!-- <div ></div> -->
<div class="pad-ver">
   <!--Send button-->
   <button id="mail-send-btn" type="submit" name="btn_submit"  class="btn btn-primary">
   <i class="mailbox-psi-mail-send icon-lg icon-fw"></i> Reply Mail
   </button>
</div>

任何人都可以找到解决此问题的方法吗?

【问题讨论】:

【参考方案1】:

您正在使用 strip_tags 函数删除所有 HTML 标记。

$mail->msgHTML(strip_tags($content));

只需传递 $content 而不使用 strip_tags 函数。

【讨论】:

谢谢@kopz,我没有注意到,现在它工作正常......【参考方案2】:

如果您使用的是 PHPMailer,那么您可以使用

$mail->isHTML(true);

这适用于 html 格式。

【讨论】:

谢谢你的回答先生,我已经包含了这个功能,按照上面@kopz的回答它现在工作正常 太棒了。它具有不同的语法。希望将来会帮助其他人。

以上是关于PhpMailer 发送的电子邮件内容仅显示纯文本,不包含 HTML 样式的主要内容,如果未能解决你的问题,请参考以下文章

仅发送纯文本电子邮件,正文中包含 Rails mime 部分

当我们使用 phpMailer 发送带有动态内容的邮件时,如何在电子邮件正文中显示多个内联图像

在 wordpress 中使用 wp_mail 发送 HTML 和纯文本电子邮件

纯文本电子邮件和仅包含纯文本的多部分电子邮件之间有区别吗?

使用phpmailer通过带有图像的html文件发送电子邮件

MIME php邮件仅显示文本/纯文本版本[关闭]