2017-01-05 14 views
0

Я пытаюсь отправить электронное письмо из шаблона MODx, либо используя PHPmail, либо с помощью ModMail класса MODx. Излишне говорить, что ни один из способов не работает.Написать письмо от шаблона MODx

Я пишу код в фрагменте 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: [email protected]' . "\r\n" . 
      'Reply-To: [email protected]' . "\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,'[email protected]'); 
$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','[email protected]'); 
$modx->mail->address('reply-to','[email protected]'); 
$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(); 
+0

Просто чтобы ударить вещи из списка, это работает, если вы поместите фрагмент в ресурс? – MeltingDog

ответ

1

Существует MODX дополнительный доступный называется QuickEmail, которые могли бы проверить внутреннюю функциональность почты.

1

Я делаю все обработки электронной почты через MODX extra FormIt. Посмотрите на rtm для этого, его легко запустить. Он может обрабатывать много вещей, которые вы хотите сделать, и предотвращать (например, спам, multisubmit) при наличии формы.

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

Не пытайтесь изобрести новое решение. Большинство stuf можно сделать, используя или расширяя существующие дополнения MODX.