как отправлять несколько электронных писем в моем коде?

#php #email #smtp

#php #Адрес электронной почты #smtp

Вопрос:

Мне нужно отправить электронное письмо нескольким получателям, но я получаю ошибку в своем коде. Мне нужно отправить электронное письмо нескольким получателям.

 <?php    
require 'phpmailer/PHPMailerAutoload.php';

if(isset($_POST['send']))
{
  $email = $_POST['email'];                    
  $password = $_POST['password'];
  $to_id = $_POST['toid'];
  $message = $_POST['message'];
  $subject = $_POST['subject'];

  $mail = new PHPMailer;

  $mail->isSMTP();

  $mail->Host = 'mail.domain.com';

  $mail->Port = 587;

  $mail->SMTPSecure = 'tls';

  $mail->SMTPAuth = true;

  $mail->Username = $email;

  $mail->Password = $password;

  $mail->setFrom('info@domain.com', 'name');

  $mail->addReplyTo('info@domain.com', 'name');

  $mail->addAddress($to_id);

  $mail->Subject = $subject;

  $mail->msgHTML($message);

  if(!$mail->send()) {
    $error = "Mailer Error: " . $mail->ErrorInfo;
  ?>
    <script>alert('<?php echo $error ?>');</script>
  <?php
  } 
  else {
    echo "Message Sent Successfully";
  }
}
?>
  

Комментарии:

1. где у вас есть список нескольких получателей?

2. Пожалуйста, также сообщите нам, что это за сообщение об ошибке.

3. есть ли у вас электронные письма, разделенные запятыми в $_POST['email'] или $_POST['toid'] ?

4. я думаю, что это $_POST['toid'] ваше поле электронной почты, у вас есть значения, разделенные запятыми, или массив?

5. теперь у вас есть несколько решений, вы пробовали

Ответ №1:

Попробуйте этот код.

 require 'PHPMailer/PHPMailerAutoload.php';
function SendPHPMail($to, $from, $subject, $htmlContent, $attachments = array())
    {
        $mail = new PHPMailer;
        $mail->isSMTP();
        $mail->Host = 'smtp.gmail.com';
        $mail->SMTPAuth = true;
        $mail->Username = 'emailAddress@gmail.com'; 
        $mail->Password = 'password';
        $mail->SMTPSecure = 'tls';
        $mail->Port = 25;
        $mail->SMTPOptions = array(
                'ssl' => array(
                        'verify_peer' => false,
                        'verify_peer_name' => true,
                        'allow_self_signed' => true
                )
        );

        $mail->From = 'emailAddress@gmail.com'; //sender emailAddress
        $mail->FromName = 'name'; //sender name

        //Here $to has multiple emailAddress
        //$to = array('address1@domain.com','address2@domain.com','address3@domain.com');
        if(!empty($to)){
            foreach($to as $emailAddress){
                $mail->addAddress($emailAddress);
            }
        } else{
            throw new Exception('No emails found!');
        }

        if(!empty($attachments)){
            foreach($attachments as $attachment){
                $mail->addAttachment($attachment);
            }
        } 

        //$mail->addCC();

        $mail->WordWrap = 50;
        $mail->isHTML(true);

        $mail->Subject = $subject;
        $mail->Body    = $htmlContent;

         if(!$mail->send()) {
            throw new Exception($mail->ErrorInfo);
        } 
    }
  

Ответ №2:

вместо $mail->addAddress($to_id); используйте что-то вроде этого:

 $mail->addAddress("peter@doe.com , hannes@mail.com , manuel@domain.com", "...");
  

Ответ №3:

Вы можете использовать просто так:

 $mail->AddAddress('email1@domain.com', 'First Email');
$mail->AddAddress('email2@domain.com', 'Second Email');
  

Или, если у вас есть электронные письма в виде массива $_POST['toid'] , вы можете использовать AddAddress() в цикле.