搜索
首页后端开发php教程聊聊Mailtrap怎么整合PHP邮件

聊聊Mailtrap怎么整合PHP邮件

Nov 23, 2022 pm 04:45 PM
php邮件mailtrap

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

聊聊Mailtrap怎么整合PHP邮件

使用Mailtrap整合PHP邮件

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

在本教程中,我们看看如何在我们的PHP中集成流行的Mailtrap平台来发送多封邮件。【推荐学习: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      = &#39;no-reply@section.io&#39;;
// email subject
$subject = "Section&#39;s Edge as a service";
// additional headers
$headers = array(
    &#39;From&#39; => &#39;test@example.com&#39;,
    &#39;Reply-To&#39; => &#39;test2@example.com&#39;,
    &#39;X-Mailer&#39; => &#39;PHP/&#39; . phpversion()
);
//body template

$message = &#39;
<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>
&#39;;

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

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

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

$headers[] = &#39;MIME-Version: 1.0&#39;;
$headers[] = &#39;Content-type: text/html; charset=iso-8859-1&#39;;

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

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

PHP邮件包

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

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

我们将讨论以下软件包。

  • PHPMailer

  • Swift Mailer

  • 梨子邮件

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

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

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

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

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

// Our HTML setup

$mail->isHTML(TRUE);
$mail->Body = &#39;<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>&#39;;
$mail->AltBody = &#39;Success&#39;;
// adding mailing attachment for payment plan
$mail->addAttachment(&#39;//node/paymments.pdf&#39;, &#39;payments.pdf&#39;);
// send the thank you messange
if(!$mail->send()){
    echo &#39;Your message could not be develired, try again later&#39;;
    echo &#39;Error: &#39; . $mail->ErrorInfo;
} else {
    echo &#39;Your message has been sent successfully.&#39;;
}

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

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

03428968dd6eb0c4d5abf01e2e3c818.jpg

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

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

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

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

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

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

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

    $swift_mailer = new Swift_Mailer($transport);

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

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

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

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

    $swift_message->attach($email_attachment);

    // Set the plain-text part
    $swift_message->setBody(&#39;Hello John Doe, thank you for using the Section Node deployment service&#39;);
     // Set the HTML part
    $swift_message->addPart(&#39;We are glad to welcome you on board&#39;);
     // 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

以上是聊聊Mailtrap怎么整合PHP邮件的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:juejin。如有侵权,请联系admin@php.cn删除
如何检查PHP会话是否已经开始?如何检查PHP会话是否已经开始?Apr 30, 2025 am 12:20 AM

在PHP中,可以使用session_status()或session_id()来检查会话是否已启动。1)使用session_status()函数,如果返回PHP_SESSION_ACTIVE,则会话已启动。2)使用session_id()函数,如果返回非空字符串,则会话已启动。这两种方法都能有效地检查会话状态,选择使用哪种方法取决于PHP版本和个人偏好。

描述一个场景,其中使用会话在Web应用程序中至关重要。描述一个场景,其中使用会话在Web应用程序中至关重要。Apr 30, 2025 am 12:16 AM

sessionsarevitalinwebapplications,尤其是在commercePlatform之前。

如何管理PHP中的并发会话访问?如何管理PHP中的并发会话访问?Apr 30, 2025 am 12:11 AM

在PHP中管理并发会话访问可以通过以下方法:1.使用数据库存储会话数据,2.采用Redis或Memcached,3.实施会话锁定策略。这些方法有助于确保数据一致性和提高并发性能。

使用PHP会话的局限性是什么?使用PHP会话的局限性是什么?Apr 30, 2025 am 12:04 AM

PHPsessionshaveseverallimitations:1)Storageconstraintscanleadtoperformanceissues;2)Securityvulnerabilitieslikesessionfixationattacksexist;3)Scalabilityischallengingduetoserver-specificstorage;4)Sessionexpirationmanagementcanbeproblematic;5)Datapersis

解释负载平衡如何影响会话管理以及如何解决。解释负载平衡如何影响会话管理以及如何解决。Apr 29, 2025 am 12:42 AM

负载均衡会影响会话管理,但可以通过会话复制、会话粘性和集中式会话存储解决。1.会话复制在服务器间复制会话数据。2.会话粘性将用户请求定向到同一服务器。3.集中式会话存储使用独立服务器如Redis存储会话数据,确保数据共享。

说明会话锁定的概念。说明会话锁定的概念。Apr 29, 2025 am 12:39 AM

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

有其他PHP会议的选择吗?有其他PHP会议的选择吗?Apr 29, 2025 am 12:36 AM

PHP会话的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。1.Cookies通过在客户端存储数据来管理会话,简单但安全性低。2.Token-basedAuthentication使用令牌验证用户,安全性高但需额外逻辑。3.Database-basedSessions将数据存储在数据库中,扩展性好但可能影响性能。4.Redis/Memcached使用分布式缓存提高性能和扩展性,但需额外配

在PHP的上下文中定义'会话劫持”一词。在PHP的上下文中定义'会话劫持”一词。Apr 29, 2025 am 12:33 AM

Sessionhijacking是指攻击者通过获取用户的sessionID来冒充用户。防范方法包括:1)使用HTTPS加密通信;2)验证sessionID的来源;3)使用安全的sessionID生成算法;4)定期更新sessionID。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能