ホームページ  >  記事  >  バックエンド開発  >  Mailtrap が PHP メールをどのように統合するかについて話しましょう

Mailtrap が PHP メールをどのように統合するかについて話しましょう

藏色散人
藏色散人転載
2022-11-23 16:45:006332ブラウズ

この記事では、PHP メールの統合に関する問題について説明します。PHP は、今日最も人気のある Web 開発プログラミング言語の 1 つです。企業は、プロモーション メールなどの新製品について通知したり、ユーザーと通信したりするために、ユーザーにメールを送信します。従業員。以下では、人気のある Mailtrap プラットフォームを PHP に統合して複数の電子メールを送信する方法について詳しく説明します。困っている友人のお役に立てば幸いです~

Mailtrap が PHP メールをどのように統合するかについて話しましょう

使用PHP メールを統合する Mailtrap

PHP は、現在最も人気のある Web 開発プログラミング言語の 1 つです。企業は、プロモーションメールなどの新製品について通知したり、従業員とコミュニケーションしたりするために、ユーザーにメールを送信します。

このチュートリアルでは、人気のある Mailtrap プラットフォームを PHP に統合して複数の電子メールを送信する方法を見ていきます。 [推奨学習: PHP ビデオ チュートリアル ]

前提条件

このチュートリアルに従うには、次の条件を満たす必要があります。

  • PHP の基本概念 (できれば PHP8.0)。

  • Simple Mail Transfer Protocol (SMTP) の基本概念。

  • #メールトラップ アカウント。

目標

このチュートリアルを終了するまでに、電子メールをテストするために Mailtrap を PHP アプリケーションに統合できるようになります。

mailtrap を始めましょう

幅広いアプリケーションの開発には多くの要件があります。これには、アプリケーションをテストして、すべてが計画どおりに動作していることを確認するための要件が​​含まれます。 Edge as a Service などのこれらのアプリケーションの重要な要件の 1 つは、電子メールの機能をテストできることです。

Co の顧客はサービスとしての 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 (MultiPurpose Internet Mail Extensions) に準拠していることを確認する必要があります。

$メッセージ: これは電子メールの本文です。各行が CRLF (\r\n) で区切られていることを確認する必要があります。行数は 70 文字を超えてはなりません。そうでない場合、電子メールは送信されません。

$Additional_headers (オプション) - これは、電子メール ヘッダーに追加情報を確実に追加できるようにする配列パラメーターです。これには、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 メーラー
  • 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 选项集成,如下面的截图所示。

Mailtrap が 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账户,进入你的收件箱部分,如以下截图所示。

Mailtrap が PHP メールをどのように統合するかについて話しましょう

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

Mailtrap が PHP メールをどのように統合するかについて話しましょう

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

总结

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

作者:DebugUsery

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

以上がMailtrap が PHP メールをどのように統合するかについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。