首頁  >  文章  >  後端開發  >  phpmailer循环发送邮件失败解决方法

phpmailer循环发送邮件失败解决方法

WBOY
WBOY原創
2016-06-13 11:48:431013瀏覽

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&#160;protected]";  // SMTP username<br />	$mail->Password = "******"; // SMTP password<br /><br />	$mail->From = $mail->Username;<br />	$mail->FromName = "myname";<br />	$mail->AddAddress("[email&#160;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();方法就可以了。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn