2017-01-10 2 views
1

메일 트리거에 php 메일러를 사용하고 있습니다. 잘 작동합니다. 하지만 2 ~ 5 명의 수신자에게 메일을 하나의받는 사람에게 보냅니다. 미래에, 나는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-loop 사이클마다 디버그 메시지를 추가해야합니다. – Raptor

+0

하나만 보내는 것이 확실합니까? 마지막에 추가 한 마지막 주소 만 포함하는'$ address'를 반향시키고 있지만 여전히 모든 메일에 메시지가 전송됩니다 (그러나'addAddress()'의 반환 값을 확인해야합니다). 그것이 작동하는지). – Synchro

+0

나는 올바른 방법으로 이것에 대해 생각하지 않는다. - 결국 "모든 제조사"텍스트가 주어 졌을 때, 나는 당신이 정말로 그들 모두를 같은 메시지에 추가하고 싶어하는 지 의심 스럽다. 서로의 주소를보십시오). 각각 별도의 메시지를 보내야합니다. 효율적으로 수행하는 방법은 [PHPMailer와 함께 제공되는 메일 링리스트 예제] (https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps)를 참조하십시오. – Synchro

답변

-1

기본 아이디어는 그 각각에 대해 다른 연결 (객체)를 만드는 것입니다 .. 그것을 확인하시기 바랍니다 .. 내가 아래에있는 내 코드를 공유했습니다 .. 거의 100 수신자에게 을 메일을 트리거 할 수 있습니다 배열에 주소가 너무 많지 않은 경우 우편 주소가 과 같습니다.

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 메일러는 동시에 여러 수신자를 지원할 수 있습니다. – Raptor

+0

나는 그것을 알고 있었다. 하지만 주소를 계속 추가 한 다음 전송하면 각 수신자의 모든 수신자가 표시됩니다. –