メインメニューを開く

差分

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

5,207 バイト追加, 2019年7月22日 (月) 13:44
ページの作成:「「メールの送信」を基にファイルを添付して送信してみるよ。<br/> メールの送信と同じく、メール受信をトリガーにして…」
「[[メールの送信]]」を基にファイルを添付して送信してみるよ。<br/>
[[メールの送信]]と同じく、メール受信をトリガーにして呼び出す用だから、添付するファイルのパスはフルパスできってるよ。

== mb_send_mail ==
「mb_send_mail()」を使って添付ファイル付きメールを送信するサンプルプログラムだよ。
<source lang="php">
#!/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);
?>
</source>

== mail() ==
「mail()」を使って添付ファイル付きメールを送信するサンプルプログラムだよ。<br/>
<source lang="php">
#!/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);
?>
</source>

== Mail::send() ==
「Mail::send()」を使って、添付ファイル付きメールを送信するサンプルプログラムだよ。<br/>
<source lang="php">
#!/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);

?>
</source>
[[Category:さくらサーバー]]
[[Category:PHP]]