如何在不使用插件的情况下设置WordPress SMTP
您是否在网站上使用了这么多插件,却又犹豫是否要再使用一个插件来设置 SMTP?那么本文正适合您!在这里我们晓得博客将向您介绍如何在不使用插件的情况下设置WordPress SMTP来发送和接收电子邮件。
![如何在不使用插件的情况下设置wordpress Smtp](https://www.pythonthree.com/wp-content/uploads/2024/07/1719971134-如何在不使用插件的情况下设置WordPress-SMTP.png)
SMTP 即简单邮件传输协议,是一种用于在发件人和收件人之间发送和接收外发电子邮件的邮件传输协议。发送电子邮件时,它会通过 SMTP 在互联网上从一台服务器传输到另一台服务器默认情况下,WordPress 配置为使用 PHP 邮件功能来处理电子邮件服务。但是 PHP 邮件功能配置不正确,一些服务提供商禁用此邮件功能以减少垃圾邮件。问题是大多数 WordPress 公司需要为其服务器适当配置 PHP 邮件。
为了增强 WordPress 的电子邮件功能,您可以为 WordPress 实现简单邮件传输协议或 SMTP 服务器。避免使用另一个插件来配置 WordPress 通过服务器。
推荐:Easy WP SMTP插件教程设置WordPress网站发送电子邮件
不使用插件的情况下在WordPress中配置SMTP
要在 WordPress 中手动配置 SMTP,您需要编辑两个文件,即 wp-config.php 和 function.php。
- WordPress 配置文件 (wp-config.php):此文件位于 WordPress 根目录下。您可以使用文件管理器、FTP 或 SSH 终端编辑此文件。
- Functions.php主题功能文件(功能文件):您可以在网站的主题文件夹下找到此文件。(强烈建议无论您进行什么更改,都应首先创建子主题,然后仅在子主题中进行必要的更改)。
当然,使用 SMTP 邮件插件有一定的优势。例如,设计良好的插件可能会提供有用的功能,如日志保留、能够使用备份邮件服务器,或者能够连接到某些邮件服务的 API 而不是 SMTP 端口。
查找SMTP提供商设置和凭证
查找电子邮件提供商的设置和您的凭据。此信息通常由您的电子邮件提供商或托管公司提供。您需要知道邮件服务器的主机名、端口号和要使用的加密类型。您还需要您的 SMTP 用户名和密码进行身份验证。
例如,Microsoft 提供了其Outlook SMTP 连接值,如下所示,请参阅“SMTP 设置”列(外贸行业参考)
![不使用插件的情况下在wordpress中配置smtp](https://www.pythonthree.com/wp-content/uploads/2024/07/1720002828-不使用插件的情况下在WordPress中配置SMTP.jpg)
在functions.php文件中添加自定义PHP代码
![在functions.php文件中添加自定义php代码](https://www.pythonthree.com/wp-content/uploads/2024/07/1720003640-在functions.php文件中添加自定义PHP代码.jpg)
将下面的代码添加到您通常嵌入代码片段的任何位置或者子主题的functions.php文件。如果您不确定它在哪里,请参阅我们关于向 WordPress 添加自定义代码的方法的文章。(当我们想要在没有插件的情况下设置快速功能时,最喜欢的管理代码片段的方式是使用Code Snippets插件。)
add_action( 'phpmailer_init', 'send_smtp_email' );
function send_smtp_email( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_HOST;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASSWORD;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_FROMNAME;
$phpmailer->Port = SMTP_PORT;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->SMTPSecure = SMTP_SECURE;
}
add_action
钩子添加了一个在 WordPress 发送电子邮件期间执行的函数,$phpmailer
函数中设置的值将send_smtp_email
phpmailer(WordPress 中发送电子邮件的默认库)的 SMTP 设置设置为 wp-config.php 中定义的常量的值,从而允许 WordPress 使用指定的 SMTP 服务器和凭据发送电子邮件。
推荐:WordPress函数apply_filters_deprecated()触发附加到已弃用的过滤器挂钩
在wp-config.php中添加SMTP配置
![在wp Config.php中添加smtp配置](https://www.pythonthree.com/wp-content/uploads/2024/07/1720003977-在wp-config.php中添加SMTP配置.jpg)
将这些定义添加到定义其他 WordPress 常量的文件部分,通常位于文件顶部附近。这样以后在需要时更容易理解和修改 SMTP 设置。我们 WordPress 网站使用 Microsoft Outlook 作为其 SMTP 电子邮件服务器,像这样设置我们网站的值wp-config.php
define( 'SMTP_HOST', 'smtp-mail.outlook.com' );
define( 'SMTP_USER', 'xiaodeblog@outlook.com' );
define( 'SMTP_PASSWORD', 'xiaodeblogoutlook.com' );
define( 'SMTP_FROM', 'xiao@pythonthree.com/' );
define( 'SMTP_FROMNAME', 'pythonthree.com' );
define( 'SMTP_PORT', '587' );
define( 'SMTP_AUTH', true );
define( 'SMTP_SECURE', 'STARTTLS' );
定义常量后,您可以在代码片段中使用它们来设置 WordPress,使其无需插件即可使用 SMTP。请记住在进行任何更改后保存 wp-config.php 文件。它在 wp-config.php 中如下所示:
注意:虽然可以通过将凭据放在一个地方避免使用两个单独的代码片段,但将它们放入 wp-config.php 中是一种更一致、更便携的解决方案。
推荐:怎么生成获取Google Translate API Key翻译网站
测试您的网站
测试电子邮件是否正常工作的最简单方法是使用 WordPress 登录屏幕中的“忘记密码”功能:
- 注销您的 WordPress 帐户或以隐身或私人模式打开新的浏览器窗口。
- 导航到您的 WordPress 登录页面
yourdomain.com/wp-login.php 或者
yourdomain.com/wp-admin
- 点击“忘记密码?”链接。
- 输入与您的用户帐户关联的电子邮件地址,或输入您的用户名,然后单击“获取新密码”按钮。
如果电子邮件设置正常运行,您应该会在指定地址收到一封密码重置电子邮件。这表明您的 WordPress 网站能够发送电子邮件。
推荐:WordPress配置SMTP发送电子邮件(Gmail邮箱)
通过代码发送WordPress电子邮件
如果您想从 WordPress 网站以编程方式发送电子邮件,可以使用该功能。与直接处理相比,此功能简化了发送电子邮件的过程,并允许您自定义电子邮件内容和标题。
使用 wp_mail() 函数,该函数接受以下参数:wp_mail()
$to
(必填):收件人的电子邮件地址。$subject
(必填):电子邮件的主题。$message
(必填):邮件内容。$headers
(可选):附加标头的数组或字符串。$attachments
(可选):要作为附件发送的文件路径数组。
以下是如何使用该函数的示例。如果您不需要地址或附件,只需删除以下几行:wp_mail()Reply-To
$to = 'recipient@example.com';
$subject = 'Email Subject';
$message = 'Hello, this is a test email from WordPress!';
$headers = array(
'From: My Website <website@example.com>',
'Reply-To: Reply Name <reply@example.com>',
'Content-Type: text/html; charset=UTF-8',
);
// Array of file paths to be attached
$attachments = array(
WP_CONTENT_DIR . '/uploads/file1.pdf', // Path to the first attachment
WP_CONTENT_DIR . '/uploads/file2.jpg', // Path to the second attachment
);
$send_email = wp_mail( $to, $subject, $message, $headers, $attachments );
if ( $send_email ) {
echo 'Email sent successfully with Reply-To and attachments.';
} else {
echo 'Email sending failed.';
}
推荐:[最新版]WP Rocket插件下载WordPress缓存插件
发送 HTML电子邮件
要发送 HTML 电子邮件,您需要将标题设置为。在以下示例中,数组包含具有当值的标题。您现在可以在电子邮件内容中使用 HTML 标签来设置电子邮件的样式和格式。
以下是发送 HTML 电子邮件的示例:
$to = 'recipient@example.com';
$subject = 'Email Subject';
$message = '
<html>
<head>
<title>Email from WordPress</title>
</head>
<body>
<h1>Hello!</h1>
<p>This is a test HTML email sent from WordPress!</p>
</body>
</html>';
$headers = array(
'From: My Website <website@example.com>',
'Reply-To: Reply Name <reply@example.com>',
'Content-Type: text/html; charset=UTF-8',
);
$send_email = wp_mail( $to, $subject, $message, $headers );
if ( $send_email ) {
echo 'HTML email sent successfully.';
} else {
echo 'Email sending failed.';
}
发送 HTML 邮件时,请记住在邮件内容中包含开头和结尾<html>
标签<body>
。这将确保在邮件客户端中正确呈现邮件。
请注意,按照前面几节的说明设置电子邮件配置后,使用此处演示的函数将自动使用您在文件中定义的 SMTP 设置和自定义 PHP 代码片段。这意味着当您使用 以编程方式发送电子邮件时,它们将通过您定义的 SMTP 服务器使用您提供的凭据发送。
遇到问题调试WordPress SMTP会话
有时,您可能会在使用 SMTP 服务器从 WordPress 网站发送电子邮件时遇到问题。在这些情况下,捕获整个 SMTP 会话可以帮助您识别 WordPress 服务器与远程 SMTP 服务器之间的对话中的任何异常或问题。此信息对于解决电子邮件发送问题非常有用。
要记录 SMTP 会话,我们需要深入研究该函数所能提供的内容。我们将更深入地研究 PHPMailer 库,这是 WordPress 用于发送电子邮件的默认库。要捕获 SMTP 会话并将其写入本地文件以便检查,您可以使用以下代码片段:
// Set the debug handler function to capture the entire SMTP session
$phpmailer->Debugoutput = function( $str, $level ) use ( $phpmailer ) {
// Create the smtp_logs directory within the wp-content folder if it doesn't exist
$log_dir = WP_CONTENT_DIR . '/smtp_logs';
if ( ! file_exists( $log_dir ) ) {
mkdir( $log_dir, 0755, true );
}
// Define the log file name with a unique identifier (current timestamp with microseconds)
$filename = $log_dir . '/smtp_log_' . date( 'Y-m-d_H-i-s' ) . '.log';
// Write the debug output to the log file
file_put_contents( $filename, $str );
};
$phpmailer
此代码片段为 WordPress 用于发送电子邮件的PHPMailer 实例 ( ) 设置自定义调试处理程序函数。该函数捕获整个 SMTP 会话,并将调试输出附加到本地文件,该文件具有基于当前日期和时间的唯一文件名(例如)。每个文件将保存一个单独的 SMTP 会话,以便于查看。在默认的 WordPress 设置中,您会在 下找到该文件。
要创建文件,代码片段将首先检查文件夹smtp_logs
中是否存在目录。如果不存在,该函数将使用指定的权限(在本例中为 0755)创建目录。然后,SMTP 会话的调试输出将附加到目录中的日志文件中。通过捕获和分析 SMTP 会话,您可以深入了解可能导致 WordPress 网站出现电子邮件发送问题的任何问题。这种高级调试技术可以帮助您解决电子邮件传递问题,并确保您的网站的电子邮件功能正常运行。
总结
但是,如果您只想设置一个简单的联系表单,并且希望完全避免处理 SMTP 设置,建议使用第三方表单处理服务,这可以简化流程,甚至提供额外的功能,例如与 Airtable 和 Mailchimp 等服务的无缝集成。如果您具备技术技能,则无需使用插件在 WordPress 中实现 SMTP。
推荐:WordPress轻量级迁移插件Better Search Replace迁移插件
推荐:如何使用Local by Flywheel设置WordPress本地开发环境