PHP を使用してメールで添付ファイルを送信する
PHP で電子メールで添付ファイルを送信するさまざまな方法を紹介します。
PHPMailer
を使用して電子メールで添付ファイルを送信する
PHPMailer
クラスを使用して電子メールを送信し、添付ファイルを送信できます。PHPMailer
クラスオブジェクトを作成し、そのメソッドとプロパティを使用して、目的の受信者に電子メールを送信できます。Gmail を使用してメールを送信します。したがって、SMTP
プロトコルを使用します。ライブラリには、添付ファイルを追加できる addAttachment()
メソッドがあります。まず、GitHub からライブラリをダウンロードする必要があります。
たとえば、フォルダ src
を作成し、PHPMailer.php
、SMTP.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 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