我有一个php脚本,使用mail()发送我的消息。问题是它一直等到邮件收到确认后再继续...我想跳过这一步。有没有办法在默认情况下将其设置为true或者不等待等等?下面是我所指的代码部分。感谢。
if (file_exists($attachment)) {
sendmail_attach_new($email, $subject, $msg_text, $msg, $attachment, $mailheaders, "$from_name <$from_email>");
} elseif ($msg) {
if( ini_get('safe_mode') ){
mail($email, $subject, $msg, $mailheaders);
}else{
mail($email, $subject, $msg, $mailheaders, "-f$from_email");
}
} elseif ($msg_text) {
if( ini_get('safe_mode') ){
mail($email, $subject, $msg_text, $mailheaders);
}else{
mail($email, $subject, $msg_text, $mailheaders, "-f$from_email");
}
}
//update the mailing list for confirmation of sent mail
$sql = "update $tableMail set mid ='$mid' where id='$DATA[id]'";
sql_query($sql);
$logbuffer .= "Mailed: $email<br>";
$row++;
}
答案 0 :(得分:1)
您可以写入必须发送的堆栈邮件,并且cron运行的脚本可以发送
答案 1 :(得分:0)
简短回答:不。
顺便说一下,不要让你的脚本`safe_mode兼容。无论如何,任何仍然使用这种弃用的错误功能的主机都应该避免。
答案 2 :(得分:0)
你可以将你的邮件发送代码外部化到一个单独的php脚本,并使用exec()函数调用该脚本,在Unix平台上是这样的:
exec ("/usr/bin/php send-mail.php \"$from\" \"$to\" \"$subject\" \"$message\" >/dev/null &");
要使此后台进程执行平台独立,请使用以下代码:
function launchBackgroundProcess($commandLine) {
// Windows
if(PHP_OS == ‘WINNT’ || PHP_OS == ‘WIN32′) {
pclose(popen(’start /b ‘.$commandLine.”, ‘r’));
}
// Some sort of UNIX
else {
pclose(popen($commandLine.‘ > /dev/null &’, ‘r’));
}
return true;
}
请参阅此博客文章:http://w-shadow.com/blog/2007/10/16/how-to-run-a-php-script-in-the-background/