【问题标题】:Sendmail sending to multiple addresses but in seperate emailsSendmail 发送到多个地址,但在单独的电子邮件中
【发布时间】:2017-07-27 05:39:22
【问题描述】:

我正在尝试向多个地址发送多封单独的电子邮件。下面的代码在 1 封带有多个收件人地址的电子邮件中发送它。这成为一个问题,因为电子邮件中的每个人都可以看到彼此的电子邮件地址。

有没有办法单独发送电子邮件?

<?php

$smtp       = 'xxx.com';
$port       = 25;
$secure     = 'tls';

$username   = 'test@xxx.com';
$pass       = '';
$from       = 'test@xxx.com';
$to         = 'info@xxx.com';
$to1        = '';
$subject    = 'Test Email';
$content    = $mail_content;

require_once("include/class.phpmailer.php");
$mail=new PHPMailer(true);
$mail->IsSMTP();
try{
    $mail->Host         = $smtp;
    $mail->SMTPAuth     = true;
    $mail->Port         = $port;
    $mail->SMTPSecure   = $secure;
    $mail->Username     = $username;
    $mail->Password     = $pass;
    $mail->SetFrom($from);

    if (isset($email) && $email) {
        $mail->AddAddress($email);
    }
    else {
        while($row = mysqli_fetch_object($result)) {
            $mail->AddAddress($row->email);
            echo $row->email."<br>";
        }
    }

    $mail->Subject      = $subject;
    $mail->MsgHTML($content);
    $mail->Send();

    if (isset($email) && $email) {
?>
        <script>location.href="<?php echo '../index.php' . $_REQUEST['redirect']; ?>";</script>

<?php
    }
}
catch (phpmailerException $e){
    echo $e->errorMessage();
}
catch (Exception $e){
    echo $e->getMessage();
}

?>

【问题讨论】:

  • 您可以遍历所有电子邮件地址并为循环的每次迭代发送邮件,而不是只为循环的每次迭代添加地址。
  • 您能分享一下如何做到这一点吗?谢谢。
  • 在下面查看我的答案

标签: php sendmail


【解决方案1】:

您有一个循环检查所有电子邮件地址,然后将电子邮件地址分配给$mail-&gt;AddAddress()

在同一循环中,您需要做的就是在循环的每次迭代中发送带有$mail-&gt;Send(); 的电子邮件

//PHPmailer object
$mail=new PHPMailer(true);

//set up
$mail->IsSMTP();
$mail->Host         = $smtp;
$mail->SMTPAuth     = true;
$mail->Port         = $port;
$mail->SMTPSecure   = $secure;
$mail->Username     = $username;
$mail->Password     = $pass;
$mail->SetFrom($from);
$mail->Subject      = $subject;
$mail->MsgHTML($content);

//add address
if (isset($email) && $email) {
    $mail->AddAddress($email);
}
else {
    //loop through the DB results 
    while($row = mysqli_fetch_object($result)) {

        //you already have this
        $mail->AddAddress($row->email);
        echo $row->email."<br>";

        //now send it here as well
        $mail->Send();

        //Do more stuff here
    }
}

我尚未在本地系统上对此进行测试,但这是为每个地址单独发送邮件的一种方法,可以替代发送一封邮件并使用bcc

【讨论】:

    【解决方案2】:

    在密件抄送中发送电子邮件。

    看这里的例子:

    PHP Email sending BCC

    【讨论】:

    • 感谢之前使用过这个,但它看起来不专业,因为电子邮件看起来像垃圾邮件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 2011-03-14
    • 1970-01-01
    相关资源
    最近更新 更多