联系表格7有时不起作用

时间:2014-08-01 01:37:49

标签: wordpress

我的联系表7在某段时间内在其他工作中不起作用。

我收到消息: 无法发送您的消息。请稍后再试或通过其他方法与管理员联系

我试图调试它,发现CF7会调用wp_mail。

它将从联系表格7中调用此代码:

if ( $send ) {
    return @wp_mail( $recipient, $subject, $body, $headers, $attachments );
}

但这会返回错误。

让任何人都知道可能存在什么问题。

修改

当它调用wp_mail时,它将在wordpress代码的这一部分中抛出错误:

if (!$this->smtp->data($header . $body)) {
   throw new phpmailerException($this->lang('data_not_accepted'), self::STOP_CRITICAL);
}

修改

此数据函数将在第一行调用函数“sendComand”:

public function data($msg_data)
{
    if (!$this->sendCommand('DATA', 'DATA', 354)) {
        return false;
    }
    .....

在这个if ifment中会失败。

这是sendCommand函数:

protected function sendCommand($command, $commandstring, $expect)
{
    if (!$this->connected()) {
        $this->error = array(
            "error" => "Called $command without being connected"
        );
        return false;
    }
    $this->client_send($commandstring . self::CRLF);

    $reply = $this->get_lines();
    $code = substr($reply, 0, 3);

    if ($this->do_debug >= 2) {
        $this->edebug('SMTP -> FROM SERVER:' . $reply);
    }

    if (!in_array($code, (array)$expect)) {
        $this->last_reply = null;
        $this->error = array(
            "error" => "$command command failed",
            "smtp_code" => $code,
            "detail" => substr($reply, 4)
        );
        if ($this->do_debug >= 1) {
            $this->edebug(
                'SMTP -> ERROR: ' . $this->error['error'] . ': ' . $reply
            );
        }
        return false;
    }.......

并且这将在最后的if语句中失败,if(!in_array($ code,(array)$ expect)中的这个条件将为真。

所以$ expect是在sendCommand函数调用上提供的:

$this->sendCommand('DATA', 'DATA', 354)
(array)$expect) == Array([0] => 354)
我们将从get_lines()函数得到

和$ code:

 $reply = $this->get_lines();
 $code = substr($reply, 0, 3);

当$ reply失败时,下一个值为:

 $reply = 550 5.4.5 Daily sending quota exceeded. u1sm14669850qat.27 - gsmtp

这是get_lines()来源:

https://github.com/WordPress/WordPress/blob/master/wp-includes/class-smtp.php#L820

1 个答案:

答案 0 :(得分:2)

之前我遇到过这个问题,并通过使用此插件切换到gmail的smtp来解决它:

https://wordpress.org/plugins/wp-mail-smtp/faq/

您需要设置的只是一个Gmail帐户,如果这是一个客户/工作网站,您可以使用Gmail创建一个免费帐户,只需在插件设置中输入即可。