溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mailtrap如何整合PHP郵件

發(fā)布時間:2022-11-23 17:14:43 來源:億速云 閱讀:86 作者:iii 欄目:編程語言

這篇“Mailtrap如何整合PHP郵件”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Mailtrap如何整合PHP郵件”文章吧。

使用Mailtrap整合PHP郵件

PHP是當(dāng)今最流行的網(wǎng)絡(luò)開發(fā)編程語言之一。公司向用戶發(fā)送郵件,通知他們新產(chǎn)品,如促銷郵件或與員工溝通。

在本教程中,我們看看如何在我們的PHP中集成流行的Mailtrap平臺來發(fā)送多封郵件。

前提條件

要跟隨本教程,你需要具備以下條件。

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

  • 簡單郵件傳輸協(xié)議(SMTP)的基本概念。

  • 一個mailtrap賬戶。

目標(biāo)

在本教程結(jié)束時,你應(yīng)該能夠?qū)ailtrap集成到你的PHP應(yīng)用程序中,以測試電子郵件。

開始使用mailtrap

開發(fā)廣泛的應(yīng)用程序有很多要求。這包括要求測試你的應(yīng)用程序,以確保一切按計劃進(jìn)行。這些應(yīng)用的關(guān)鍵要求之一,如Edge as a service,是測試郵件功能的能力。

科的客戶經(jīng)常利用Edge作為服務(wù)的好處,他們有一個靈活的付款計劃。為了提醒這些客戶的下一個到期日,我們需要向他們發(fā)送電子郵件。

發(fā)送電子郵件的一個關(guān)鍵挑戰(zhàn)是,我們不確定我們的電子郵件是否被交付。為了確保電子郵件被送達(dá),我們需要在開發(fā)和階段性水平上測試我們的電子郵件,以確保它們在生產(chǎn)中運行良好。

現(xiàn)在,Mailtrap隨著應(yīng)用程序開發(fā)過程的開發(fā)和暫存階段的到來而出現(xiàn)。它被用來測試電子郵件,以確保它們被送到預(yù)定的收件人手中。在下一節(jié)中,我們將深入了解PHP的郵件發(fā)送方法,它們是如何工作的,以及它們可能面臨的問題。

PHP內(nèi)置的郵件發(fā)送方法

在PHP中,我們有2種不同的方法來給我們的系統(tǒng)用戶發(fā)送郵件。

這些方法是。

  • 通過使用PHP包,我們將在下一節(jié)看到。

  • 使用內(nèi)置的方法。

在這一節(jié)中,我們將使用PHP的mail() 方法來給我們的用戶發(fā)送郵件。然后,我們將繼續(xù)檢查這些郵件是否被送達(dá)或失敗。

mail() 的一般結(jié)構(gòu)如下所示。

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

上述方法接收了多個參數(shù),描述如下。

$to :這個參數(shù)指的是電子郵件的收件人。這可以是這樣的: 。test@section.io

$subject:這指的是電子郵件的主題,你必須確保它符合RFC 2047 - MIME(多用途互聯(lián)網(wǎng)郵件擴(kuò)展)。

$message:這是你的郵件正文。我們需要確保每一行都用CRLF(\r\n)分隔。行數(shù)不應(yīng)大于70個字符,否則郵件將不會被發(fā)送。

$additional_headers (optional)- 這是一個數(shù)組參數(shù),確保我們可以在郵件標(biāo)題中添加額外的信息。這可能包括CC ,BCC 等。

現(xiàn)在我們了解了PHP的mail() 方法的基本功能,讓我們繼續(xù)向一些隨機的電子郵件發(fā)送一封樣本郵件。

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

在上面的代碼中,我們正在向一個隨機的電子郵件發(fā)送一封詢問郵件。我們已經(jīng)定義了HTML主體,并添加了額外的參數(shù),如標(biāo)題。

注意:重要的是要記住,要使用HTML主體向用戶發(fā)送電子郵件,我們必須設(shè)置我們的標(biāo)題,如下圖所示。

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

