PHP Mailer-双电子邮件(Joomla模块)



我有PHP表单(Joomla模块(,该表单将电子邮件提交并将用户电子邮件保存到数据库中。表格正在检查数据库中是否已经存在用户电子邮件,如果没有保存电子邮件(创建了新的Joomla用户(,并将邮件提交给管理员电子邮件和用户电子邮件。该部分正常工作。但是,如果电子邮件已经在数据库中(返回用户方案(表格将双电子邮件发送给管理员和用户。

 $mailer = & JFactory::getMailer();
        $mailer->isHTML();
        $mailer->setSender($params->get('email_from'));
        $mailer->addRecipient($params->get('email_to'));
        $mailer->addBCC($email);
        $mailer->setSubject($params->get('subject'));
        $mailer->setBody($message); 
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query = 'SELECT id FROM #__users WHERE email = ' . $db->Quote($email);
$db->setQuery($query, 0, 1);
$check = $db->loadResult();
if(!$check){
    $udate = date('d/m/Y');
    $utime= date("h:i:s");
    $udata = array( 
    "name"=>"user".$udate."-".$utime,
    "username"=>"user".$utime,
    "password"=>$utime,
    "password2"=>$utime,
    "email"=>$email,
    "block"=>0,
    "groups"=>array("9")
);
$user = clone(JFactory::getUser());
if(!$user->bind($udata)) {
    throw new Exception("Could not bind data. Error: " . $user->getError());
}
if (!$user->save()) {
     throw new Exception("Could not save user. Error: " . $user->getError());
}
   return $user->id;         
 JFactory::getSession()->clear('user');

    }   
    $send = & $mailer->Send();
    $mailer->ClearAddresses();
    $mailer->ClearAllRecipients();
        if($send = true){
            echo "Mail sent";
            return true;
            }
        else if ($send != true)
        {
            echo "Error sending email: ". $send->message;
            return false;
            }
        }

您的代码中有一些明显的错误。线:

JFactory::getSession()->clear('user'); 

永远不会到达,因为脚本在此行之前返回。另外,行:

if($send = true){

简单地分配true即可发送,并且将永远是正确的。

我也质疑这一行:

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

您在这里分配了出于某种原因发送$发送的引用。不。

我不确定您为什么会发现自己的错误,但是:我真的会考虑使用正确的凹痕正确格式化代码,这使发现错误变得容易得多。并尝试清除其他错误...考虑出于某种原因可能将您的功能称为两次...

最新更新