【发布时间】:2017-11-02 19:13:43
【问题描述】:
我有提交电子邮件并将用户电子邮件保存到数据库的 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;
}
}
【问题讨论】:
-
我也试过这个但是没有结果 $send= & $mailer->Send(); if(!$send){ echo "发送电子邮件时出错:"。 $发送->消息;返回假; } 其他{ $mailer->ClearAllRecipients(); $mailer->清除地址(); $mailer->ClearBCCs();未设置($mailer); echo "邮件已发送";返回真;}