我重新发布这个是因为没有人回答我之前的帖子。
我正在尝试将电子邮件发送给多个收件人,并附有相应的 pdf 文件。我成功地向多个收件人发送了电子邮件,但收件人收到了多封电子邮件。收件人收到的电子邮件数量是存储在我的数据库中的电子邮件地址数量。
我遇到的第二个问题是发送给收件人的附件都是同一个文件。场景应该是这样的:收件人 A 应该附有 pdf A 的电子邮件,收件人 B 附有 pdf B,依此类推。
这些 pdf 的文件名与每个收件人拥有的唯一控制号相对应。例如,收件人 A 的控制号为 1234,因此他的 pdf 被命名为 1234.pdf。
我试图在 $ctrl_no = mysql_result($ctrl, 0) 中执行一个巧妙的循环,但它给出了一个错误,表明服务器的内存限制已达到。
希望你能帮助解决我的两个问题。
$input = addslashes($_POST['dep']);
$email = "select email_address from student y where y.center = '$input'";
if ($p_address=mysql_query($email))
{
while($row = mysql_fetch_array($p_address))
{
$mail->AddAddress($row[0]);
$input = addslashes($_POST['dep']);
$control = "select control_no from student y where y.center = '$input'";
if($ctrl=mysql_query($control)){
$ctrl_no = mysql_result($ctrl, 0);
$mail->AddAttachment("reports/".$ctrl_no.".pdf");
}
else{
echo "No attached pdf.";
}
更新: $mail 功能
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);
$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 = "me@gmail.com";
$mail->Password = mypass;
$mail->SetFrom("me@gmail.com", "Office");
$mail->AddReplyTo("me@gmail.com"," Office");
$mail->Subject = "My Subject";
$mail->AltBody = "Subject file";
$mail->MsgHTML($body);