2017-01-10 131 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

我知道了。但是當你不斷地添加地址,然後發送它會顯示在每個收件人中的所有收件人 –