Php joomla getMailer()未按预期工作

Php joomla getMailer()未按预期工作,php,email,joomla,frameworks,mailer,Php,Email,Joomla,Frameworks,Mailer,我试图使用joomla mailer发送电子邮件,但它不起作用,有什么建议吗?我错过了什么?我已经在网上搜索过了,但是没有用 我唯一的错误是500,我不明白为什么 这是实际代码: <?php //framework joomla define( '_JEXEC', 1 ); define( 'DS', DIRECTORY_SEPARATOR ); define( 'JPATH_BASE', realpath(dirname(__FILE__) . "/../")); require_on

我试图使用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('some1@domain.com');
$recipient = array($sendto, 'some1else@domain.com');
$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

乔姆拉!版本2.5.9

如果您需要任何其他信息,请询问

更新: 我又试了一个乔姆拉!版本,一个简化版本的代码没有变量和一个单一的电子邮件,纯文本电子邮件。。。似乎什么都不管用。
内部服务器错误(500),错误日志为空。。。(WiRD,但安装它在一个子目录内有许多其他的安装,我的网络主机允许我只看到“根”日志,所以我认为这是空白错误日志的问题……< /P> < P>不确定这是否是你的问题的根源。但是$mail->setSender()接受一个数组。示例:$mail->setSender(数组('SENDER EMAIL','SENDER NAME')

$mail->addRecipient()接受字符串或数组。如果将电子邮件发送给多个收件人,请使用数组;如果仅将电子邮件发送给一个收件人,请使用字符串

希望这有帮助

好的,解决了

这可能有助于其他人,因此,以下是如何:

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

内部的“true”是不必要的,因为true是默认值。

在回答KentaS的评论时

previus的连接体不起作用,似乎需要双引号才能起作用

$mailer->isHTML();
它与单引号或双引号无关。 在您原来的帖子中,您有:

$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>';
$body='sometext'
. 'sometext'
. ' blabla'echo$num1'blabla'
. ' texttext'echo$num2'texet'
. ' texttext'echo$val'text';
该部分:

'<div> blabla' echo $num1 'blabla </div>'
“blabla”回显$num1“blabla”
导致语法错误(字符串,后跟,未连接,调用“echo”,后跟,未连接,字符串

一些使用单引号的东西:

$body   = '<h2>sometext</h2>'
. '<div>sometext</div>'
. '<div> blabla' . $num1 . 'blabla </div>'
. '<div> texttext' . $num2 . 'texet </div>'
. '<div> texttext' . $val . 'text </div>';
$body='sometext'
“sometext”
“布拉布拉”。$num1。“布拉布拉”
.“texttext.”$num2.“texet”
.“文本”。$val.“文本”;
使用双引号,您可以做得更短:

$body   = "<h2>sometext</h2>"
. "<div>sometext</div>"
. "<div> blabla $num1 blabla </div>"
. "<div> texttext $num2 texet </div>"
. "<div> texttext $val text </div>";
$body=“sometext”
“sometext”
“布拉布拉$num1布拉布拉”
“texttext$num2 texet”
“text$val text”;
干杯,

Dom

Error 500:查看web服务器的Error.log。应该有关于错误的信息。$mail->setSender()接受字符串(仅电子邮件地址)或数组(电子邮件和名称)。感谢您的回答,但如果我在setSender或addRecipient中同时放置数组或字符串,则不会有任何更改。。。