添付ファイル付きのメール送信

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); }

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について