”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 PHP 安全地传送电子邮件:使用 SMTP 发送无垃圾邮件的指南

使用 PHP 安全地传送电子邮件:使用 SMTP 发送无垃圾邮件的指南

发布于2024-11-08
浏览:622

Deliver Emails Safely with PHP: A Guide to Using SMTP for Spam-Free Emails

这是如何使用 PHP SMTP 发送电子邮件而不进入垃圾邮件文件夹的分步示例

我们将使用 PHPMailer 库,它简化了通过 SMTP 发送电子邮件的过程,并有助于提高送达率。按照以下步骤,您将了解如何正确配置 SMTP 以避免电子邮件进入垃圾邮件文件夹。

第1步:安装PHPMailer

首先,您需要安装PHPMailer库。您可以使用 Composer 来完成此操作。

composer require phpmailer/phpmailer

如果您没有 Composer,您可以从 GitHub 手动下载 PHPMailer 并将其包含在您的项目中。

第 2 步:创建 PHP 邮件脚本

创建一个新文件 send_email.php,您将在其中编写脚本以使用 PHPMailer 和 SMTP 发送电子邮件。

isSMTP();                                          // Use SMTP
    $mail->Host = 'smtp.example.com';                         // Set the SMTP server (use your SMTP provider)
    $mail->SMTPAuth = true;                                   // Enable SMTP authentication
    $mail->Username = '[email protected]';               // SMTP username
    $mail->Password = 'your_password';                        // SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;       // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587;                                        // TCP port to connect to (587 is common for TLS)

    //Recipients
    $mail->setFrom('[email protected]', 'Your Name');
    $mail->addAddress('[email protected]', 'Recipient Name');  // Add recipient
    $mail->addReplyTo('[email protected]', 'Reply Address');    // Add a reply-to address

    // Content
    $mail->isHTML(true);                                        // Set email format to HTML
    $mail->Subject = 'Test Email Subject';
    $mail->Body    = 'This is a test email sent using PHPMailer and SMTP.';
    $mail->AltBody = 'This is a plain-text version of the email for non-HTML email clients.';

    // Send the email
    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

逐部分细分:

  1. PHPMailer初始化:

    • 通过 Composer 包含必要的文件后,我们创建 PHPMailer 类的实例。
    • try-catch 块用于处理发送电子邮件时可能发生的任何异常。
  2. SMTP 服务器配置:

    • $mail->isSMTP() 告诉 PHPMailer 使用 SMTP 发送电子邮件。
    • $mail->Host = 'smtp.example.com':将 'smtp.example.com' 替换为您的 SMTP 提供商的主机(例如,Gmail 的 SMTP 是 'smtp.gmail.com')。
    • $mail->SMTPAuth = true:这将启用身份验证,这通常是 SMTP 服务器所需要的。
    • $mail->用户名和$mail->密码:在此处输入您的 SMTP 凭据。
    • $mail->SMTPSecure:这设置加密方法。为了安全起见,建议使用 TLS (STARTTLS)。
    • $mail->Port:常见的 SMTP 端口为 TLS 的 587 和 SSL 的 465。使用 SMTP 服务器所需的端口。
  3. 设置发件人和收件人:

    • $mail->setFrom('[email protected]', 'Your Name'): 指定发件人的电子邮件和姓名。
    • $mail->addAddress('[email protected]', '收件人姓名'): 添加收件人的电子邮件和姓名。
    • $mail->addReplyTo(): 设置回复电子邮件地址(可选)。
  4. 设置邮件内容:

    • $mail->isHTML(true): 指定电子邮件内容将为 HTML。
    • $mail->主题:设置电子邮件主题。
    • $mail->Body:这是电子邮件的 HTML 内容。
    • $mail->AltBody:这是电子邮件正文的纯文本版本,对于不支持 HTML 的电子邮件客户端很有用。
  5. 发送电子邮件:

    • $mail->send() 尝试发送电子邮件。如果成功,则打印成功信息;否则,错误将被捕获并显示。

步骤 3:SMTP 配置和最佳实践

为了避免电子邮件进入垃圾邮件文件夹,遵循以下最佳实践至关重要:

  1. 使用信誉良好的 SMTP 提供商:

    使用 Gmail、SendGrid 或 Mailgun 等受信任的 SMTP 提供商可以提高送达率,因为它们不太可能被标记为垃圾邮件。

  2. 验证您的域名:

    为您设置 SPF(发件人策略框架)、DKIM(域名密钥识别邮件)和 DMARC(基于域的邮件身份验证、报告和一致性)记录域来验证您的电子邮件的合法性。

  3. 避免垃圾内容:

    确保您的电子邮件内容干净且未被标记为垃圾邮件。避免过度使用全部大写、垃圾词(如“免费”、“获胜者”等)以及过多的链接。

  4. 使用纯文本替代:

    始终包含电子邮件的纯文本版本($mail->AltBody)。一些电子邮件客户端将纯 HTML 电子邮件标记为可疑。

  5. 发件人避免使用免费电子邮件服务

    使用您自己域中的专业电子邮件地址,而不是 Gmail、Yahoo 等免费服务,以避免被标记为垃圾邮件。

  6. 限制每封电子邮件的收件人数量:

    如果发送批量电子邮件,请使用适当的批量电子邮件服务,而不是在一封邮件中发送给多个收件人,以避免被标记为垃圾邮件。

第 4 步:运行脚本

将send_email.php文件上传到您的服务器并在浏览器中或通过命令行运行:

php send_email.php

如果配置正确,您将看到消息:

Message has been sent

如果有错误,会显示:

Message could not be sent. Mailer Error: {Error Message}

结论

通过使用PHPMailer和正确的 SMTP 设置,您可以确保您的电子邮件可靠发送,并且降低进入垃圾邮件文件夹的机会。这是一个快速摘要:

  1. 安装 PHPMailer 以简化使用 SMTP 发送电子邮件。
  2. 通过身份验证和加密正确配置 SMTP
  3. 使用正确的域验证(SPF、DKIM、DMARC)以提高送达率。
  4. 编写干净、非垃圾邮件的电子邮件内容并始终包含纯文本版本。
  5. 运行脚本并监控成功消息或错误日志。

此方法可确保更好的送达率并减少您的电子邮件被标记为垃圾邮件的机会。

欢迎关注我:

  • 领英
  • GitHub
版本声明 本文转载于:https://dev.to/mdarifulhaque/deliver-emails-safely-with-php-a-guide-to-using-smtp-for-spam-free-emails-12d4?1如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3