否則,我們的郵件正文就會以HTML的形式傳遞。當(dāng)我們的傳輸協(xié)議遇到錯誤的內(nèi)容時,可能會出現(xiàn)其他問題。在這一點上,我們假設(shè)當(dāng)這個特定的代碼被運行時,我們期望它能完美無缺地運行。

然而,我們怎樣才能確保我們的電子郵件被送到預(yù)定的收件人手中呢?在下一節(jié)中,讓我們用一個郵件包來發(fā)送同樣的電子郵件。這些包將幫助我們克服mail() 方法的局限性,這種方法在檢查我們的郵件是否被送達(dá)時相當(dāng)困難。

PHP郵件包

前面的電子郵件發(fā)送方法的一個關(guān)鍵缺點是,它的特點或功能非常有限。這通常是在需要發(fā)送大量郵件時面臨的問題。

在本節(jié)中,我們將研究如何克服這些缺點,并隨后分析我們的電子郵件是否發(fā)展到了預(yù)期的收件人。

我們將討論以下軟件包。

  • PHPMailer

  • Swift Mailer

  • 梨子郵件

讓我們繼續(xù),先從PHPMailer :PHPMailer是我們上面列出的所有包中最流行的用PHP發(fā)送郵件的包之一。

創(chuàng)建一個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.';
}

在上面的代碼中,我們已經(jīng)安裝了PHPMailer包。我們還創(chuàng)建了這個類的一個新實例,$mail 。接下來,我們已經(jīng)創(chuàng)建了我們的Mailtrap賬戶,并在這里抓取了憑證。

當(dāng)你創(chuàng)建一個項目時,確保你將其與PHPMailer 選項集成,如下面的截圖所示。

Mailtrap如何整合PHP郵件

你會注意到,我們的截圖省略了用戶名和密碼。這些是自動生成的,對每個用戶都是不同的。

接下來,我們設(shè)置了我們的setFrom() 方法來接收發(fā)件人的電子郵件和電子郵件標(biāo)題。然后,我們繼續(xù)配置收件人的電子郵件地址和電子郵件的主題。

注意:之前,我們曾表示,我們可以將正文添加為HTML,然后適當(dāng)?shù)卦O(shè)置我們的內(nèi)容類型。

在上面的郵件正文中,我們將信息定義為HTML,以便我們能夠定制郵件,滿足我們的要求。然后我們添加替代標(biāo)簽,再最后添加一個附件。然后,我們使用PHPMailer的$mail->send() 方法來發(fā)送我們的郵件。我們加入了if 語句來檢查我們的郵件是否已經(jīng)發(fā)送。

當(dāng)我們的郵件未能送達(dá)時,我們通過打印一個警告信息來通知用戶,否則就打印一個成功信息。讓我們繼續(xù)使用SwiftMailer ,實現(xiàn)同樣的功能,如下所示。

在你的服務(wù)器上創(chuàng)建一個新的文件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 路徑導(dǎo)入它。還需要注意的是,根據(jù)你的系統(tǒng)設(shè)置,這個路徑可能與你的應(yīng)用程序路徑不同。

接下來,我們將傳輸設(shè)置為使用我們Mailtrap的Swift_SmtpTransport 。拿起你的憑證,按照上面的代碼設(shè)置。按照前面的步驟來配置你的應(yīng)用程序,使其使用Mailtrap包來發(fā)送郵件。

現(xiàn)在,我們?nèi)绾沃牢覀兊泥]件已經(jīng)被送達(dá)?這就是我們使用Mailrap的原因。與PHPmail() 方法相比,該軟件包允許我們配置我們的應(yīng)用程序使用mailtrap,這給我們提供了一個平臺來測試我們的應(yīng)用程序,正如下一節(jié)所討論的。

使用mailtrap測試電子郵件

登錄你的Mailtrap賬戶,進(jìn)入你的收件箱部分,如以下截圖所示。

Mailtrap如何整合PHP郵件

接下來,點擊項目名稱,展開你所發(fā)送的郵件。

Mailtrap如何整合PHP郵件

注意:為了安全起見,上述截圖上的一些功能已被跳過。

以上就是關(guān)于“Mailtrap如何整合PHP郵件”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI