Rumah >pembangunan bahagian belakang >tutorial php >Mari kita bincangkan tentang cara Mailtrap menyepadukan e-mel PHP

Mari kita bincangkan tentang cara Mailtrap menyepadukan e-mel PHP

藏色散人
藏色散人ke hadapan
2022-11-23 16:45:006436semak imbas

Artikel ini memperkenalkan anda kepada isu penyepaduan e-mel PHP PHP ialah salah satu bahasa pengaturcaraan pembangunan web yang paling popular hari ini. Syarikat menghantar e-mel kepada pengguna untuk memberitahu mereka tentang produk baharu, seperti e-mel promosi atau berkomunikasi dengan pekerja . Di bawah saya akan memberi anda pengenalan terperinci tentang cara mengintegrasikan platform Mailtrap yang popular dalam PHP untuk menghantar berbilang e-mel. Saya harap ia akan membantu rakan yang memerlukan~

Mari kita bincangkan tentang cara Mailtrap menyepadukan e-mel PHP

Menggunakan. Mailtrap untuk menyepadukan e-mel PHP

PHP ialah salah satu bahasa pengaturcaraan pembangunan web yang paling popular hari ini. Syarikat menghantar e-mel kepada pengguna untuk memaklumkan mereka tentang produk baharu, seperti e-mel promosi atau untuk berkomunikasi dengan pekerja.

Dalam tutorial ini, kami melihat cara menyepadukan platform Mailtrap yang popular dalam PHP kami untuk menghantar berbilang e-mel. [Pembelajaran yang disyorkan: Tutorial video PHP]

Prasyarat

Untuk mengikuti tutorial ini, anda perlu mempunyai syarat berikut.

  • Konsep asas PHP, sebaik-baiknya PHP8.0.

  • Konsep asas Protokol Pemindahan Mel Mudah (SMTP).

  • Akaun perangkap surat.

Objektif

Menjelang akhir tutorial ini, anda sepatutnya dapat menyepadukan Mailtrap ke dalam aplikasi PHP anda untuk menguji e-mel.

Mulakan dengan perangkap surat

Membangunkan pelbagai aplikasi mempunyai banyak keperluan. Ini termasuk keperluan untuk menguji aplikasi anda untuk memastikan semuanya berfungsi seperti yang dirancang. Salah satu keperluan utama untuk aplikasi ini, seperti Edge sebagai perkhidmatan, ialah keupayaan untuk menguji fungsi e-mel.

Pelanggan Co sering mengambil kesempatan daripada Edge sebagai perkhidmatan dan mereka mempunyai pelan pembayaran yang fleksibel. Untuk mengingatkan pelanggan ini tentang tarikh akhir mereka yang seterusnya, kami perlu menghantar e-mel kepada mereka.

Cabaran utama dengan menghantar e-mel ialah kami tidak pasti sama ada e-mel kami dihantar. Untuk memastikan e-mel dihantar, kami perlu menguji e-mel kami pada tahap pembangunan dan pementasan untuk memastikan ia berfungsi dengan baik dalam pengeluaran.

Kini Mailtrap hadir bersama-sama dengan fasa pembangunan dan pementasan proses pembangunan aplikasi. Ia digunakan untuk menguji e-mel untuk memastikan ia dihantar kepada penerima yang dimaksudkan. Dalam bahagian seterusnya, kami akan melihat dengan lebih dekat kaedah penghantaran e-mel PHP, cara ia berfungsi dan masalah yang mungkin mereka hadapi.

Kaedah penghantaran e-mel terbina dalam PHP

Dalam PHP, kami mempunyai 2 kaedah berbeza untuk menghantar e-mel kepada pengguna sistem kami.

Kaedah ini ialah.

  • Dengan menggunakan pakej PHP, seperti yang akan kita lihat dalam bahagian seterusnya.

  • Gunakan kaedah terbina dalam.

Dalam bahagian ini, kami akan menggunakan kaedah mel() PHP untuk menghantar e-mel kepada pengguna kami. Kami kemudiannya akan meneruskan untuk menyemak sama ada e-mel ini telah dihantar atau gagal.

Struktur am mail() adalah seperti berikut.

// 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

Kaedah di atas menerima berbilang parameter, yang diterangkan di bawah.

$to : Parameter ini merujuk kepada penerima e-mel. Ini boleh kelihatan seperti ini: . test@section.io

$subject: Ini merujuk kepada subjek e-mel, anda mesti memastikan ia mematuhi RFC 2047 - MIME (Sambungan Mel Internet Serbaguna).

$mesej: Ini ialah kandungan e-mel anda. Kita perlu memastikan setiap baris dipisahkan oleh CRLF(rn). Bilangan baris tidak boleh lebih daripada 70 aksara, jika tidak, e-mel tidak akan dihantar.

$additional_headers (pilihan) - Ini ialah parameter tatasusunan yang memastikan kami boleh menambah maklumat tambahan pada pengepala e-mel. Ini mungkin termasuk CC, BCC, dsb.

Sekarang kita memahami kefungsian asas kaedah mel() PHP, mari kita teruskan untuk menghantar e-mel sampel ke beberapa e-mel rawak.

<?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);

Dalam kod di atas, kami menghantar e-mel pertanyaan kepada e-mel rawak. Kami telah menentukan badan HTML dan menambah parameter tambahan seperti tajuk.

Nota: Adalah penting untuk diingat bahawa untuk menghantar e-mel kepada pengguna menggunakan badan HTML, kami mesti menetapkan pengepala kami seperti yang ditunjukkan dalam imej di bawah.

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

Jika tidak, badan e-mel kami akan dihantar sebagai HTML. Isu lain boleh timbul apabila protokol pengangkutan kami menemui kandungan yang salah. Pada ketika ini, kami menganggap bahawa apabila kod tertentu ini dijalankan, kami menjangkakan ia berjalan dengan sempurna.

Walau bagaimanapun, bagaimanakah kami boleh memastikan bahawa e-mel kami dihantar kepada penerima yang dimaksudkan? Dalam bahagian seterusnya, mari kita gunakan pakej mel untuk menghantar e-mel yang sama. Pakej ini akan membantu kami mengatasi batasan kaedah mail(), yang menjadikannya agak sukar untuk menyemak sama ada mel kami telah dihantar.

Pakej Mel PHP

Kelemahan utama kaedah penghantaran e-mel sebelumnya ialah ia mempunyai ciri atau fungsi yang sangat terhad. Ini biasanya masalah yang dihadapi apabila anda perlu menghantar sejumlah besar mel.

Dalam bahagian ini kita akan melihat cara untuk mengatasi kelemahan ini dan seterusnya menganalisis sama ada e-mel kami sampai kepada penerima yang dimaksudkan.

Kami akan membincangkan pakej berikut.

  • PHPMailer

  • Swift Mail

  • Pear Mail

让我们继续,先从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 选项集成,如下面的截图所示。

Mari kita bincangkan tentang cara Mailtrap menyepadukan e-mel PHP

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

接下来,我们设置了我们的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账户,进入你的收件箱部分,如以下截图所示。

Mari kita bincangkan tentang cara Mailtrap menyepadukan e-mel PHP

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

Mari kita bincangkan tentang cara Mailtrap menyepadukan e-mel PHP

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

总结

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

作者:DebugUsery

链接:https://juejin.cn/post/7167615841398161416

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara Mailtrap menyepadukan e-mel PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.im. Jika ada pelanggaran, sila hubungi admin@php.cn Padam