PHP邮件程序多个收件人
我正在使用php mailer进行邮件触发。 工作正常。但我给了2到5个收件人,它只向一个收件人发送邮件。在未来,我必须向近100个收件人发送一封邮件。。 我在下面分享了我的代码。。请检查一下PHP邮件程序多个收件人,php,email,phpmailer,Php,Email,Phpmailer,我正在使用php mailer进行邮件触发。 工作正常。但我给了2到5个收件人,它只向一个收件人发送邮件。在未来,我必须向近100个收件人发送一封邮件。。 我在下面分享了我的代码。。请检查一下 require 'phpmailer/PHPMailerAutoload.php'; $mail = new PHPMailer; //$mail->SMTPDebug = 3; // Enable verbose
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()
…而您的第二次编辑几乎与原始帖子相同,但是犯了和果酱一样的错误:)