2013-02-22 3 views
0

modMail 클래스를 사용하여 맞춤 이메일을 보내고 있습니다. 나는 MODX 사이트의 가이드 라인을 따라 나는 조각에 배치 다음 코드를 사용했습니다 :MODX에서 이메일을 보내지 않음

코드 조각은 사용자 정의 덩어리뿐만 아니라 전자 메일 주소에서 메시지를 포함하도록 수정되었습니다

올바른 것들로 대체되었습니다

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

$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(); 
. 스 니펫은 이메일을 한 번 보내고 결코 다시는 보내지 않습니다. 나는 이메일을 보내는 것을 막는 그러한 행동을 일으키는 원인이 무엇인지 전혀 모른다.

나는 리셋 기능 $modx->mail->reset();을 사용하여 이메일 입력란을 재설정하고 이메일을 다시 전송할 수 있음을 읽었지만 아직 문제가 발생했다고 생각합니다.

코드 조각

는 페이지 캐시되지 않은라고 [[!email]]

사람이 한 번 일에도 이메일이 전송되지 않는 이유는 생각을 가지고 있습니까?

답변

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 ??] 등을 살펴보기 시작합니다.

+0

좋은 점은 있지만 오류 로그를 확인했으며 modmail 클래스에 대한 보고서가 없습니다. 그러나 나는 스 니펫이 전자 메일을 보내는 리소스를 캐싱하지 않도록함으로써이 문제를 해결할 수있었습니다. 이는 스 니펫이 캐시 된 후에 이메일 필드를 재설정하지 않는다는 사실입니다. 감사! –

+1

아, 그 비열한 캐시, 나는 항상 먼저 체크하는 것을 잊어 버린다. 또한 - 사이트가 생방송 될 때의 로깅; 오류 로그를 지우고 로그 파일을 공개적으로 사용할 수 있으므로 로깅을 0으로 설정하십시오. [다만 FYI] –

관련 문제