0

0

聊聊Mailtrap怎么整合PHP邮件

藏色散人

藏色散人

发布时间:2022-11-23 16:45:00

|

6594人浏览过

|

来源于juejin

转载

本文给大家介绍有关整合php邮件的问题,php是当今最流行的网络开发编程语言之一,公司向用户发送邮件,通知他们新产品,如促销邮件或与员工沟通。下面就给大家详细介绍怎么在php中集成流行的mailtrap平台来发送多封邮件,希望对需要的朋友有所帮助~

聊聊Mailtrap怎么整合PHP邮件

使用Mailtrap整合PHP邮件

PHP是当今最流行的网络开发编程语言之一。公司向用户发送邮件,通知他们新产品,如促销邮件或与员工沟通。

在本教程中,我们看看如何在我们的PHP中集成流行的Mailtrap平台来发送多封邮件。【推荐学习:PHP视频教程

前提条件

要跟随本教程,你需要具备以下条件。

立即学习PHP免费学习笔记(深入)”;

  • PHP的基本概念,最好是PHP8.0。

  • 简单邮件传输协议(SMTP)的基本概念。

  • 一个mailtrap账户。

目标

在本教程结束时,你应该能够将Mailtrap集成到你的PHP应用程序中,以测试电子邮件。

开始使用mailtrap

开发广泛的应用程序有很多要求。这包括要求测试你的应用程序,以确保一切按计划进行。这些应用的关键要求之一,如Edge as a service,是测试邮件功能的能力。

科的客户经常利用Edge作为服务的好处,他们有一个灵活的付款计划。为了提醒这些客户的下一个到期日,我们需要向他们发送电子邮件。

发送电子邮件的一个关键挑战是,我们不确定我们的电子邮件是否被交付。为了确保电子邮件被送达,我们需要在开发和阶段性水平上测试我们的电子邮件,以确保它们在生产中运行良好。

现在,Mailtrap随着应用程序开发过程的开发和暂存阶段的到来而出现。它被用来测试电子邮件,以确保它们被送到预定的收件人手中。在下一节中,我们将深入了解PHP的邮件发送方法,它们是如何工作的,以及它们可能面临的问题。

PHP内置的邮件发送方法

在PHP中,我们有2种不同的方法来给我们的系统用户发送邮件。

这些方法是。

  • 通过使用PHP包,我们将在下一节看到。

  • 使用内置的方法。

在这一节中,我们将使用PHP的mail() 方法来给我们的用户发送邮件。然后,我们将继续检查这些邮件是否被送达或失败。

mail() 的一般结构如下所示。

// the mail method in PHP for sending emails
mail(
    // recipient email
    string $to,
    // the email subject
    string $subject,
    // the email body
    string $message,
    //any other additional settings
    array|string $additional_headers = [],
    string $additional_params = ""
): bool

上述方法接收了多个参数,描述如下。

$to :这个参数指的是电子邮件的收件人。这可以是这样的: 。test@section.io

$subject:这指的是电子邮件的主题,你必须确保它符合RFC 2047 - MIME(多用途互联网邮件扩展)。

$message:这是你的邮件正文。我们需要确保每一行都用CRLF(\r\n)分隔。行数不应大于70个字符,否则邮件将不会被发送。

$additional_headers (optional)- 这是一个数组参数,确保我们可以在邮件标题中添加额外的信息。这可能包括CC ,BCC 等。

现在我们了解了PHP的mail() 方法的基本功能,让我们继续向一些随机的电子邮件发送一封样本邮件。

<?php
// sending to
$to      = 'no-reply@section.io';
// email subject
$subject = "Section's Edge as a service";
// additional headers
$headers = array(
    'From' => 'test@example.com',
    'Reply-To' => 'test2@example.com',
    'X-Mailer' => 'PHP/' . phpversion()
);
//body template

$message = '
<html>
<head>
  <title>Node.js Deployment</title>
</head>
<body>
  <p>I have a few requests:</p>
  <ol>
    <li>How much is the cost?</li>
    <li>What is the whole procedure of delpoyment</li>
    <li>How are my appplications distributed?</li>
    <li>How flexible is the payment plans?</li>
  </ol>
</body>
</html>
';

mail($to, $subject, $message, $headers);

在上面的代码中,我们正在向一个随机的电子邮件发送一封询问邮件。我们已经定义了HTML主体,并添加了额外的参数,如标题。

注意:重要的是要记住,要使用HTML主体向用户发送电子邮件,我们必须设置我们的标题,如下图所示。

Anyword
Anyword

AI文案写作助手和文本生成器,具有可预测结果的文案 AI

下载
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';

否则,我们的邮件正文就会以HTML的形式传递。当我们的传输协议遇到错误的内容时,可能会出现其他问题。在这一点上,我们假设当这个特定的代码被运行时,我们期望它能完美无缺地运行。

然而,我们怎样才能确保我们的电子邮件被送到预定的收件人手中呢?在下一节中,让我们用一个邮件包来发送同样的电子邮件。这些包将帮助我们克服mail() 方法的局限性,这种方法在检查我们的邮件是否被送达时相当困难。

PHP邮件包

前面的电子邮件发送方法的一个关键缺点是,它的特点或功能非常有限。这通常是在需要发送大量邮件时面临的问题。

在本节中,我们将研究如何克服这些缺点,并随后分析我们的电子邮件是否发展到了预期的收件人。

我们将讨论以下软件包。

  • PHPMailer

  • Swift Mailer

  • 梨子邮件

