0

我正在使用 modMail 类发送自定义电子邮件。我遵循了 MODX 网站上的指南,并使用了我放在片段中的以下代码:

$message = $modx->getChunk('myEmailTemplate');

$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM,'me@example.org');
$modx->mail->set(modMail::MAIL_FROM_NAME,'Johnny Tester');
$modx->mail->set(modMail::MAIL_SUBJECT,'Check out my new email template!');
$modx->mail->address('to','user@example.com');
$modx->mail->address('reply-to','me@xexample.org');
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
    $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}
$modx->mail->reset();

该片段已被修改以包含来自自定义块的消息,并且电子邮件地址已替换为正确的地址。该片段发送了一次电子邮件,并且再也没有发送过。我不知道是什么导致了这种阻​​止它发送电子邮件的行为。

我已经读到使用重置功能会$modx->mail->reset();重置电子邮件字段并允许再次发送电子邮件,但我觉得这会导致问题。

该片段在页面上被称为未缓存[[!email]]

有谁知道为什么电子邮件没有被发送,即使它工作过一次?

4

1 回答 1

1

如果你的块或处理你的块有错误,modx 永远不会到达它记录错误的地步。尝试类似:

if (!$modx->mail->send()) {
    $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}else{
 $modx->log(modX::LOG_LEVEL_ERROR,'This mail was sent: '.$message);
}

看看它是否记录了一些东西。但除此之外,您所拥有的完全正确 - 尝试取出 $message 变量并仅发送一个字符串。如果它发送了一次邮件,那么肯定有其他问题。我会开始查看邮件服务器日志、标头、垃圾邮件 [gmail??] 等。

于 2013-02-22T22:48:50.527 回答