基于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
导致此错误的原因是什么?
答案 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在您的网站访问者填写表格后为您发送邮件。管理要比处理内部邮件服务器容易得多。