2013-04-24 2 views
0

im пытается использовать почтовый отправитель joomla для отправки электронных писем, но это делает работу, любые предложения? что мне не хватает? я искал в Интернете и так, но это не помогло.joomla getMailer() не работает как ожидалось

единственная ошибка я получаю 500, и я не могу понять, почему ...

это фактический код:

<?php 
//framework joomla 
define('_JEXEC', 1); 
define('DS', DIRECTORY_SEPARATOR); 
define('JPATH_BASE', realpath(dirname(__FILE__) . "/../")); 
require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 
require_once (JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php'); 
$mainframe =& JFactory::getApplication('site'); 

//get vars 
$session =& JFactory::getSession(); 
$num1 = $session->get('variable1'); 
$num2 = $session->get('variable2'); 
$val= $session->get('variable3'); 
$uq= $session->get('unique'); 
$sendto= $session->get('mail'); 

//mail 
$mailer =& JFactory::getMailer(); 
$mailer->setSender('[email protected]'); 
$recipient = array($sendto, '[email protected]'); 
$mailer->addRecipient($recipient); 


$body = '<h2>sometext</h2>' 
    . '<div>sometext</div>' 
    . '<div> blabla' echo $num1 'blabla </div>' 
    . '<div> texttext' echo $num2 'texet </div>' 
    . '<div> texttext' echo $val 'text </div>'; 

$mailer->isHTML(true); 
$mailer->Encoding = 'base64'; 
$mailer->setBody($body); 
$mailer->AddEmbeddedImage("$uq".".gif", "image_0", "", "base64", "image/gif"); 
$mailer->addAttachment("$uq".".gif"); 

//send 
$send =& $mailer->Send(); 
if ($send !== true) { 
    //Elimina .gif 
    $mask = "*.gif"; 
    array_map("unlink", glob($mask)); 
    unset($mailer); 
    echo 'error: ' . $send->message; 
} else { 
unset($mailer); 
    //Elimina .gif 
    $mask = "*.gif"; 
    array_map("unlink", glob($mask)); 
    echo 'done'; 
} 
?> 

забыл добавить спецификации о платформе:

PHP Версия 5.3.22

Joomla! Версия 2.5.9

Если вам нужна дополнительная информация, просто спросите.

обновление: Я попробовал еще один joomla! версия, упрощенная версия кода без переменных и с одним электронным письмом, текстовыми сообщениями электронной почты ... ничего, похоже, не работает. ошибка внутреннего сервера (500) с пустым журналом ошибок ... (wierd, но установка находится внутри подкаталога со многими другими установками, а мой веб-хостинг позволяет мне видеть только «корневой» журнал, поэтому я думаю, что это проблема бланка журнала ошибок ...)

+1

Ошибка 500: взгляд в error.log вашего веб-сервера. Должна быть информация о вашей ошибке. –

ответ

0

Не уверен, что это корень вашей проблемы. Но $ mail-> setSender() принимает массив. Пример: $ mail-> setSender (массив ('SENDER EMAIL', 'SENDER NAME'));

И

$ mail-> addRecipient() принимает строку или массив. Используйте массив, если вы отправляете электронное письмо нескольким получателям и строке при отправке письма только одному получателю.

Надеюсь, что это поможет

+0

$ mail-> setSender() принимает строки (только адрес электронной почты) или массив (адрес электронной почты и имя). спасибо за ответ, но ничего не меняется, если я кладу массивы или строки в setSender или addRecipient ... – KentaS

0

ok, resolved!

это может помочь кому-то еще так, вот как:

$config =& JFactory::getConfig(); 

эта линия захватывает настройки электронной почты в Joomla без этого JMail не будет отправлять электронную почту.

//body email 
$body .= "<h2>Texttext</h2>" . "\n"; 
$body .= "<div>TexttextTexttextTexttext" . $blockh . " Texttext " . $blockd . "\n"; 
$body .= "<div> TexttextTexttext <span> " . $num1 . " </span> Texttext </div>" . "\n"; 
$body .= "<div>TexttextTexttextTexttext <span> " . $val . " </span> Texttext </div>"; 

previus конкатенация тела не работает, кажется, что двойные кавычки необходимы для работы ...

$mailer->isHTML(); 

«истинный» внутри не является необходимым, так как истинное значение по умолчанию. .

0

В ответ на KentaS комментарием

previus конкатенации тела не работала, мне кажется, что DOUBL е кавычки необходимы для работы ...

Это не имеет ничего делать с одинарными или двойными кавычками. В оригинальном посте вы имели:

$body = '<h2>sometext</h2>' 
. '<div>sometext</div>' 
. '<div> blabla' echo $num1 'blabla </div>' 
. '<div> texttext' echo $num2 'texet </div>' 
. '<div> texttext' echo $val 'text </div>'; 

часть:

'<div> blabla' echo $num1 'blabla </div>' 

вызывает ошибку синтаксиса (строку, а затем, без конкатенации, вызовом «эхо», а затем, без конкатенации , струна ...

Somthing, который работает с одинарными кавычками:

$body = '<h2>sometext</h2>' 
. '<div>sometext</div>' 
. '<div> blabla' . $num1 . 'blabla </div>' 
. '<div> texttext' . $num2 . 'texet </div>' 
. '<div> texttext' . $val . 'text </div>'; 

и двойные кавычки, вы можете сделать еще короче:

$body = "<h2>sometext</h2>" 
. "<div>sometext</div>" 
. "<div> blabla $num1 blabla </div>" 
. "<div> texttext $num2 texet </div>" 
. "<div> texttext $val text </div>"; 

Приветствия,
Dom

Смежные вопросы