joomla getMailer() не работи според очакванията

опитвам се да използвам joomla mailer за изпращане на имейли, но не работи, някакви предложения? какво ми липсва Търсих в мрежата и така, но не помогна.

единствената грешка, която получавам, е 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) с празен регистър на грешките... (странно, но инсталацията е в поддиректория с много други инсталации и моят уеб хостинг ми позволява да виждам само "root" журнала, така че мисля, че това е проблемът от празния регистър на грешките...)


person KentaS    schedule 24.04.2013    source източник
comment
Грешка 500: погледнете error.log на вашия уеб сървър. Трябва да има информация за вашата грешка.   -  person Dmitry Rekun    schedule 25.04.2013


Отговори (3)


Не съм съвсем сигурен дали това е коренът на вашия проблем. Но $mail->setSender() приема масив. Пример: $mail->setSender(array('SENDER EMAIL', 'SENDER NAME'));

И

$mail->addRecipient() приема низ ИЛИ масив. Използвайте масив, ако изпращате имейла до множество получатели, и низа, когато изпращате имейла само до 1 получател.

Надявам се това да помогне

person PhiloWS    schedule 25.04.2013
comment
$mail-›setSender() приема низове (само имейл адрес) или масив (имейл и име). благодаря за отговора, но нищо не се променя, ако поставя масиви или низове както в setSender, така и в addRecipient... - person KentaS; 26.04.2013

добре, решено!

това може да помогне на някой друг, така че ето как:

$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>";

предишното свързване на тялото не работеше, изглежда, че са необходими двойни кавички, за да работи...

$mailer->isHTML();

"true" вътре не е необходимо, тъй като true е стойността по подразбиране..

person KentaS    schedule 02.05.2013

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

предишното свързване на тялото не работеше, изглежда, че са необходими двойни кавички, за да работи...

Няма нищо общо с единични или двойни кавички. В оригиналната си публикация имахте:

$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>'

причинява синтактична грешка (низ, последван, без конкатенация, от извикване на "echo", последван, без конкатенация, от низ...!

Нещо, което работи с единични кавички:

$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>";

Наздраве,
Дом

person Dom74    schedule 05.09.2013