#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()
в цикле.