Php SMTP邮件发送仅适用于本地

时间:2013-01-21 10:47:33

标签: php email smtp send

我现在正在努力让mailscript在现场服务器上工作。它在我的localhost上按预期工作。

我使用完全相同的外部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;
}

有人可能的解决方案吗?我完全感到困惑,因为它适用于localhost,它已经在网上服务器工作,直到上周......

1 个答案:

答案 0 :(得分:0)

看到这段代码有什么问题也很棘手但是如果你不想在通过php发送邮件时遇到太多麻烦,那就试试PHPMailer。