让我们继续,先从PHPMailer :PHPMailer是我们上面列出的所有包中最流行的用PHP发送邮件的包之一。

创建一个PHP文件mail.php ,并添加以下代码片段。

<?php
// Import the mailer class
use PHPMailer\PHPMailer\PHPMailer;
require_once './vendor/autoload.php';
// create a new mailing object
$mail = new PHPMailer();
// SMTP configuration

$phpmailer = new PHPMailer();
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.mailtrap.io';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 2525;
$phpmailer->Username = 'cb7xx33e1856xxx5b25xx';
$phpmailer->Password = '87f63xx87d73e52xxx4xx';

$mail->setFrom('no-reply@section.io', 'Node.js Deployment');
$mail->addAddress('test@gmail.com', 'Me');
$mail->Subject = 'Thanks for using section.io Edge as a service!';

// Our HTML setup

$mail->isHTML(TRUE);
$mail->Body = '<html>Hello johndoe, thank you for using our Node.js deployment and distribution platform. Kinldy check the document in the attachment below to review your payments plan.</html>';
$mail->AltBody = 'Success';
// adding mailing attachment for payment plan
$mail->addAttachment('//node/paymments.pdf', 'payments.pdf');
// send the thank you messange
if(!$mail->send()){
    echo 'Your message could not be develired, try again later';
    echo 'Error: ' . $mail->ErrorInfo;
} else {
    echo 'Your message has been sent successfully.';
}

在上面的代码中,我们已经安装了PHPMailer包。我们还创建了这个类的一个新实例,$mail 。接下来,我们已经创建了我们的Mailtrap账户,并在这里抓取了凭证。

当你创建一个项目时,确保你将其与PHPMailer 选项集成,如下面的截图所示。

03428968dd6eb0c4d5abf01e2e3c818.jpg

你会注意到,我们的截图省略了用户名和密码。这些是自动生成的,对每个用户都是不同的。

接下来,我们设置了我们的setFrom() 方法来接收发件人的电子邮件和电子邮件标题。然后,我们继续配置收件人的电子邮件地址和电子邮件的主题。

注意:之前,我们曾表示,我们可以将正文添加为HTML,然后适当地设置我们的内容类型。

在上面的邮件正文中,我们将信息定义为HTML,以便我们能够定制邮件,满足我们的要求。然后我们添加替代标签,再最后添加一个附件。然后,我们使用PHPMailer的$mail->send() 方法来发送我们的邮件。我们加入了if 语句来检查我们的邮件是否已经发送。

当我们的邮件未能送达时,我们通过打印一个警告信息来通知用户,否则就打印一个成功信息。让我们继续使用SwiftMailer ,实现同样的功能,如下所示。

在你的服务器上创建一个新的文件swift.php ,并添加以下代码片段。

<?php
require_once './vendor/autoload.php';
 try {
    // start by creating SMTP transport
    $transport = (new Swift_SmtpTransport('smtp.mailtrap.io', 2525))
        ->setUsername('xxxxxxxxx')
        ->setPassword('xxxxxxxxx');

    $swift_mailer = new Swift_Mailer($transport);

    // message creation
    $swift_message = new Swift_Message();

    $swift_message->setSubject('Hooray! You just deployed your first Node');

    swift_message->setFrom(['no-reply@section.io' => 'Saas']);
    $messswift_messageage->addTo('test@gmail.com','Test');

    // Adding email attachment
   $email_attachment = Swift_Attachment::fromPath('./section/payments.pdf');

    $swift_message->attach($email_attachment);

    // Set the plain-text part
    $swift_message->setBody('Hello John Doe, thank you for using the Section Node deployment service');
     // Set the HTML part
    $swift_message->addPart('We are glad to welcome you on board');
     // Send the message
    $res = swift_mailer->send($message);

} catch (Exception $e) {
  echo $e->getMessage();
}

就像PHPMailer一样,我们首先安装这个包,并使用./vendor/autoload.php 路径导入它。还需要注意的是,根据你的系统设置,这个路径可能与你的应用程序路径不同。

接下来,我们将传输设置为使用我们Mailtrap的Swift_SmtpTransport 。拿起你的凭证,按照上面的代码设置。按照前面的步骤来配置你的应用程序,使其使用Mailtrap包来发送邮件。

现在,我们如何知道我们的邮件已经被送达?这就是我们使用Mailrap的原因。与PHPmail() 方法相比,该软件包允许我们配置我们的应用程序使用mailtrap,这给我们提供了一个平台来测试我们的应用程序,正如下一节所讨论的。

使用mailtrap测试电子邮件

登录你的Mailtrap账户,进入你的收件箱部分,如以下截图所示。

dec732c5cff066209c59c7a9e1149f5.jpg

接下来,点击项目名称,展开你所发送的邮件。

03428968dd6eb0c4d5abf01e2e3c818.jpg

注意:为了安全起见,上述截图上的一些功能已被跳过。

总结

在这篇文章中,我们已经广泛地讨论了PHP邮件方法的基本概念。我们已经看到了PHP内置的方法mail() 是如何限制我们发送带有测试功能的邮件的,我们已经用PHP包克服了这个问题。

作者:DebugUsery链接:https://juejin.cn/post/7167615841398161416

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

68

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

162

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

84

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

113

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

29

2026.03.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

79

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

62

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

51

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
c语言项目php解释器源码分析探索
c语言项目php解释器源码分析探索

共7课时 | 0.4万人学习

nginx浅谈
nginx浅谈

共15课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号