添付ファイル付きのメール送信
PHPで添付ファイルを付けてメールを送信するモジュール
PHP
/**
* 添付ファイル付きのメール送信
*
* @param string $to : 受信アドレス
* @param string $subject : 件名
* @param string $messag : 本文
* @param string $from : 送信アドレス
* @param string $name : 送信者名
* @param string $cc
* @param string $bcc
* @param string $reply_to: 返信アドレス
* @param string $reply_path : エラー通知アドレス
* @param string $file_name
* @param string $load_name
* @return boolean
*/
function sendMail($to, $subject, $message, $from, $name = '', $cc = '', $bcc = '', $reply_to = '', $reply_path = '', $file_name = '', $load_name = '')
{
mb_language('Japanese');
mb_internal_encoding('UTF-8');
if (empty($name)) {
$name = $from;
} else {
$name = mb_encode_mimeheader($name, 'ISO-2022-JP-MS', 'Q');
}
if (empty($reply_to)) {
$reply_to = $from;
}
if (empty($reply_path)) {
$return_path = $from;
}
// バウンダリ文字列
$boundary = md5(uniqid(rand()));
// ヘッダ
$headers = '';
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$headers .= "From: " . $name . "<" . $from . ">\n";
if (! empty($cc)) {
$headers .= "Cc: " . $cc . "\n";
}
if (! empty($bcc)) {
$headers .= "Bcc: " . $bcc . "\n";
}
$headers .= "Reply-To: " . $reply_to . "\n";
$headers .= "Return-Path: " . $return_path . "\n";
$subject = mb_convert_encoding($subject, 'ISO-2022-JP-MS', 'UTF-8');
$message = mb_convert_encoding($message, 'ISO-2022-JP-MS', 'UTF-8');
$path_parts = pathinfo($file_name);
// 拡張子によるContent-TypeとContent-Dispositionの設定
$file_ext = strtolower($path_parts['extension']);
if ($file_ext == 'pdf') {
$content_type = 'application/pdf';
} elseif ($file_ext == 'jpg' || $file_ext == 'jpeg') {
$content_type = 'image/jpeg';
} elseif ($file_ext == 'gif') {
$content_type = 'image/gif';
} elseif ($file_ext == 'png') {
$content_type = 'image/png';
} else {
$content_type = 'application/octet-stream';
}
// ロードするファイル名が未定義の場合は元ファイル名と同じに
if (empty($load_name)) {
$load_name = $path_parts['filename'];
}
// 添付ファイル
$attachment = chunk_split(base64_encode(file_get_contents($file_name)));
$message .= "\n\n--" . $boundary . "\n";
$message .= "Content-Type: " . $content_type . ";name=\"$load_name\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment; filename=\"$load_name\"\n";
$message .= $attachment . "\n\n";
$message .= "--" . $boundary . "--";
// 送信
return mb_send_mail($to, $subject, $message, $headers);
}