主页/WordPress笔记/博客文章/综合文章/如何使用免费SMTP服务器发送WordPress邮件(3种方法)

如何使用免费SMTP服务器发送WordPress邮件(3种方法)

Bug编译狮

Bug编译狮

如何使用免费SMTP服务器发送WordPress邮件

方法一:使用PHP的mail()函数

首先,你需要确保你的网站上已经启用了SMTP功能,并且设置了一个有效的SMTP服务器地址和端口号。

  1. 检查SMTP设置

    • 打开wp-config.php文件,找到以下行并修改为正确的SMTP配置:
      define('SMTP_HOST', 'smtp.example.com');
      define('SMTP_PORT', 587);
      define('SMTP_USERNAME', '');
      define('SMTP_PASSWORD', '');
  2. 添加PHPMailer库: 如果你还没有安装PHPMailer,请通过以下命令安装:

    composer require phpmailer/phpmailer
  3. 创建邮件类: 在你的主题文件或任何需要发送邮件的地方创建一个新的类来处理邮件发送。

    class Mailer {
       public function sendEmail($to, $subject, $body) {
           // 创建一个新的PHPMailer实例
           $mail = new PHPMailer();
    
           // 设置SMTP属性
           $mail->isSMTP();
           $mail->Host = SMTP_HOST;
           $mail->Port = SMTP_PORT;
           $mail->SMTPAuth = true;
           $mail->Username = SMTP_USERNAME;
           $mail->Password = SMTP_PASSWORD;
           $mail->setFrom(SMTP_USERNAME, "Your Name");
    
           // 添加收件人
           $mail->addAddress($to);
    
           // 邮件标题
           $mail->Subject = $subject;
    
           // 发送邮件正文
           $mail->Body    = $body;
           $mail->AltBody = strip_tags($body);
    
           // 验证邮件是否成功发送
           if(!$mail->send()) {
               return false;
           } else {
               return true;
           }
       }
    }
  4. 调用发送函数: 使用你创建的Mailer类发送邮件。

    $mailer = new Mailer();
    $result = $mailer->sendEmail("recipient@example.com", "Test Email", "This is a test email.");
    
    if ($result) {
       echo "Email sent successfully!";
    } else {
       echo "Failed to send email.";
    }

方法二:使用PHPMailer库发送HTML格式的邮件

如果你需要发送带有HTML格式的邮件,可以稍微调整上面的代码以适应需求。

方法三:使用第三方服务如SendGrid

对于更高级的需求,你可以考虑使用像SendGrid这样的第三方服务来简化邮件发送过程。SendGrid提供了一套API来控制邮件发送,包括SMTP认证等。

  1. 注册并获取API密钥: 登录SendGrid官网,注册账号并下载API密钥。

  2. 在WordPress中集成SendGrid: 按照SendGrid提供的文档逐步集成SendGrid到你的WordPress项目中。

  3. 发送邮件: 使用SendGrid API发送邮件,无需手动配置SMTP服务器。

这些方法可以帮助你在WordPress环境中有效地使用SMTP服务器发送邮件。选择适合你的具体需求的方法即可。

黑板前的Bug语法讲师

黑板前的Bug语法讲师

课程目标

本课程将介绍三种不同的方式来使用免费 SMTP 服务器向 WordPress 邮件列表发送电子邮件。这些方法适用于那些希望利用自己的 SMTP 服务而非付费 SMTP 服务的人。

目录

  1. 使用 PHP 发送邮件
  2. 使用 Python 发送邮件
  3. 使用 Perl 发送邮件

方法一:使用 PHP 发送邮件

步骤 1: 安装 PHPMailer 库

首先,你需要安装和配置 PHPMailer 库。PHPMailer 是一个非常强大的邮件发送库,可以处理各种复杂的邮件格式和选项。

sudo apt-get update
sudo apt-get install php5-mysql php5-curl php5-gd php5-xml php5-zip php5-pear libzip-dev libxml2-dev php5-xmlrpc php5-tidy

步骤 2: 创建 PHPMailer 实例

