添付ファイル付きメールの送信
2019年7月22日 (月) 13:44時点におけるRin-scrooge (トーク | 投稿記録)による版 (ページの作成:「「メールの送信」を基にファイルを添付して送信してみるよ。<br/> メールの送信と同じく、メール受信をトリガーにして…」)
「メールの送信」を基にファイルを添付して送信してみるよ。
メールの送信と同じく、メール受信をトリガーにして呼び出す用だから、添付するファイルのパスはフルパスできってるよ。
mb_send_mail
「mb_send_mail()」を使って添付ファイル付きメールを送信するサンプルプログラムだよ。
#!/usr/local/bin/php
<?php
//カレントの言語を日本語にする
mb_language("ja");
//内部文字エンコードを設定する
mb_internal_encoding("UTF-8");
//設定
$mailTo = "【送信先アドレス】";
$subject = "表題";
$message = "本文";
$dir = '【添付ファイル格納ディレクトリパス】';
$file = '【添付ファイル名】';
$filename = $dir.$file;
//文字コード変換
$subject = mb_convert_encoding($subject,"ISO-2022-JP-MS","UTF-8");
$message = mb_convert_encoding($message,"ISO-2022-JP-MS","UTF-8");
$header = "From: 【送信元アドレス】\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"__PHPRECIPE__\"\r\n";
$header .= "\r\n";
$body = "--__PHPRECIPE__\r\n";
$body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\r\n";
$body .= "\r\n";
$body .= $message . "\r\n";
$body .= "--__PHPRECIPE__\r\n";
// 添付ファイルへの処理
$handle = fopen($filename, 'r');
$attachFile = fread($handle, filesize($filename));
fclose($handle);
$attachEncode = base64_encode($attachFile);
$body .= "Content-Type: image/jpeg; name=\"$file\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
$body .= "\r\n";
$body .= chunk_split($attachEncode) . "\r\n";
$body .= "--__PHPRECIPE__--\r\n";
//メール送信
mb_send_mail($mailTo, $subject, $body, $header);
?>
mail()
「mail()」を使って添付ファイル付きメールを送信するサンプルプログラムだよ。
#!/usr/local/bin/php
<?php
//カレントの言語を日本語にする
mb_language("ja");
//内部文字エンコードを設定する
mb_internal_encoding("UTF-8");
//設定
$mailTo = "【送信先アドレス】";
$subject = "表題";
$message = "本文";
$dir = '【添付ファイル格納ディレクトリパス】';
$file = '【添付ファイル名】';
$filename = $dir.$file;
//文字コード変換
$subject = mb_encode_mimeheader($subject,"ISO-2022-JP-MS");
$message = mb_convert_encoding($message,"ISO-2022-JP-MS","UTF-8");
$header = "From: 【送信元アドレス】\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"__PHPRECIPE__\"\r\n";
$header .= "\r\n";
$body = "--__PHPRECIPE__\r\n";
$body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\r\n";
$body .= "\r\n";
$body .= $message . "\r\n";
$body .= "--__PHPRECIPE__\r\n";
// 添付ファイルへの処理
$handle = fopen($filename, 'r');
$attachFile = fread($handle, filesize($filename));
fclose($handle);
$attachEncode = base64_encode($attachFile);
$body .= "Content-Type: image/jpeg; name=\"$file\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
$body .= "\r\n";
$body .= chunk_split($attachEncode) . "\r\n";
$body .= "--__PHPRECIPE__--\r\n";
//メール送信
mail($mailTo, $subject, $body, $header);
?>
Mail::send()
「Mail::send()」を使って、添付ファイル付きメールを送信するサンプルプログラムだよ。
#!/usr/local/bin/php
<?php
require_once '/home/【ドメイン名】/pear/share/pear/Mail.php';
require_once '/home/【ドメイン名】/pear/share/pear/Mail/mime.php';
//言語設定、内部エンコーディングを指定する
mb_language("japanese");
mb_internal_encoding("UTF-8");
//添付メールを送る
$mailTo = "【送信先アドレス】";
$subject = "表題";
$body = "本文";
//コード変換
$subject = mb_convert_encoding($subject, "ISO-2022-JP-MS", "UTF-8");
$body = mb_convert_encoding($body, "ISO-2022-JP-MS", "UTF-8");
$mimeObject = new Mail_Mime("\n");
$mimeObject->setTxtBody($body);
$mimeObject->addAttachment("【添付ファイルのフルパス】","image/jpeg");
$body_param = array(
"head_charset" => "ISO-2022-JP",
"text_charset" => "ISO-2022-JP"
);
$body = $mimeObject->get($body_param);
$headers = array(
"To" => $mailTo,
"From" => "【送信元アドレス】",
"Subject" => mb_encode_mimeheader($subject)
);
$header = $mimeObject->headers($headers);
//メール送信
$mail = Mail::factory("mail");
$mail->send($mailTo,$header,$body);
?>