1

私は何時間も前から、ライブサーバーでメールスクリプトを動作させようとしています。私のローカルホストで意図したとおりに動作します。

私はまったく同じ外部SMTPサーバー、同じPHPソース、同じデータベーステーブルも使用しています。オンラインとローカルホストの PHP のバージョンと MySQL のバージョンは同じです。

私はすべてをテストしました。物理的な送信プロセスがなくても、すべてがふりをして機能します。電子メールを送信 (または受信) しません。また、システム管理者のところに行って、ブロックされた電子メールや内部サーバー エラーがないかどうかを確認してもらいましたが、ここでもすべて問題ありませんでした。

考えられるすべてのことを実際に試しましたが、問題は見つかりませんでした。次に何を試すことができるか考えている人はいますか?

これは、物理的な送信の関数がどのように見えるかです:

private function sendPhysical($sReciepient) {
    if ($oSmtpIn = fsockopen(SMTPSERVER, SMTPPORT)) {
        fputs($oSmtpIn, "EHLO " . SMTPSERVER . "\r\n");
        $aCodes["hello"] = fgets($oSmtpIn, 1024);

        fputs($oSmtpIn, "auth login\r\n");
        $aCodes["res"] = fgets($oSmtpIn, 1024);

        fputs($oSmtpIn, $this->encodeUser() . "\r\n");
        $aCodes["user"] = fgets($oSmtpIn, 1024);

        fputs($oSmtpIn, $this->encodePassword() . "\r\n");
        $aCodes["pass"] = fgets($oSmtpIn, 256);

        fputs($oSmtpIn, "MAIL FROM: <" . $this->sFrom . ">\r\n");
        $aCodes["From"] = fgets($oSmtpIn, 1024);

        fputs($oSmtpIn, "RCPT TO: <" . $sReciepient . ">\r\n");
        $aCodes["To"] = fgets($oSmtpIn, 1024);

        fputs($oSmtpIn, "DATA\r\n");
        $aCodes["data"] = fgets($oSmtpIn, 1024);

        fputs($oSmtpIn, $this->generateHeader($sReciepient) . "\r\n\r\n" . $this->returnCompiledTemplate() . "\r\n.\r\n");
        $aCodes["send"] = fgets($oSmtpIn, 256);

        fputs($oSmtpIn, "QUIT\r\n");
        fclose($oSmtpIn);
    } else {
        $aCodes["connection"] = false;
    }
    return $aCodes;
}

誰でも可能な解決策はありますか?ローカルホストで動作し、先週までオンラインサーバーで既に動作していたため、完全に混乱しています...

4

1 に答える 1

0

このコード ブロックの何が問題なのかを確認するのも非常に難しい作業ですが、PHP 経由でメールを送信する際に問題が発生したくない場合は、PHPMailer を試してください。

于 2013-01-21T10:51:55.547 に答える