如何实例化mail()函数并使用Joomla 2.5发送电子邮件?

时间:2012-10-02 12:23:20

标签: php joomla joomla2.5 joomla-extensions mailer

基于Joomla!文档@ http://docs.joomla.org/Sending_email_from_extensions,我正在尝试使用以下代码发送电子邮件:

function sendmail($file,$mailto)
{  
    $mailer =& JFactory::getMailer();
    //var_dump($mailer); exit;
    $config =&JFactory::getConfig();
    $sender = array( 
        $config->getValue( 'config.mailfrom' ),
        $config->getValue( 'config.fromname' )
    );

    $mailer->setSender($sender);         

    $recipient = array($mailto);           
    $mailer->addRecipient($recipient);

    $body   = "Your body string\nin double quotes if you want to parse the \nnewlines etc";
    $mailer->setSubject('Your subject string');
    $mailer->setBody($body);
    // Optional file attached

    $mailer->addAttachment(JPATH_BASE.DS.'CSV'.DS.$file);

    $send =&$mailer->Send();

    if ( $send !== true ) {
        echo 'Error sending email: ' . $send->message;
    } else {
        echo 'Mail sent';
    }
}

$file是文件zip的完整路径,$mailto是我的Gmail。)

但是,当我发送邮件时,收到错误:

  

无法实例化邮件功能   致命错误:无法在第142行的/var/www/html/dai/components/com_servicemanager/views/i0602/view.html.php中访问受保护的属性JException :: $ message

导致此错误的原因是什么?

4 个答案:

答案 0 :(得分:2)

请保存自己一些理智,不要尝试使用Joomla的邮件程序。不仅因为你经历过它不可靠,它处理不同的字符集和HTML内容很差。只需加入并使用PHPMailer

答案 1 :(得分:1)

更改

echo 'Error sending email: ' . $send->message;

echo 'Error sending email:'.$send->get('message');

然后再次运行您的代码。你得到的错误应该告诉我们为什么它没有实例化。

答案 2 :(得分:1)

在joomla中发送带附件的邮件

   $from="noreplay@gmail.com";//Please set Proper email id
   $fromname="noreplay";
   $to ='admin@gmail.com';
   // Set a you want send email to
   $subject = "Download";
   $message = "Thank you For Downloading";
   $attachment = JPATH_BASE.'/media/demo.pdf';
   // set a file path
   $res = JFactory::getMailer()->sendMail($from, $fromname, $to,$subject,     $message,$mode=1,$cc = null, $bcc = null, $attachment);
   if($res)
   {
        $errormsg = "Mail Successfully Send";
   }
   else
   {
     $errormsg ="Mail Not Send";
   }

检查收件箱或垃圾邮件文件夹中的邮件后。
邮件在垃圾邮件文件夹中,因为没有在id中设置正确的电子邮件ID。

答案 3 :(得分:0)

经过几年的Joomla开发,我建议您使用RSJOOMLA的RSFORM PRO在您的网站访问者填写表格后为您发送邮件。管理要比处理内部邮件服务器容易得多。