PHP を使用してメールで添付ファイルを送信する

Subodh Poudel 2023年1月30日
  1. PHPMailer を使用して電子メールで添付ファイルを送信する
  2. SwiftMailer を使用して電子メールで添付ファイルを送信する
PHP を使用してメールで添付ファイルを送信する

PHP で電子メールで添付ファイルを送信するさまざまな方法を紹介します。

PHPMailer を使用して電子メールで添付ファイルを送信する

PHPMailer クラスを使用して電子メールを送信し、添付ファイルを送信できます。PHPMailer クラスオブジェクトを作成し、そのメソッドとプロパティを使用して、目的の受信者に電子メールを送信できます。Gmail を使用してメールを送信します。したがって、SMTP プロトコルを使用します。ライブラリには、添付ファイルを追加できる addAttachment() メソッドがあります。まず、GitHub からライブラリをダウンロードする必要があります。

たとえば、フォルダ src を作成し、PHPMailer.phpSMTP.php、および Exception.php の 3つのファイルをそのフォルダにコピーします。次に、ファイル index.php を作成し、require ステートメントを使用してこれらの 3つのファイルを含めます。次に、これらのファイルのそれぞれのクラスを使用します。次に、PHPMailer() クラスのオブジェクト $mail を作成します。Username および Password プロパティを使用して、送信者の電子メールとパスワードを設定します。Subject プロパティと Body プロパティを使用して、電子メールの件名と本文を設定します。addAttachment() 関数を使用して添付ファイルを追加します。メソッドのパラメータとして、添付ファイルの相対パスを指定します。AddAddress() メソッドで受信者の電子メールを書き込みます。最後に、Send() メソッドを呼び出して電子メールを送信します。次に、smtpClose() を呼び出して、SMTP 接続を閉じます。

PHPMailer から Gmail を使用してメールを送信するには、送信者のメールを変更する必要があります。PHPMailer を使用するには、Gmail で安全性の低いアプリのアクセスオプションをオンにする必要があります。次に、次のスクリプトを実行すると、受信者に電子メールと添付ファイルが送信されます。

サンプルコード:

<?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"

SwiftMailer を操作するには、スクリプトに autoloader.php ファイルを含める必要があります。このファイルは、ダウンロードしたファイルのベンダーフォルダー内にあります。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() メソッドで電子メールを送信します。send() メソッドのパラメーターとして $content オブジェクトを指定します。

これは、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 Poudel
Subodh Poudel avatar Subodh Poudel avatar

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