Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP邮件程序多个收件人_Php_Email_Phpmailer - Fatal编程技术网

PHP邮件程序多个收件人

PHP邮件程序多个收件人,php,email,phpmailer,Php,Email,Phpmailer,我正在使用php mailer进行邮件触发。 工作正常。但我给了2到5个收件人,它只向一个收件人发送邮件。在未来,我必须向近100个收件人发送一封邮件。。 我在下面分享了我的代码。。请检查一下 require 'phpmailer/PHPMailerAutoload.php'; $mail = new PHPMailer; //$mail->SMTPDebug = 3; // Enable verbose

我正在使用php mailer进行邮件触发。 工作正常。但我给了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";

 }
更新:

第二个想法是,您可以每次删除Recipient并添加新的,然后发送,如下所示

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()
,这样他们的地址就不会被泄露。

$addresses
中的电子邮件地址是否有效?您至少应该在每个foreach循环周期中添加调试消息。您确定它只发送到一个循环吗?您在最后回显了
$address
,它只会包含您添加的最后一个地址,但消息仍会发送给所有人(尽管您应该检查
addAddress()
的返回值以确保它正常工作)。鉴于“所有制造商”,我认为您的做法不对文本结尾,我很怀疑您是否真的想将它们全部添加到同一条消息中(它们都将看到彼此的地址)。你应该给每个人发送一条单独的消息。有关如何有效执行此操作的信息,请参阅。
$addresses
/
$emailM
看起来像什么?$emailM显示email1@gmail.comemail2@gmail。comemail3@gmail.com.... $地址显示email1@gmail.com..Don“不要那样做。它会起作用,但速度慢、浪费、效率低。不,不是真的。PHP Mailer可以同时支持多个收件人。我就知道这一点。但是,当您不断添加地址,然后发送时,它会显示ReceipentSeven中的所有Receipent,您仍然会增加开销,这仅仅是因为您不喜欢调用
clearAddresses()
…而您的第二次编辑几乎与原始帖子相同,但是犯了和果酱一样的错误:)