gpt4 book ai didi

php - SwiftMailer Batch 电子邮件使我的服务器超时

转载 作者:可可西里 更新时间:2023-10-31 23:08:04 26 4
gpt4 key购买 nike

我意识到 batchEmail 不再是新 SwiftMailer 的一部分。所以我做了这个脚本:

<?
//
// GC PRESS EMAILER v5
//
ini_set('display_errors',1);
error_reporting(E_ALL);
require_once("config.php");
include_once("hawkmail/mail/lib/swift_required.php");
$c=mysql_connect($dbh,$dbu,$dbp);
function SendEmail(){
// DB
$s=mysql_query("SELECT * FROM `newgc`.`press_list`");
// Process Color Listing Loop
while($r=mysql_fetch_array($s)){
// ###########################
// START LOOP
// ###########################
$name=$r['name'];
$email=$r['email'];
$to=array(''.$email.''=>''.$name.'');
include("hawkmail/templates/press.php");
# Email subject
$str=$name;
$str=substr($str, 0, strrpos($str, ' '));
$subject='Dear '.$str.', you are invited to our Exclusive Party Collection Press Day!';
# send message
include("hawkmail/settings.php");
}
// ###########################
// END LOOP
// ###########################
}
SendEmail();
?>

数据库有 200 条记录。我运行了脚本,它发送了几封电子邮件,然后超时了

504 Gateway Time-out

nameemail 记录就像

约翰·史密斯John.smith@site.com

很简单。我的 hawkmail/settings.php 是这样的:

# mail
$smpturl="smtp.sendgrid.net";
$mailu="sitesitesite";
$mailp="sitessssssssssss";
$from=array("no-reply@site.com"=>"site.com");

# login credentials & setup Swift mailer parameters
$transport=Swift_SmtpTransport::newInstance($smpturl, 587);
$transport->setUsername($mailu);
$transport->setPassword($mailp);
$swift=Swift_Mailer::newInstance($transport);

# create a message (subject)
$message=new Swift_Message($subject);

# attach the body of the email
$message->setFrom($from);
$message->setBody($html, 'text/html');

$message->setTo($to);
$message->addPart($text, 'text/plain');

# actually send the message
if($recipients=$swift->send($message, $failures)){}else{}

是否有增加 PHP 超时限制的方法(我使用 Ubuntu 和 Nginx)或者是否有 BatchMail() 的替代方法真的不明白为什么它被删除了。

有人可以发布使用新的 swiftmailer 的批处理邮件脚本示例吗?

最佳答案

发送电子邮件是网上最复杂的事情。

它是第二大使用率最高的服务,也是最受滥用的服务。

我构建了自己的自定义电子邮件平台来发送批量电子邮件。

您遇到的超时是因为 Apache 和 PHP 执行限制。

您需要使用 set_time_limit (0);

将其作为 CLI 应用程序运行

php/path/to/app/script.php 直接在控制台中这样的东西。

如果您没有 SSH 访问权限,请像这样使用 shell_exec 运行它:

shell_exec("php /path/to/app/script.php > /dev/null 2>/dev/null &");

这将确保调用它的脚本在完成之前不会挂起。

关于php - SwiftMailer Batch 电子邮件使我的服务器超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com