php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:
PHP是當今最流行的網路開發程式語言之一。公司向使用者傳送郵件,通知他們新產品,如促銷郵件或與員工溝通。
在本教學中,我們看看如何在我們的PHP中整合流行的Mailtrap平臺來傳送多封郵件。【推薦學習:】
要跟隨本教學,你需要具備以下條件。
PHP的基本概念,最好是PHP8.0。
簡單郵件傳輸協定(SMTP)的基本概念。
一個mailtrap賬戶。
在本教學結束時,你應該能夠將Mailtrap整合到你的PHP應用程式中,以測試電子郵件。
開發廣泛的應用程式有很多要求。這包括要求測試你的應用程式,以確保一切按計劃進行。這些應用的關鍵要求之一,如Edge as a service,是測試郵件功能的能力。
科的客戶經常利用Edge作為服務的好處,他們有一個靈活的付款計劃。為了提醒這些客戶的下一個到期日,我們需要向他們傳送電子郵件。
傳送電子郵件的一個關鍵挑戰是,我們不確定我們的電子郵件是否被交付。為了確保電子郵件被送達,我們需要在開發和階段性水平上測試我們的電子郵件,以確保它們在生產中執行良好。
現在,Mailtrap隨著應用程式開發過程的開發和暫存階段的到來而出現。它被用來測試電子郵件,以確保它們被送到預定的收件人手中。在下一節中,我們將深入瞭解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 :這個引數指的是電子郵件的收件人。這可以是這樣的: 。[email protected]
$subject:這指的是電子郵件的主題,你必須確保它符合RFC 2047 - MIME(多用途網際網路郵件擴充套件)。
$message:這是你的郵件正文。我們需要確保每一行都用CRLF(\r\n)分隔。行數不應大於70個字元,否則郵件將不會被傳送。
$additional_headers (optional)- 這是一個陣列引數,確保我們可以在郵件標題中新增額外的資訊。這可能包括CC ,BCC 等。
現在我們瞭解了PHP的mail() 方法的基本功能,讓我們繼續向一些隨機的電子郵件傳送一封樣本郵件。
<?php
// sending to
$to = '[email protected]';
// email subject
$subject = "Section's Edge as a service";
// additional headers
$headers = array(
'From' => '[email protected]',
'Reply-To' => '[email protected]',
'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);
登入後複製
在上面的程式碼中,我們正在向一個隨機的電子郵件傳送一封詢問郵件。我們已經定義了HTML主體,並新增了額外的引數,如標題。
注意:重要的是要記住,要使用HTML主體向使用者傳送電子郵件,我們必須設定我們的標題,如下圖所示。
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
登入後複製
否則,我們的郵件正文就會以HTML的形式傳遞。當我們的傳輸協定遇到錯誤的內容時,可能會出現其他問題。在這一點上,我們假設當這個特定的程式碼被執行時,我們期望它能完美無缺地執行。
然而,我們怎樣才能確保我們的電子郵件被送到預定的收件人手中呢?在下一節中,讓我們用一個郵件包來傳送同樣的電子郵件。這些包將幫助我們克服mail() 方法的侷限性,這種方法在檢查我們的郵件是否被送達時相當困難。
前面的電子郵件傳送方法的一個關鍵缺點是,它的特點或功能非常有限。這通常是在需要傳送大量郵件時面臨的問題。
在本節中,我們將研究如何克服這些缺點,並隨後分析我們的電子郵件是否發展到了預期的收件人。
我們將討論以下軟體包。
PHPMailer
Swift Mailer
梨子郵件
讓我們繼續,先從PHPMailer :PHPMailer是我們上面列出的所有包中最流行的用PHP傳送郵件的包之一。
建立一個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('[email protected]', 'Node.js Deployment');
$mail->addAddress('[email protected]', '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.';
}
登入後複製
在上面的程式碼中,我們已經安裝了PHPMailer包。我們還建立了這個類的一個新範例,$mail 。接下來,我們已經建立了我們的Mailtrap賬戶,並在這裡抓取了憑證。
當你建立一個專案時,確保你將其與PHPMailer 選項整合,如下面的截圖所示。
你會注意到,我們的截圖省略了使用者名稱和密碼。這些是自動生成的,對每個使用者都是不同的。
接下來,我們設定了我們的setFrom() 方法來接收發件人的電子郵件和電子郵件標題。然後,我們繼續設定收件人的電子郵件地址和電子郵件的主題。
注意:之前,我們曾表示,我們可以將正文新增為HTML,然後適當地設定我們的內容型別。
在上面的郵件正文中,我們將資訊定義為HTML,以便我們能夠客製化郵件,滿足我們的要求。然後我們新增替代標籤,再最後新增一個附件。然後,我們使用PHPMailer的$mail->send() 方法來傳送我們的郵件。我們加入了if 語句來檢查我們的郵件是否已經傳送。
當我們的郵件未能送達時,我們通過列印一個警告資訊來通知使用者,否則就列印一個成功資訊。讓我們繼續使用SwiftMailer ,實現同樣的功能,如下所示。
在你的伺服器上建立一個新的檔案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(['[email protected]' => 'Saas']);
$messswift_messageage->addTo('[email protected]','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 路徑匯入它。還需要注意的是,根據你的系統設定,這個路徑可能與你的應用程式路徑不同。
接下來,我們將傳輸設定為使用我們Mailtrap的Swift_SmtpTransport 。拿起你的憑證,按照上面的程式碼設定。按照前面的步驟來設定你的應用程式,使其使用Mailtrap包來傳送郵件。
現在,我們如何知道我們的郵件已經被送達?這就是我們使用Mailrap的原因。與PHPmail() 方法相比,該軟體包允許我們設定我們的應用程式使用mailtrap,這給我們提供了一個平臺來測試我們的應用程式,正如下一節所討論的。
登入你的Mailtrap賬戶,進入你的收件箱部分,如以下截圖所示。
接下來,點選專案名稱,展開你所傳送的郵件。
注意:為了安全起見,上述截圖上的一些功能已被跳過。
在這篇文章中,我們已經廣泛地討論了PHP郵件方法的基本概念。我們已經看到了PHP內建的方法mail() 是如何限制我們傳送帶有測試功能的郵件的,我們已經用PHP包克服了這個問題。
作者:DebugUsery
連結:https://juejin.cn/post/7167615841398161416
以上就是聊聊Mailtrap怎麼整合PHP郵件的詳細內容,更多請關注TW511.COM其它相關文章!