首页 > 解决方案 > 有没有办法在 phpmailer 中取消设置或删除 msgHTML/view 模板

问题描述

我有一个带有电子邮件表单回复的网站。单击时我需要发送 2 封电子邮件,并且正在使用 slim 框架、msgHTML 和 twig。我通过一个条件设置了 twig 模板,以显示该模板的一部分用于第一封电子邮件,另一部分用于另一封电子邮件。不起作用,因为第一封电子邮件正文已添加到第二封邮件。

所以我创建了 2 个 phpmailer 实例来发送 2 个单独的 twig 模板,但出现了同样的错误,它在最后一封电子邮件正文中添加了 2 个模板。

有没有办法取消设置 msgHTML 消息或视图?

$mailu = new PHPMailer; $maila = new PHPMailer;
$mailu->isHTML(true); $maila->isHTML(true);
$mailu->isSMTP(); $maila->isSMTP();
$mailu->Host = 'XXX'; $maila->Host = 'XXX';
$mailu->Port = 587; $maila->Port = 587;
$mailu->SMTPAuth = true; $maila->SMTPAuth = true;
$mailu->SMTPSecure = 'tls'; $maila->SMTPSecure = 'tls';
$mailu->Username = 'XXX; $maila->Username = 'XXX';
$mailu->Password = 'XXX'; $maila->Password = 'XXX';
$mailu->SMTPDebug = 0; $maila->SMTPDebug = 0;
$mailu->setLanguage('es'); $maila->setLanguage('es');
$mailu->CharSet="utf-8"; $maila->CharSet="utf-8";
$mailu->clearCustomHeaders(); $maila->clearCustomHeaders();
$mailu->Subject = $subject; $maila->Subject = $subject;

$marrayu = array('user'=>true, 'name'=>$name, 'email'=>$email, 'subject'=>$subject, 'message'=>$message, 'phone'=>$phone);
$mailu->msgHTML($this->view->render($response, 'templates/mailu.twig', array( "marray" => $marrayu )));
$mailu->setFrom($domainmail, 'NMV');
$mailu->addAddress($email, $name);
$mailu->addReplyTo($domainmail, 'NMV');
$mailu->send();

$marraya = array('user'=>false, 'name'=>$name, 'email'=>$email, 'subject'=>$subject, 'message'=>$message, 'phone'=>$phone);
$maila->msgHTML($this->view->render($response, 'templates/maila.twig', array( "marray" => $marraya )));
$maila->setFrom($email, $name);
$maila->addAddress($domainmail,'NMV');
$maila->send();

return $this->response->withStatus(200)->withHeader('Location',  $anchor);

有什么建议么?

标签: viewphpmailerunset

解决方案


msgHTML确实会覆盖该Body属性,并且新实例无法从另一个实例中保留主体,因此我会在上游进一步寻找原因。

但是,您可以像这样清除任何现有的主体:

$mail->Body = ‘’;
$mail->AltBody = ‘’;

推荐阅读