使用 PHP 在郵件中傳送附件
我們將介紹在 PHP 中通過電子郵件傳送附件的不同方法。
使用 PHPMailer
在電子郵件中傳送附件
我們可以使用 PHPMailer
類來傳送電子郵件,允許我們傳送附件。我們可以建立一個 PHPMailer
類物件並使用其方法和屬性將電子郵件傳送給所需的收件人。我們將使用 Gmail 傳送電子郵件。因此,我們將使用 SMTP
協議。該庫具有 addAttachment()
方法,可讓我們新增附件。首先,我們需要從 GitHub 下載庫。
例如,建立一個資料夾 src
並將三個檔案 PHPMailer.php
、SMTP.php
和 Exception.php
複製到其中。然後建立一個檔案 index.php
並使用 require
語句來包含這三個檔案。然後使用這些檔案的相應類。接下來,建立 PHPMailer()
類的物件 $mail
。使用 Username
和 Password
屬性設定發件人的電子郵件和密碼。使用 Subject
和 Body
屬性設定電子郵件的主題和正文。使用 addAttachment()
函式新增附件。將附件的相對路徑作為方法的引數。在 AddAddress()
方法中寫入收件人的電子郵件。最後,呼叫 Send()
方法傳送電子郵件。接下來,呼叫 smtpClose()
關閉 SMTP
連線。
我們需要將發件人的電子郵件更改為使用 PHPMailer
中的 Gmail 傳送電子郵件。我們應該在 Gmail 中開啟不太安全的應用程式
訪問選項以使用 PHPMailer
。然後,執行以下指令碼將向收件人傳送電子郵件和附件。
示例程式碼:
<?php
require 'src/PHPMailer.php';
require 'src/SMTP.php';
require 'src/Exception.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = "true";
$mail->SMTPSecure ="tls";
$mail->Port = "587";
$mail->Username = "sendersemail@gmail.com";
$mail->Password = "password";
$mail->SetFrom('sendersemail@gmail.com');
$mail->Subject = 'Message Subject';
$mail->Body = "This is a body text";
$mail->addAttachment('attachments/project.pdf');
$mail->AddAddress( 'receiversmail@gmail.com' );
$mail->Send();
$mail->smtpClose();
?>
使用 SwiftMailer
在電子郵件中傳送附件
我們也可以使用第三方庫 SwiftMailer
傳送帶有附件的電子郵件。該庫提供了一個 attach()
方法來在傳送電子郵件時新增附件。我們可以使用以下命令安裝庫。
composer require "swiftmailer/swiftmailer:^6.0"
我們需要在我們的指令碼中包含 autoloader.php
檔案以使用 SwiftMailer
。該檔案位於下載檔案的供應商
資料夾內。我們將使用 Gmail 傳送電子郵件。要使用 Gmail,我們需要使用 SMTP
協議。因此,我們需要使用 Swift_SmtpTransport
類建立傳輸以設定主機、埠號和協議。我們可以使用傳輸設定發件人的電子郵件和密碼。Swift_Mailer
類允許我們設定傳輸,而 Swift_Mailer
類允許我們設定訊息、收件人和附件。
例如,要求工作檔案中的 autoload.php
檔案為 vendor/autoload.php
。建立 Swift_SmtpTransport
類的物件 $transport
,並將主機設定為 smtp.gmail.com
,埠號設定為 587
,安全協議設定為 tls
。然後使用 setUsername
和 setPassword
方法設定發件人的電子郵件和密碼。接下來,建立 Swift_Mailer
類的物件 $mail
並將 $transport
物件設定為它。然後,建立 Swift_Message
類的另一個物件 $content
並將主題寫入作為引數。使用 setFrom()
和 setTo()
方法指定發件人的電子郵件和收件人的電子郵件。在 setBody()
方法中編寫電子郵件正文。然後,使用 attach()
方法通過 Swift_Attachment
類的 fromPath()
方法指定附件路徑。最後,使用我們建立的 $mail
物件通過 send()
方法傳送電子郵件。提供 $content
物件作為 send()
方法的引數。
這就是我們如何使用 PHP 中的 SwiftMailer
庫傳送帶有附件的電子郵件。
示例程式碼:
require_once 'vendor/autoload.php';
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
->setUsername('sendersemail@gmail.com')
->setPassword('password')
$mail = new Swift_Mailer($transport);
$content = (new Swift_Message('Subject'))
->setFrom(['sendersemail@gmail.com' => 'Senders Name'])
->setTo('recieversemail@gmail.com')
->setBody('This is a text')
->attach(Swift_Attachment::fromPath('attachments/project.pdf'));
$result = $mail->send($content);
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn