2017-01-10 101 views
1

我使用PHP邮件引发邮件。 它的工作正常。但我给了2到5个收件人,它只将邮件发送给一个收件人。今后,我要触发邮件到近100个收件人.. 我分享我下面的代码..请检查一下..PHP梅勒多个收件人

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"; 

} 
+1

是电子邮件地址,在'$地址'有效?您应该至少在每个foreach循环中添加调试消息。 – Raptor

+0

你确定它只发送给一个?你在最后回显'$ address',它只会包含你添加的最后一个地址,但是这个消息仍然会被发送到所有的地址(尽管你应该检查addAddress()的返回值是确定它正在工作)。 – Synchro

+0

我不认为你会以正确的方式去解决这个问题 - 最后给出“所有制造商”的文字,我很怀疑你是否真的想把它们全部添加到同一条消息中(他们将在哪里看到对方的地址)。你应该发送一个单独的消息给每一个。请参阅[PHPMailer提供的邮件列表示例](https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps)了解如何有效地完成此操作。 – Synchro

回答

-1

的基本思想是,为每个不同的连接(对象)如果您的阵列中没有太多地址,则您的邮寄地址如下

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"; 

} 

UPDATE:

第二个想法是,你可以删除受助每次添加新的一个,然后把像下面

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"; 

     } 

} 
+0

不要这样做。它会起作用,但是速度慢,浪费和低效。 – Synchro

+0

不,不是的。 PHP Mailer可以同时支持多个收件人。 – Raptor

+0

我知道了。但是当你不断地添加地址,然后发送它会显示在每个收件人中的所有收件人 –