phpmailer循环发送邮件失败
本帖最后由 an5464684 于 2013-12-27 18:20:21 编辑 使用的是phpmailer,账户和密码均正确,并测试通过。
1.单次发送会成功
2.但是当编写一个循环发邮件时,只有第一次发送成功,后面的都发送失败,查看Log显示:Could not authenticate,验证没有通过。
这是什么原因?
<br />try <br />{<br /> $mail = new PHPMailer();<br /> $mail->IsSMTP(); // set mailer to use SMTP<br /> $mail->SMTPAuth = true; // turn on SMTP authentication <br /> $mail->SMTPDebug = 0;<br /><br /> $mail->Host = "smtp.126.com"; // specify main and backup server<br /> $mail->Port = 25;<br /> <br /> $mail->Username = "[email protected]"; // SMTP username<br /> $mail->Password = "******"; // SMTP password<br /><br /> $mail->From = $mail->Username;<br /> $mail->FromName = "myname";<br /> $mail->AddAddress("[email protected]", "toname");<br /><br /> $mail->WordWrap = 50; // set word wrap to 50 characters<br /> $mail->IsHTML(true); // set email format to HTML<br /><br /> $mail->Subject = "Here is the subject";<br /> $mail->Body = "This is the HTML message body <b>in bold!</b>";<br /> $mail->AltBody = "This is the body in plain text for non-HTML mail clients";<br /> <br /> if(!$mail->Send())<br /> {<br /> echo "Mailer Error: ".$mail->ErrorInfo; <br /> return false;<br /> }<br /> else <br /> {<br /> return true;<br /> }<br /><br /> <br />} catch (phpmailerException $e) <br />{<br /> echo "Send mail failed: ".$e->errorMessage();<br /> return false;<br />}<br />
登录后复制
------解决方案--------------------单次成功的话程序是没有问题的,因为你用的是126的邮件服务器那它肯定不会让你不间断的循环发送的,所以你可以再发送完成一封之后让程序sleep几秒钟
------解决方案--------------------一般来说,像qq、163、126等邮箱,他们不会允许你连续发送的,所以如果你要循环发送的话,可以sleep 几秒,但每发一封邮件sleep几秒,效率肯定不高,也可以同时给多个用户发送,然后sleep几秒
------解决方案--------------------<br /><?php<br /> set_time_limit(0);<br /> ini_set("max_execution_time", "18000000");<br /> include 'PHPMailer/class.phpmailer.php';<br /> $sendmail = '';//收件人<br /> $title='我要发邮件';<br /> $remark='这是邮件内容';<br /> $mailer=new PHPMailer();<br /> $mailer->CharSet = "utf-8";<br /> $mailer->ContentType = 'text/html';<br /> $mailer->IsSMTP();<br /> $mailer->SMTPDebug = 0;<br /> $mailer->SMTPAuth = true;<br /> $mailer->SMTPSecure = 'ssl';<br /> $mailer->Host = 'smtp.163.com';<br /> $mailer->Port = '465';<br /> $mailer->Username = '';//发件人邮箱<br /> $mailer->Password = 'xxx';//发件人密码<br /> $mailer->SetFrom('','');<br /> $mailer->AddAddress($sendmail);<br /> $mailer->Subject =$title;<br /> $mailer->MsgHTML($remark);<br /> for($i = 0; $i< 10; $i++){<br /> $mailer->send();<br /> sleep(3);<br /> }<br />?><br />
登录后复制
我试过是没有问题的。
------解决方案--------------------每次发送完一次,关闭一次。
查看phpmailer属性。
使用 Smtpclose();方法就可以了。