首页 / 邮件 / PHPmailer – 多次发送电子邮件
PHPmailer – 多次发送电子邮件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHPmailer – 多次发送电子邮件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3686字,纯文字阅读大概需要6分钟。
内容图文
![PHPmailer – 多次发送电子邮件](/upload/InfoBanner/zyjiaocheng/701/d23ca3152bc44f85b48f3efd18f2d805.jpg)
我正在使用PHPmailer发送电子邮件.截至目前,我成功地将电子邮件发送到一个地址.现在,我想只需点击一下即可发送多封电子邮件.
问题:我曾尝试使用下面的一些循环发送多封电子邮件,但我的输出错了.是的,它发送电子邮件但只发送一个地址,电子邮件地址正在收到应该通过电子邮件发送到其他电子邮件的所有电子邮件.
例如,当我发送17封电子邮件时,这17封电子邮件只发送到一个地址.电子邮件应根据数据库中的地址发送,并附带相应的唯一附件.示例:abc@gmail.com应附加abc.pdf,123 @gmail.com应附加123.pdf.
我认为这是在循环中.请帮我搞清楚.谢谢.
require_once('phpmailer/class.phpmailer.php');
include("phpmailer/class.smtp.php");
$mail = new PHPMailer();
$body = file_get_contents('phpmailer/body.html');
$body = preg_replace('/\/b]/','',$body);
$file ='phpmailer/mailpass.txt';
if($handle = fopen($file,"r")){
$contentpass = fread($handle,'15');
fclose($handle);
}
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Username = "email@gmail.com";
$mail->Password = $contentpass;
$mail->SetFrom("email@gmail.com", "Subject");
$mail->AddReplyTo("email@gmail.com","Subject");
$mail->Subject = "Subjects";
$mail->AltBody = "Subject";
$mail->MsgHTML($body);
$file='current_schoolyear.txt';
if($handle = fopen($file,"r"))
{
$content = fread($handle,'9');
fclose($handle);
}
$input = addslashes($_POST['depchair']);
$email = "select email_address from sa_student where schoolyear = '$input'";
if ($p_address=mysql_query($email))
{
while($row = mysql_fetch_assoc($p_address))
{
$mail->AddAddress($row['email_address']);
$input = addslashes($_POST['depchair']);
$control = "select control_no from sa_student where schoolyear = '$input'";
if($ctrl=mysql_query($control)){
$ctrl_no = mysql_result($ctrl, 0);
$mail->AddAttachment("fpdf/pdf_reports/document/".$ctrl_no.".pdf");
}
else
{
echo "No attached document.";
}
if(!$mail->Send()) {
$message = "<div class=\"nNote nFailure\" >
<p>Error sending email. " . $mail->ErrorInfo ."</p>
</div>";
} else {
$message = "<div class=\"nNote nSuccess\" >
<p> Email have been sent to the examinees in ".$input_depchair. "! </p>
</div>";
}
}
}
else
{
echo (mysql_error ());
}
更新的代码:运行下面的代码后,我能够发送一封电子邮件并附上正确的附件.但是,只发送了一封电子邮件(数据库中的最后一个电子邮件地址),其余电子邮件未发送.
$input = addslashes($_POST['depchair']);
$email = "select email_address, control_no from sa_student where schoolyear = '$input'";
if ($p_address=mysql_query($email))
{
while($row = mysql_fetch_assoc($p_address))
{
$cloned = clone $mail;
$cloned->AddAddress($row['email_address']);
$cloned->AddAttachment("fpdf/pdf_reports/document/".$row['control_no'].".pdf");
if(!$cloned->Send()) {
$message = "<div class=\"nNote nFailure\" >
<p>Error sending email. " . $mail->ErrorInfo ."</p>
</div>";
} else {
$message = "<div class=\"nNote nSuccess\" >
<p> Email have been sent to the examinees in ".$input_depchair. "! </p>
</div>";
}
unset( $cloned );
}
}
else
{
echo (mysql_error ());
}
解决方法:
发送电子邮件$mail-> Send()后,执行以下命令:
$mail->ClearAllRecipients();
在你的while循环中.
所以你的基本while循环结构如下所示:
while($row = mysql_fetch_assoc($p_address)){
$mail->AddAddress($row['email_address']);
$mail->AddAttachment("fpdf/pdf_reports/document/".$ctrl_no.".pdf");
$mail->send();
$mail->ClearAllRecipients();
$mail->ClearAttachments(); //Remove all attachements
}
内容总结
以上是互联网集市为您收集整理的PHPmailer – 多次发送电子邮件全部内容,希望文章能够帮你解决PHPmailer – 多次发送电子邮件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。