0

joomlaメーラーを使用してメールを送信しようとしていますが、うまくいきません。何か提案はありますか? 私は何が欠けていますか?私はウェブとSOを検索しましたが、役に立ちませんでした。

私が得る唯一のエラーは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

他の情報が必要な場合は、お尋ねください。

更新: 別の joomla を試しました! バージョン、変数なしの単純化されたバージョンのコード、および単一の電子メール、プレーンテキストの電子メール...何も機能していないようです. 空白のエラー ログを伴う内部サーバー エラー (500) ... (奇妙ですが、インストールは他の多くのインストールがあるサブディレクトリ内にあり、私の Web ホスティングでは「ルート」ログしか表示できないため、これが問題だと思います空白のエラー ログの...)

4

3 に答える 3

0

これが問題の根源であるかどうかはよくわかりません。しかし、$mail->setSender() は配列を受け入れます。例: $mail->setSender(array('SENDER EMAIL', 'SENDER NAME'));

$mail->addRecipient() は文字列または配列を受け入れます。メールを複数の受信者に送信する場合は配列を使用し、メールを 1 人の受信者にのみ送信する場合は文字列を使用します。

お役に立てれば

于 2013-04-25T11:11:14.253 に答える
0

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

乾杯、
ドム

于 2013-09-05T19:42:58.813 に答える
0

よし、解決!

これは他の誰かを助けるかもしれないので、ここに方法があります:

$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」は必要ありません。

于 2013-05-02T08:08:41.557 に答える