创建一个新的 PHP 文件,例如 mail.php,并添加以下代码:

<?php
require 'vendor/autoload.php'; // 加载 PHPMailer 库
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

// 初始化 PHPMailer
$mail = new PHPMailer(true);

try {
    // 设置 SMTP 服务器信息
    $mail->isSMTP();
    $mail->Host       = 'your-smtp-server.com';
    $mail->SMTPAuth   = true; // 开启 SMTP 认证
    $mail->Username   = 'your-email@example.com';
    $mail->Password   = 'your-password';
    $mail->Port       = 587; // 使用端口 587
    $mail->setFrom('your-email@example.com', 'Your Name'); // 指定发件人邮箱和名称

    // 设置收件人信息
    $mail->addAddress('recipient@example.com');

    // 添加邮件正文
    $mail->isHTML(true);
    $mail->Subject = 'Hello, World!';
    $mail->Body    = '<strong>Hello, World!</strong>';
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}

if ($mail->send()) {
    echo "Message has been sent";
} else {
    echo "Message could not be sent. Mailer Error: " . $mail->ErrorInfo;
}
?>

在这个例子中,我们使用了 Gmail SMTP 服务器作为 SMTP 服务器,但你可以根据需要选择其他 SMTP 服务器。确保替换上述字段为实际的 SMTP 服务器、用户名、密码以及收件人的电子邮件地址。

方法二:使用 Python 发送邮件

步骤 1: 安装所需库

首先,确保已安装 Python 和 Django。然后,安装 Django 的 Email App,它提供了一个简单的 API 来发送电子邮件。

pip install django
pip install django-mail

步骤 2: 在 Django 项目中设置

settings.py 文件中启用 EMAIL_BACKEND 并指定 SMTP 服务器:

import os
from dj_database_url import parse as dburl

# Database
DATABASES['default']['ENGINE'] = os.getenv("DB_ENGINE", "django.db.backends.postgresql")
DATABASES['default']['NAME'] = os.getenv("DB_NAME", "mydatabase")
DATABASES['default']['USER'] = os.getenv("DB_USER", "myuser")
DATABASES['default']['PASSWORD'] = os.getenv("DB_PASSWORD", "mypassword")
DATABASES['default']['HOST'] = os.getenv("DB_HOST", "db")
DATABASES['default']['PORT'] = os.getenv("DB_PORT", "5432")

# Django settings
DEBUG = True
ALLOWED_HOSTS = ['*']
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'  # 改为你的Gmail SMTP服务器
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your-email@example.com'
EMAIL_HOST_PASSWORD = 'your-password'
EMAIL_FROM_ADDRESS = 'your-email@example.com'
EMAIL_FROM_NAME = 'Your Name'

方法三:使用 Perl 发送邮件

步骤 1: 安装 Perl 编译器和 Perl 命令行工具

确保有 Perl 编译器和命令行工具(如 perl)。如果未安装,请从 Perl 官方网站下载并安装。

步骤 2: 编写发送邮件脚本

编写一个Perl脚本,使用 Mail::Sender 这个模块发送邮件。注意,Perl 不支持 HTML 格式的邮件,因此我们需要手动创建文本版的 HTML。

#!/usr/bin/perl
use strict;
use warnings;
use Mail::Sender::Transport::SMTP;
use Mail::Sender::Transport::SMTP::TLS;

my $transport = Mail::Sender::Transport::SMTP->new(
    host     => 'smtp.example.com',
    port     => 587,
    username => 'your-email@example.com',
    password => 'your-password',
    tls      => 1,
    starttls => 1,
);

my $message = <<'END_MESSAGE';
<html>
<body>
<h1>Hi there!</h1>
<p>This is a test email.</p>
</body>
</html>
END_MESSAGE

$transport->send($message);

print "Email sent successfully.n";

结论

通过以上三种方法中的任何一种,都可以轻松地使用免费 SMTP 服务器向 WordPress 邮箱列表发送电子邮件。每种方法都有其特定的优势和适用场景,可以根据具体需求选择最合适的方法。