使用 html 代码发送 phpmailer 电子邮件
Posted
技术标签:
【中文标题】使用 html 代码发送 phpmailer 电子邮件【英文标题】:Send phpmailer email with html code 【发布时间】:2014-12-19 23:21:30 【问题描述】:我制作了一个发送邮件的函数,但它们会解释 html 代码。我怎样才能让它在正文中发送准确的 html 代码?例如,用户应该收到<strong>text</strong>
而不是粗体“强”。
function sendmail($dest,$subj ,$htmlmessage,$textmessage)
$Mail = new phpMailer( true );
try
$Mail->IsSMTP(); // Use SMTP
$Mail->SMTPAuth = TRUE; // enable SMTP authentication
//$Mail->SMTPDebug = 2; // 2 to enable SMTP debug information
$Mail->Host = "smtp.gmail.com"; // Sets SMTP server
$Mail->Username = 'mymail@gmail.com'; // SMTP account username
$Mail->Password = 'mypassword'; // SMTP account password
$Mail->SMTPSecure = "ssl"; //Secure conection
$Mail->Port = 465; // set the SMTP port
$Mail->SetFrom ( 'mymail@gmail.com', 'def' );
$Mail->FromName = 'myname';
//$Mail->addReplyTo( 'mymail@gmail.com', 'Reply here' );
$Mail->addAddress($dest, 'to' ); // To:
$Mail->isHTML( false );
$Mail->Subject=$subj;
$Mail->Body=$htmlmessage;
$Mail->AltBody=$textmessage;
$Mail->Send();
catch ( phpmailerException $e )
file_put_contents( 'Mailerrors.txt', $e->errorMessage() , FILE_APPEND );
die( "Problem with emailing." );
我在这里发送邮件
$dest='sendto@gmail.com';
$subj='hello';
$htmlmessage='this is the body<strong>asd</strong>';
$textmessage='this is the body';
sendmail($dest,$subj, $htmlmessage,$textmessage);
请注意,该功能确实有效并向我发送电子邮件,只是他们解释了 html 代码。
【问题讨论】:
设置$Mail->isHTML( true );
那仍将代码解释为 HTML。
试试$htmlmessage='<html><body>this is the body<strong>asd</strong></body></html>';
那仍然可以解释它。
【参考方案1】:
对此有几种可能的解决方案。
要仅发送纯文本,只需执行以下操作:
$mail->isHTML(false);
并且不要在$mail->AltBody
中放入任何东西。这样,即使包含 HTML 标记,消息也会以纯文本形式发送。
如果您只希望邮件正文的一部分转义 HTML 呈现,您可以使用 htmlspecialchars
或将这部分标记包装在 <pre>
标记中。
将htmlspecialchars
应用于整个邮件正文有点没有意义,因为它可以实现与isHTML(false)
相似的外观结果,但效率要低得多。
【讨论】:
【参考方案2】:我做到了。我所要做的就是:
$Mail->Body=htmlspecialchars($htmlmessage);
不确定这是否是个好主意,即使它有效。我相信一定还有其他方法。
【讨论】:
以上是关于使用 html 代码发送 phpmailer 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
PhpMailer 发送的电子邮件内容仅显示纯文本,不包含 HTML 样式
如何使用 PHPMailer 从 PC 将文件附加到电子邮件
当我们使用 phpMailer 发送带有动态内容的邮件时,如何在电子邮件正文中显示多个内联图像