我的联系表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
答案 0 :(得分:2)
之前我遇到过这个问题,并通过使用此插件切换到gmail的smtp来解决它:
https://wordpress.org/plugins/wp-mail-smtp/faq/
您需要设置的只是一个Gmail帐户,如果这是一个客户/工作网站,您可以使用Gmail创建一个免费帐户,只需在插件设置中输入即可。