PHP 邮件程序多个收件人

PHP Mailer Multiple recipients

我正在使用 php 邮件程序来触发邮件。 它工作正常。但是我给了 2 到 5 个收件人,它只将邮件发送给一个收件人。将来,我必须触发一封邮件给近 100 个收件人.. 我在下面分享了我的代码..请检查..

 require 'phpmailer/PHPMailerAutoload.php'; 

    $mail = new PHPMailer;

    //$mail->SMTPDebug = 3;                               // Enable verbose debug output

    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'karthick****@gmail.com';                 // SMTP username
    $mail->Password = '********';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587;                                    // TCP port to connect to

    $mail->setFrom('karth*******@gmail.com', 'A**n');

    $addresses = explode(',',$emailM);
    foreach ($addresses as $address) {
        $mail->AddAddress($address);
    }


$mail->isHTML(true);                                  

$mail->Subject = 'Need for '.$keyword.'';
$mail->Body    = 'Hi,The Message';


if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Qoute has been sent to all the Manufacturers';
    echo "$address";

}

一个基本的想法是为您的每个邮寄地址建立不同的连接(对象),如下所示如果您的数组中没有那么多地址。

 require 'phpmailer/PHPMailerAutoload.php'; 

$addresses = explode(',',$emailM);
    foreach ($addresses as $address) {
    $mail = new PHPMailer;

    //$mail->SMTPDebug = 3;                               // Enable verbose debug output

    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'karthick****@gmail.com';                 // SMTP username
    $mail->Password = '********';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587;                                    // TCP port to connect to

    $mail->setFrom('karth*******@gmail.com', 'A**n');


        $mail->AddAddress($address);


$mail->isHTML(true);                                  

$mail->Subject = 'Need for '.$keyword.'';
$mail->Body    = 'Hi,The Message';


if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Qoute has been sent to all the Manufacturers';
    echo "$address";

 }

更新:

第二个想法是您可以每次删除收件人并添加新的收件人,然后像下面这样发送

require 'phpmailer/PHPMailerAutoload.php'; 

    $mail = new PHPMailer;

    //$mail->SMTPDebug = 3;                               // Enable verbose debug output

    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'karthick****@gmail.com';                 // SMTP username
    $mail->Password = '********';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587;                                    // TCP port to connect to

    $mail->setFrom('karth*******@gmail.com', 'A**n');

    $addresses = explode(',',$emailM);
    foreach ($addresses as $address) {

        // for clear last recipients

        $mail->ClearAllRecipients( ) 


        $mail->AddAddress($address);


        $mail->isHTML(true);                                  

           $mail->Subject = 'Need for '.$keyword.'';
           $mail->Body    = 'Hi,The Message';


        if(!$mail->send()) {
          echo 'Message could not be sent.';
          echo 'Mailer Error: ' . $mail->ErrorInfo;
       } else {
           echo 'Qoute has been sent to all the Manufacturers';
          echo "$address";

       }

 }

您的代码看起来应该可以解决问题。确保 $address 不包含条目的任何空格。为了安全起见,添加 trim() 功能。

$mail->AddAddress(trim($address));

如果这不起作用,请确保您的收件人地址是真实的。

此外,如果担心收件人的隐私,我建议您使用 AddBCC() 而不是 AddAddress() 这样他们的地址就不会泄露。