1

从现在开始,我一直在尝试让邮件脚本在实时服务器上运行。它在我的本地主机上按预期工作。

我也使用完全相同的外部 SMTP 服务器、相同的 PHP 源和相同的数据库表。PHP版本和MySQL版本在线和localhost是一样的。

我测试了一切。在没有物理发送过程的情况下,一切都像假装一样工作。它不发送(或接收)电子邮件。我还去找系统管理员让他检查是否有任何电子邮件被阻止或内部服务器错误,但这里也一切正常。

我真的尝试了我能想到的一切,但我没有发现问题。有人知道我接下来可以尝试什么吗?

物理发送的功能如下所示:

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 回答