从MODx模板发送邮件

时间:2017-01-05 13:32:32

标签: php email modx modx-revolution

我正在尝试从MODx模板发送电子邮件,只需使用PHPmail或使用MODx的ModMail类。不用说两种方式都不起作用。

我正在将代码写入MODx代码段,并在我的模板中包含该代码段。使用PHPmail时,省略了表单操作(以便表单提交到当前URL),页面刷新但没有发送邮件。

当我尝试使用ModMail时,根本没有任何事情发生。但是我不太确定在这种情况下如何实际调用发送邮件代码,因此代码只是坐在那里什么都不做。

这是我的PHPmail尝试:

<?php
  $to      = $_POST['email'];
  $name    = $_POST['name'];
  $query = $_POST['message'];
  $subject = "Query from " . $name;
  $message = "You're received a query from " . $name . ", their email address is " . $to . ".\r\nThey said:\r\n" . $query;
  $headers = 'From: MyPersonalEmail@gmail.com' . "\r\n" .
             'Reply-To: MyPersonalEmail@gmail.com' . "\r\n" .
             'X-Mailer: PHP/' . phpversion();

  echo $to;
  echo $name;
  echo $query;
  echo $subject;
  echo $message;
  echo $headers;

  mail($to, $subject, $message, $headers);

?>

这是ModMail:

<?php
$message = $_POST['message'];

$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM,'MyPersonalEmail@gmail.com');
$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','MyPersonalEmail@gmail.com');
$modx->mail->address('reply-to','MyPersonalEmail@gmail.com');
$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();

2 个答案:

答案 0 :(得分:1)

有一个名为QuickEmail的MODX附加功能可以检查内部邮件功能。

答案 1 :(得分:1)

我通过MODX额外的FormIt处理所有电子邮件。看看它的rtm,它很容易运行。它可以处理你想要做的很多东西,并在有表格时防止(比如垃圾邮件,多次提交)。

https://docs.modx.com/extras/revo/formit/formit.tutorials-and-examples/formit.examples.simple-contact-page

不要试图发明一种新的解决方案。大多数stuf可以通过使用或扩展现有的MODX附加功能来完成。