数あるPHPのメール送信ライブラリの中でも、使う機会の多いPHPMailer。
最近PHPMailerを使って送信するメールに、ファイルを添付する機能を追加することがあったので、その設定方法をまとめておく。
ファイルを添付する方法
PHPMailerではファイル添付のメソッドが用意されており、AddAttachment
の第一引数にファイルパス、第二引数にファイル名を指定することで、簡単に添付ファイル付きのメールを送信することができる。
<?php
require __DIR__.'/vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$Mail = new PHPMailer(true);
// 基本情報の設定など一部省略
// ファイル添付メソッド
$Mail->AddAttachment($filePath, $fileName);
$Mail->addAddress('customer@example.com');
$Mail->Subject = '件名';
$Mail->Body = '本文';
$Mail->send();
フォームからアップロードされたファイルを添付する場合は、$_FILES
変数からファイル情報を受け取る。
以下はシンプルな例だが、本来はファイルタイプやファイルサイズなどのバリデーションをおこなう必要がある。
$filePath = $_FILES['upload_file']['tmp_name'];
$fileName = $_FILES['upload_file']['name'];
$Mail->AddAttachment($filePath, $fileName);
添付ファイルをクリアする
AddAttachment
メソッドを使って添付ファイル付きのメールを送信した後に、再度同じオブジェクトからメール送信をおこなう場合、前に添付したファイルが残ってしまうので、場合によってはクリアする必要があるだろう。
その際はメール送信後に、以下のとおりclearAttachments
メソッドを実行すればクリアすることができる。
// 添付ファイルをクリア
$Mail->clearAttachments();
なお、送信先アドレスなどの情報をクリアする場合はclearAllRecipients
メソッドを実行する。
// 送信先情報をクリア
$Mail->clearAllRecipients();