我有一个php脚本,应该是发送电子邮件给管理员时,用户回复帖子。这很好用,但它是同时发送4封邮件,为相同的记录发送相同的邮件,而不是使用phpmailer发送1封邮件。
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'noreply@joint2purchase.com';
$mail->Password = 'manjunath123M';
$mail->setFrom('noreply@joint2purchase.com', 'admin joint2purchase');
$stmt = $db->query('SELECT USERNAME,EMAIL FROM MEMBERS LIMIT 100');
//for each email add a recipient
while($row3 = $stmt->fetch()){
$toname = $row3['USERNAME'];
$tomail = $row3['EMAIL'];
$mail->addAddress($tomail);
}
//build the rest email (html, attaches, etc)
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'created new thread';
$mail->Body = '<html>
<head>
<title>Admin Started with You : '.$name.' </title>
</head>
<body>
<h1>Thanks you for joining with us!</h1>
<table cellspacing="0" style="border: 2px solid #202020; height: 60%; width: 100%;">
<tr style="background-color:lightblue;">
<th>Joint2Purchase</th>
</tr>
<br/> <br/>
<tr style="background-color: white;">
<th>'.$toname.', started a new conversation with you at Joint2Purcahse. </th>
</tr>
<tr>
<th style="color:skyblue; font-size:30px; font-family:calibri; font-weight:boldder; border-bottom:1px solid skyblue;"> '.$name.'</th>
</tr>
<tr style="height:70px;">
<br/> <a href="joint2purchase.com/viewthread.php?id='.$example.'">View Conversation</a></th>
</tr>
</table>
</body>
</html>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->addAttachment('test.txt');
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'The email message was sent.';
}```
[![enter image description here][2]][2]
[1]: https://i.stack.imgur.com/q5K06.png
[2]: https://i.stack.imgur.com/hIJdZ.png发布于 2020-04-16 05:44:27
1)执行一个查询(最后一个),将"EMAIL“字段放入$to,然后不在邮件结构中使用它!所以这是一个无用的查询
2)将邮件代码放在一个循环中
while($row3 = $stmt->fetch()){对于您获得的每条记录。因此,如果最后一次查询返回3、4或100条记录,您将发送相同数量的电子邮件!!
发布于 2020-04-16 19:41:21
就像这样:
//comment this line/ $stmt = $db->prepare('SELECT USERNAME,EMAIL,TYPE FROM MEMBERS WHERE TYPE = :T LIMIT 100');
//comment this line/ $stmt->execute(array(':T' => 'ADMINISTRATOR'));
//comment this line/ while($row3 = $stmt->fetch()){
$to = $row3['EMAIL'];
require 'vendor/autoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'filip@joint2purchase.com';
$mail->Password = 'filip321';
$mail->setFrom('filip@joint2purchase.com', 'Client Filip');
//comment this line/ $mail->addReplyTo('manubmhegde@gmail.com', 'Client Filip');
$mail->addAddress('manubmhegde@gmail.com', 'Receiver Name');
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
//$mail->addAttachment('test.txt');
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'The email message was sent.';
}
//comment this line/ }你只发了一封邮件
发布于 2020-04-18 02:25:51
这将向多个收件人发送相同的电子邮件
//Set the mailer hadle
require 'vendor/autoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'filip@joint2purchase.com';
$mail->Password = 'filip321';
$mail->setFrom('filip@joint2purchase.com', 'Client Filip');
//get the administrators emails
$stmt = $db->prepare('SELECT USERNAME,EMAIL,TYPE FROM MEMBERS WHERE TYPE = :T LIMIT 100');
$stmt->execute(array(':T' => 'ADMINISTRATOR'));
//for each email add a recipient
while($row3 = $stmt->fetch()){
$toname = $row3['USERNAME'];
$tomail = $row3['EMAIL'];
//*************************************************
//So you have to use bcc (blind carbon copy)
//COMMENT THE NEXT LINE
//$mail->addAddress($tomail, $toname);
//ADD THIS LINE
$mail->AddBCC($tomail, $toname);
//*************************************************
}
//build the rest email (html, attaches, etc)
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->addAttachment('test.txt');
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'The email message was sent.';
}https://stackoverflow.com/questions/61238301
复制相似问题