【问题标题】:How can I enable mail in Wordpress?如何在 Wordpress 中启用邮件?
【发布时间】:2014-09-10 12:55:02
【问题描述】:

我在我的 Windows 8 桌面上使用 Apache 2.2.25 和 PHP 5.3.28。有一次,当我恢复我的 wordpress 密码时,我收到了这个错误:

无法发送电子邮件。可能原因:您的主机可能禁用了 mail() 功能。

我用谷歌搜索了如何启用 mail() 功能,发现我需要在我的服务器上配置一个邮件服务器。我下载了 hMailServer,但它没有用...请帮助我如何启用 mail() 功能?我必须下载哪个邮件服务器?

【问题讨论】:

  • 您收到的确切错误信息是什么?
  • 我收到此错误:无法发送电子邮件。可能原因:您的主机可能禁用了 mail() 功能。
  • 这是一条 Wordpress 消息,而不是 PHP 消息。我已将信息编辑到问题中并发布了(希望有用的)答案。

标签: php wordpress


【解决方案1】:

正如我posted here:

这是一个超级烦人的错误消息,因为它可能是很多的东西,它并没有揭示实际的错误(这通常在代码的其他部分被忽略)。

wp_mail() 函数返回 false 时会出现此错误,而 phpmailer->Send() 返回 false 或引发异常时可能会发生此错误。


如何显示来自 PHP 的 mail() 函数的警告

这些通常在默认情况下被静音,不幸的是 WordPress 从未捕获它们。要显示它们,只需在 mailPassthru() 函数的 @mail(... 中删除 @ 符号即可:

if (ini_get('safe_mode') || !($this->UseSendmailOptions)) {
    $rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header);
} else {
    $rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header, $params);
}


如何寻找其他可能的原因:

  1. /wp-includes/pluggable.php 中的wp_mail() 底部添加一行:

    // Send!
    try {
        return $phpmailer->Send();
    } catch ( phpmailerException $e ) {
        //------------- This next line is the one to add -------------------
        if (WP_DEBUG) echo '<pre>' . esc_html(print_r($e, TRUE)) . '</pre>';
        return false;
    }
    
  2. 它将转储引发异常的位置的完整详细信息。不幸的是,它有时会包含这个无用的异常消息:“无法实例化邮件功能”。是的,谢谢 WordPress,这真的很有帮助。

  3. 通过查看异常,您可以找到错误的行号,并有望通过代码追溯它以找到真正的原因。

祝你好运。希望 WordPress 在未来的某个时候改进电子邮件错误处理。

【讨论】:

  • 我们可以在哪里为 wordpress 中的默认邮件发送帐户提供主机 SMTP 详细信息?
【解决方案2】:

我遇到了同样的问题,但我在 WordPress 的任何建议中都找不到任何解决方案。

然后我开始调查是否是 PHP 安装本身禁用了邮件功能,但这些都不起作用。一切看起来都配置正确。

当我将服务器升级到使用 SELinux(安全增强型 Linux)的 CentOS 7 后,所有这些问题都开始了,而我在过去几周使用 SELinux 学到的是,如果某些东西不起作用,但是一切看起来都应该正常运行……这意味着 SELinux 会在后台默默地、秘密地阻止你。

还有中提琴。

如果您正在运行和使用 SELinux 的操作系统,只需以 root 身份执行以下命令:

setsebool -P httpd_can_sendmail=1

有一个安全设置可以阻止网络服务器发送电子邮件。当你拨动那个开关并告诉 SELinux 网络服务器可以发送电子邮件时,一切都突然正常了。

【讨论】:

    【解决方案3】:

    它叫做 -Manage Registered Email-Ids For Sending Mails by Scripts(Wordpress)

    1. 登录您的 Cpanel。
    2. 转到电子邮件部分 > 然后单击注册的电子邮件 ID。
    3. 然后添加 (wordpress@yourdomain.com) 或您的 wordpress 托管位置。即(wordpress@blog.yourdomain.com)。然后提交,激活需要几分钟,等待 15 分钟到 1 小时,具体取决于您的托管服务提供商。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 2014-02-19
      • 2015-05-16
      • 2014-11-29
      相关资源
      最近更新 更多