1
我有以下代码作为我们的邮件发送脚本使用phpmailer的一部分。如何在此脚本中发送的每封电子邮件之间添加等待?
<?php
$email_content = ob_get_contents();
ob_get_clean();
//$sql = mysql_query("SELECT email FROM oc_customer");
//sendMail($sql , 'email' , $email_content);
$sql = mysql_query("SELECT email FROM oc_customer");
sendMail($sql , 'email' , $email_content);
//$sql = mysql_query("SELECT * FROM test WHERE Subscribe=1");
//sendMail($sql , 'email' , $email_content);
function sendMail ($sql_response , $column_name , $email_content)
{
while($row = mysql_fetch_array($sql_response))
{
$mail = new PHPMailer;
// $mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Mailer = "smtp";
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'password'; // SMTP password
$mail->SMTPSecure = 'TLS';
// Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
$mail->setFrom('[email protected]', 'mydomain.com');
$mail->addAddress($row[$column_name] , 'Subscriber');
// $mail->addAddress($row[$column_name] , 'Subscriber'); // Add a recipient
// $mail->addAddress('[email protected]'); // Name is optional
// $mail->addReplyTo('[email protected]', 'Information');
// $mail->addCC('[email protected]');
// $mail->addBCC('[email protected]');
// $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
$mail->isHTML(true); // Set email format to HTML
$mail->CharSet = "UTF-8";
$mail->Subject = 'PROMO sólo Hoy';
$body = $email_content;
$body .= '<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<center><p style="color:gray;font-size:10px;"> Para no recibir mas promos , haga click <a href="mydomain.com/unsubscribe.php">aquí</a></p></center>
</body>
</html>';
$mail->Body = $body ;
// $mail->AltBody = 'Aprovecha la promo del día.';
$mail->WordWrap = 50;
if(!$mail->send())
{
echo 'Message could not be sent.' . 'Mailer Error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent to ' . $row[$column_name] . '<br>';
}
}
}
?>
如何添加sleep()以使每个电子邮件之间停顿20秒?我试图添加它,但似乎我没有选择正确的地方添加它。感谢您的帮助
如果您正在编写新代码,** _ please_不要使用'mysql_ *'函数**。它们比较老,破损,在PHP 5.5中已经被弃用了(它已经很旧了,它甚至不再接收安全更新),并且在PHP 7中完全删除。使用['PDO'](https://secure.php.net/manual /en/book.pdo.php)或['mysqli_ *'](https://secure.php.net/manual/en/book.mysqli.php)替换为_prepared statements_和_parameter binding_。有关详细信息,请参阅http://stackoverflow.com/q/12859942/354577。 – Chris
“我尝试添加它,但看起来我没有选择正确的位置来添加它。”你试过把它放在哪里? – Chris
确保不要超过脚本最大运行时间,否则脚本将在发送所有邮件之前死亡。 Personnaly我会将这些电子邮件存储在数据库中并循环发送脚本。或者,您也可以使用带有JavaScript刷新的网页来循环播放所有电子邮件中的脚本。 –