我正在使用PHP邮件程序,它工作正常,除了我认为主机限制为每小时100。 以下是100发送后发出的调试信息。
服务器 - &gt;客户:550查询@ ** .me超出限速(100.2 / 1h)2014-04-30 19:01:30 SMTP错误:DATA命令失败:550查询@ ** < /strong>.me超出速率限制(100.2 / 1h)SMTP错误:不接受数据。 SMTP错误:不接受数据。
我需要发送大约1600封电子邮件(大约每两周发送一次),但无法找到如何在限制的情况下执行此操作。
有关如何执行此操作的任何建议,无需每小时手动返回并运行脚本,直到发送所有电子邮件。
希望这是发布此问题的正确位置,只有我用Google搜索并找不到任何简单的答案(除了联系主持人......)
如果有一个脚本方式,下面是我正在使用的代码
if($result = $user_obj->getAllNewsletterWhereActive($db)){
try {
// initiate object for mail and set smtp
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPKeepAlive = true;// keep the SMTP open (remember to close at end of script)
$mail->Host = "mail.******.me"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.******.me"; // sets the SMTP server
$mail->Port = 587; // set the SMTP port for the GMAIL server
$mail->Username = "enquiries@*******.me"; // SMTP account username
$mail->Password = "*******"; // SMTP account password
$mail->AddReplyTo('enquiries@******.me');
$mail->SetFrom('enquiries@******.me');
$mail->AddReplyTo('enquiries@******.me');
$mail->Subject = $Subject;
$mail->isHTML(true);
foreach($result as $row) {
// build simple unsubscribe link
$resetCode = base64_encode($row->NewsletterEmail);
$websiteLink = 'http://'.$_SERVER['HTTP_HOST'].'/unsubscribe.php?code='.$resetCode;
$mail->Timeout = 60; // set the timeout (seconds)
$mail->Body = $Message.'<br><br>Please click the below link to unsubscribe <br><a href="'.$websiteLink.'">Unsubscribe</a>'; //
$mail->AddAddress($row->NewsletterEmail);
// send email and output success or fail massage
if($mail->Send()){
$message .= 'Message Sent OK to '.$row->NewsletterEmail.'<br>';
}
else {
$error .= 'Message FAILED to '.$row->NewsletterEmail.'<br>';
}
// clear the address for the next loop
$mail->clearAddresses();
}
// close SMTP conncetion
$mail->SmtpClose();
}
catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
}
catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
}
else {
$error .= '<strong>Error! </strong>There was no email addresses returned or selected. please try again or contact support!<br>';
}
非常感谢任何建议!
答案 0 :(得分:2)
它是这样的:
那就是它! :)
PS :主机不太可能解除限制。您还可以查看Amazon SES,SendGrid,SMTP.com和此类服务。
答案 1 :(得分:0)
不确定这是否会对您有所帮助,但几个月前它为我解决了同样的问题 http://m.youtube.com/watch?v=tlqmbNtW_x8