【问题标题】:PHPmailer sending HTML CODEPHPmailer 发送 HTML 代码
【发布时间】:2023-03-27 17:47:01
【问题描述】:

我正在使用 PHPmailer 发送电子邮件。

我也使用了 HTML = True 内容类型

    $mail = new PHPMailer();

$mail->IsSMTP();                    // send via SMTP
$mail->Host     = $Host; 
$mail->SMTPAuth = true;             // turn on SMTP authentication
$mail->Username = $Username;  
$mail->Password = $Password; 

$mail->From     = $From;
$mail->FromName = $FromName;

    $mail->AddAddress($To , $ToName);

$mail->WordWrap = 50;               // set word wrap
    $mail->Priority = 1; 
$mail->IsHTML(true);  
$mail->Subject  =  $Subject;
$mail->Body     =  $Body;

发送电子邮件后,我看到的是实际的 HTML 代码,而不是内容,请查看下方

**不确定是什么问题**

【问题讨论】:

  • 你能显示你用来填充正文的代码吗?
  • 你在$mail->Body($your_html_html)吗?
  • @MarcB 是的,我正在使用 $mail->Body = $Body;
  • 天啊!对... Body 是一个属性,而不是一个方法。无论如何,这里是关于如何发送 html 邮件的“官方”教程:phpmailer.worxware.com/index.php?pg=tutorial#4
  • @MarcB 不确定你想说什么我应该在上面的代码中更改什么?

标签: php


【解决方案1】:

在设置实例Body 属性(我的意思是$mail->Body)之后调用isHTML() 方法为我解决了这个问题:

$mail->Subject = $Subject;
$mail->Body    = $Body;
$mail->IsHTML(true);       // <=== call IsHTML() after $mail->Body has been set.

【讨论】:

  • 这是正确的,但您永远不应该在$mail-&gt;IsHTML(true) 之后调用$mail-&gt;ClearCustomHeaders();ClearCustomHeader 摆脱了您的电子邮件 HTML 格式,而是收件人将收到 HTML 源代码。
  • 我个人使用:$mail->msgHTML($email_body);
【解决方案2】:

msgHTML()方法,也调用IsHTML()

IsHTML 这个名字让人迷惑……

/**
 * Create a message from an HTML string.
 * Automatically makes modifications for inline images and backgrounds
 * and creates a plain-text version by converting the HTML.
 * Overwrites any existing values in $this->Body and $this->AltBody
 * @access public
 * @param string $message HTML message string
 * @param string $basedir baseline directory for path
 * @param bool $advanced Whether to use the advanced HTML to text converter
 * @return string $message
 */
public function msgHTML($message, $basedir = '', $advanced = false)

【讨论】:

    【解决方案3】:

    或者如果你还有问题,你可以使用这个

    $mail->Body =  html_entity_decode($Body);
    

    【讨论】:

      【解决方案4】:

      在 5.2.7 版本中,我使用它来发送纯文本:

      $mail->set('Body', $Body);
      

      【讨论】:

        【解决方案5】:

        只需将 true 作为参数传递给 IsHTML() 函数即可。

        【讨论】:

          【解决方案6】:

          这样做 - 使用 GET 方法将您的 html 代码粘贴到单独的 html 文件中。

          $mail->IsHTML(true);                                 
              $mail->WordWrap = 70;                                 
              $mail->addAttachment= $_GET['addattachment']; $mail->AltBody   
              =$_GET['AltBody'];  $mail->Subject = $_GET['subject']; $mail->Body = $_GET['body'];
          

          【讨论】:

            【解决方案7】:

            您只需添加 $mail->IsHTML(true);到代码它工作正常..

            【讨论】:

              猜你喜欢
              • 2014-12-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-12-09
              • 2011-07-01
              相关资源
              最近更新 更多