>  기사  >  백엔드 개발  >  Mailtrap이 PHP 이메일을 통합하는 방법에 대해 이야기해 보겠습니다.

Mailtrap이 PHP 이메일을 통합하는 방법에 대해 이야기해 보겠습니다.

藏色散人
藏色散人앞으로
2022-11-23 16:45:006373검색

이 기사에서는 PHP 이메일 통합 문제를 소개합니다. PHP는 오늘날 가장 널리 사용되는 웹 개발 프로그래밍 언어 중 하나입니다. 회사에서는 홍보 이메일이나 직원과의 커뮤니케이션 등 새로운 제품을 알리기 위해 사용자에게 이메일을 보냅니다. 아래에서는 인기 있는 Mailtrap 플랫폼을 PHP에 통합하여 여러 이메일을 보내는 방법에 대해 자세히 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되기를 바랍니다~

Mailtrap이 PHP 이메일을 통합하는 방법에 대해 이야기해 보겠습니다.

Mailtrap을 사용하여 PHP 이메일을 통합하는 방법

PHP는 오늘날 가장 인기 있는 웹 개발 프로그래밍 언어 중 하나입니다. 기업은 프로모션 이메일 등 신제품 소식을 알리거나 직원과 소통하기 위해 사용자에게 이메일을 보냅니다.

이 튜토리얼에서는 인기 있는 Mailtrap 플랫폼을 PHP에 통합하여 여러 이메일을 보내는 방법을 살펴봅니다. [추천학습: PHP 동영상 튜토리얼]

사전조건

이 튜토리얼을 따라가려면 다음 조건이 필요합니다.

  • PHP의 기본 개념, 바람직하게는 PHP8.0입니다.

  • SMTP(Simple Mail Transfer Protocol)의 기본 개념입니다.

  • 메일트랩 계정입니다.

목표

이 튜토리얼이 끝나면 이메일 테스트를 위해 Mailtrap을 PHP 애플리케이션에 통합할 수 있을 것입니다.

mailtrap 사용 시작

다양한 애플리케이션을 개발하려면 많은 요구 사항이 필요합니다. 여기에는 모든 것이 계획대로 작동하는지 확인하기 위해 애플리케이션을 테스트하기 위한 요구 사항이 포함됩니다. Edge as a Service와 같은 이러한 애플리케이션의 주요 요구 사항 중 하나는 이메일 기능을 테스트하는 기능입니다.

Co의 고객은 Edge를 서비스로 활용하는 경우가 많으며 유연한 결제 계획을 가지고 있습니다. 이러한 고객에게 다음 기한을 상기시키려면 이메일을 보내야 합니다.

이메일을 보낼 때 가장 어려운 점은 이메일이 제대로 전달되는지 확실하지 않다는 것입니다. 이메일이 확실히 전달되도록 하려면 개발 및 준비 수준에서 이메일을 테스트하여 프로덕션 환경에서 제대로 작동하는지 확인해야 합니다.

이제 Mailtrap은 애플리케이션 개발 프로세스의 개발 및 준비 단계와 함께 제공됩니다. 이메일이 의도한 수신자에게 전달되었는지 확인하기 위해 이메일을 테스트하는 데 사용됩니다. 다음 섹션에서는 PHP의 이메일 전송 방법, 작동 방식, 직면할 수 있는 문제에 대해 자세히 살펴보겠습니다.

PHP 내장 이메일 전송 방법

PHP에는 시스템 사용자에게 이메일을 보내는 두 가지 방법이 있습니다.

이러한 방법이 있습니다.

  • 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(Multi Purpose Internet Mail Extensions)을 준수하는지 확인해야 합니다.

$message: 이메일 본문입니다. 각 줄이 CRLF(rn)로 구분되어 있는지 확인해야 합니다. 줄 수는 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 Mailer

  • 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.im에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제