向循环中的单个用户发送电子邮件
Send email to single user in loop
我正在尝试使用 php yii 发送群发邮件。我正在使用 yii 扩展 Smtpmail。问题是当我选择多个收件人时。它正在向所有人发送电子邮件。我的意思是它正在添加 "To"。但如果我使用简单的邮件功能,它工作正常。电子邮件正在走向个人。这是我的代码
$sent=$this->sendbulkemail($inv->to_email,UserModule::t("invitation from {site_name}",array('{site_name}'=>Yii::app()->name)),UserModule::t($template,array('{msg}'=>$msg,'{link}'=>$link)));
我的电子邮件功能是
public function sendbulkemail($email,$subject,$message)
{
$adminEmail = Yii::app()->params['adminEmail'];
$message = wordwrap($message, 70);
$message = str_replace("\n.", "\n..", $message);
// $mail2 = new PHPMailer(); // create a new object
$mail=Yii::app()->Smtpmail;
$mail->SetFrom($adminEmail, 'Goal Surf');
$mail->Subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->MsgHTML($message);
$mail->AddAddress($email, "");
$mail->SMTPSecure = 'tls';
$mail->Send();
unset($mail);
}
但是如果我使用简单的 mail()
它工作正常。
$sent=mail($inv->to_email,UserModule::t("invitation from {site_name}",array('{site_name}'=>Yii::app()->name)),UserModule::t($template,array('{msg}'=>$msg,'{link}'=>$link)),$headers);
谁能告诉我该怎么做。
更新
我已经解决了这个问题。我只需要在电子邮件成功后使用 $mail->ClearAddresses();
清除地址。
public function sendbulkemail($email,$subject,$message)
{
$adminEmail = Yii::app()->params['adminEmail'];
$message = wordwrap($message, 70);
$message = str_replace("\n.", "\n..", $message);
// $mail2 = new PHPMailer(); // create a new object
$mail=Yii::app()->Smtpmail;
$mail->SetFrom($adminEmail, '');
$mail->Subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->MsgHTML($message);
$mail->AddAddress($email, "");
$mail->SMTPSecure = 'tls';
$mail->Send();
$mail->ClearAddresses();
}
我正在尝试使用 php yii 发送群发邮件。我正在使用 yii 扩展 Smtpmail。问题是当我选择多个收件人时。它正在向所有人发送电子邮件。我的意思是它正在添加 "To"。但如果我使用简单的邮件功能,它工作正常。电子邮件正在走向个人。这是我的代码
$sent=$this->sendbulkemail($inv->to_email,UserModule::t("invitation from {site_name}",array('{site_name}'=>Yii::app()->name)),UserModule::t($template,array('{msg}'=>$msg,'{link}'=>$link)));
我的电子邮件功能是
public function sendbulkemail($email,$subject,$message)
{
$adminEmail = Yii::app()->params['adminEmail'];
$message = wordwrap($message, 70);
$message = str_replace("\n.", "\n..", $message);
// $mail2 = new PHPMailer(); // create a new object
$mail=Yii::app()->Smtpmail;
$mail->SetFrom($adminEmail, 'Goal Surf');
$mail->Subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->MsgHTML($message);
$mail->AddAddress($email, "");
$mail->SMTPSecure = 'tls';
$mail->Send();
unset($mail);
}
但是如果我使用简单的 mail()
它工作正常。
$sent=mail($inv->to_email,UserModule::t("invitation from {site_name}",array('{site_name}'=>Yii::app()->name)),UserModule::t($template,array('{msg}'=>$msg,'{link}'=>$link)),$headers);
谁能告诉我该怎么做。
更新
我已经解决了这个问题。我只需要在电子邮件成功后使用 $mail->ClearAddresses();
清除地址。
public function sendbulkemail($email,$subject,$message)
{
$adminEmail = Yii::app()->params['adminEmail'];
$message = wordwrap($message, 70);
$message = str_replace("\n.", "\n..", $message);
// $mail2 = new PHPMailer(); // create a new object
$mail=Yii::app()->Smtpmail;
$mail->SetFrom($adminEmail, '');
$mail->Subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->MsgHTML($message);
$mail->AddAddress($email, "");
$mail->SMTPSecure = 'tls';
$mail->Send();
$mail->ClearAddresses();
}