如何让mail()等待确认(true)

时间:2011-02-26 21:34:43

标签: php email

我有一个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++;
}

3 个答案:

答案 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/