【问题标题】:Is there a way to unset or delete msgHTML/view template in phpmailer有没有办法在 phpmailer 中取消设置或删除 msgHTML/view 模板
【发布时间】:2020-03-12 04:10:31
【问题描述】:

我有一个带有电子邮件表单回复的网站。单击时我需要发送 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);

有什么建议吗?

【问题讨论】:

    标签: view phpmailer unset


    【解决方案1】:

    我在这篇帖子Slim framework and email template rendering issue with PHPmailer找到了答案

    正如我所料,一切都很好,但视图假设要加入渲染,因此将其更改为 fetch 也可以解决问题,因为我得到了 HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 邮件顶部的标头。

    感谢您的帮助。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我试过了,但没有改变......仍然找不到问题。我知道有不同的情况,这让我觉得有一种方法可以加入,或者视图方法中的某些东西?
      • 仔细检查所有内容 - 不要假设您的数据是您认为的那样; 检查。例如,在尝试在电子邮件中使用它之前检查返回的树枝。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      相关资源
      最近更新 更多