WordPress 6.9 改进邮件发送功能,要求发件人地址和邮箱地址一致

免费用户福利小苹果影视 9.9元VIP黄金会员 解锁网站所有收费资源 付费影视软件终极三版本

先简单介绍一个邮件系统中的一个概念:发件人地址,也称为 Envelope-From、MAIL FROM 或者 Return-Path 等,它是其他邮件服务器在无法投递邮件时发送“退信”的地址。

自 WordPress 4.7.0 以来,该值由外发邮件服务器设置(默认使用 wordpress@home_url()),常常导致配置错误,这听起来似乎不是大问题,站点可能只是收不到投递失败的通知。

但由于防止垃圾邮件传播的发件人策略框架(SPF)​ 和 DMARC​ 系统的存在,它变成了一个更严重的问题,SPF 和 DMARC 系统旨在阻止垃圾邮件的传播,它们会完全拒绝这些邮件。

比如在 WordPress 6.9,使用 #WPJAM Basic# 的 SMTP 功能进行测试,就会报错,大概意思就是发件人地址和 SMTP 邮箱地址不一致:

WordPress 6.9 以可扩展的方式设置发件人地址:

如果邮件头中存在 From​ 地址,则使用该地址。
否则,默认使用 wordpress@home_url(),其中 home_url() 就是博客首页地址。
如果推断出的或默认的地址不正确,插件随后可以通过 wp_mail_from Filter 来过滤发件人地址。
所以我们需要在 #WPJAM Basic# 的 SMTP 扩展中加入一行:

add_filter(‘wp_mail_from’, fn()=> self::get_setting(‘user’));
然后 WordPress 就把把这个发件人地址设置成 SMTP 邮箱地址。

此外 WordPress 6.9 还修复了两个发信相关的问题,对于不太使用邮箱的同学来说,可能没有察觉到,这里简单提一下。

修复了邮件编码在多次调用间意外保持的问题

wp_mail()调用全局的 $phpmailer对象来实际发送邮件,这意味着在同一个 PHP 请求中的多次调用会共享某些状态。PHPMailer 类内部的逻辑会检查消息中的某些因素,用以设置或更改外发邮件的编码头。因为该对象是全局的,这些编码更改会持续存在,在某些情况下会应用到后续邮件中,导致阅读邮件时出现问题。

6.9 版本则改成在发送每封邮件之前,内部编码都会被重置,以便 PHPMailer 能够仅根据服务器配置和该特定消息的细节,为每封邮件发送适当的编码类型。

为多部分邮件分配了正确的内容类型

在过去的十七年里,WordPress 与 PHPMailer 在处理多部分消息时存在一个潜伏的 Bug,WordPress 向 PHPMailer 发送了损坏的 ContentType,在这些情况下,由于这个无效的内容类型,PHPMailer 会进一步损坏外发消息。在极少数情况下,这会导致重复的 Content-Type 头,但更常见的问题是破坏了多部分邮件的边界。

6.9 版本通过依赖 PHPMailer 自身的功能来设置内容类型,而不是(错误地)尝试手动指定该头,从而简化了之前的修复。

WPJAM Basic 会很快更新新版,让「SMTP 发信」功能兼容 WordPress 6.9。

 

在 WordPress 6.9 或任何其他版本中,确保邮件发送功能正常,尤其是发件人地址和邮箱地址一致,是保证邮件能够被正确识别和信任的关键。这里有几种方法可以改进或确保这一功能:

1. 使用 WP Mail SMTP 插件
‌WP Mail SMTP‌ 是一个非常流行的插件,它可以帮助你配置和自定义 WordPress 的邮件发送功能。通过 WP Mail SMTP,你可以设置一个一致的、专业的发件人邮箱地址。

安装和配置 WP Mail SMTP:
在 WordPress 后台安装并激活 WP Mail SMTP 插件。
在“设置” -> “WP Mail SMTP”中配置你的邮件发送方式。你可以选择使用 SMTP 服务(如 Gmail, SendGrid, Mailgun 等),或者配置本地邮件服务器。
在“邮件日志”选项中,确保“发件人电子邮件”和“发件人名称”字段填写正确。例如,如果你希望邮件显示来自 “info@yourdomain.com”,那么在“发件人电子邮件”中输入 “info@yourdomain.com”,在“发件人名称”中输入 “Your Site Name”。
2. 修改 wp-config.php 文件
如果你不想使用插件,可以通过修改 wp-config.php 文件来直接设置发件人地址。

示例代码:

define(‘WP_MAIL_FROM’, ‘info@yourdomain.com’);
define(‘WP_MAIL_FROM_NAME’, ‘Your Site Name’);
将上述代码添加到你的 wp-config.php 文件中,确保替换 ‘info@yourdomain.com’ 和 ‘Your Site Name’ 为你的实际邮箱地址和站点名称。

3. 使用 PHP 的 ini_set 函数
在某些服务器配置中,你也可以使用 PHP 的 ini_set 函数来设置发件人地址。虽然这种方法不如使用 WP Mail SMTP 插件那样直接和可靠,但在某些情况下可能有用。

示例代码:

ini_set(‘sendmail_from’, ‘info@yourdomain.com’);
将此行代码添加到你的主题的 functions.php 文件或者一个自定义的插件中。

4. 检查服务器配置
确保你的服务器配置允许通过 PHP 的 mail() 函数发送邮件。某些服务器可能需要额外的配置,比如正确设置 sendmail_path。你可以通过查看服务器的 PHP 配置文件(如 php.ini)来确认这些设置。

总结
推荐使用 WP Mail SMTP 插件,因为它提供了最简单和最可靠的方式来管理和自定义 WordPress 的邮件发送功能。确保发件人地址和邮箱地址一致,不仅可以提高邮件的可信度,还可以避免一些常见的邮件投递问题,如被标记为垃圾邮件。

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞13赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容