首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >phpmail发送%4封邮件而不是%1封

phpmail发送%4封邮件而不是%1封
EN

Stack Overflow用户
提问于 2020-04-16 04:45:27
回答 3查看 60关注 0票数 1

我有一个php脚本,应该是发送电子邮件给管理员时,用户回复帖子。这很好用,但它是同时发送4封邮件,为相同的记录发送相同的邮件,而不是使用phpmailer发送1封邮件。

代码语言:javascript
运行
复制
    $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
EN

回答 3

Stack Overflow用户

发布于 2020-04-16 05:44:27

1)执行一个查询(最后一个),将"EMAIL“字段放入$to,然后不在邮件结构中使用它!所以这是一个无用的查询

2)将邮件代码放在一个循环中

代码语言:javascript
运行
复制
while($row3 = $stmt->fetch()){

对于您获得的每条记录。因此,如果最后一次查询返回3、4或100条记录,您将发送相同数量的电子邮件!!

票数 1
EN

Stack Overflow用户

发布于 2020-04-16 19:41:21

就像这样:

代码语言:javascript
运行
复制
//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/ }

你只发了一封邮件

票数 0
EN

Stack Overflow用户

发布于 2020-04-18 02:25:51

这将向多个收件人发送相同的电子邮件

代码语言:javascript
运行
复制
    //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.';
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61238301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档