.htaccessでPHPのファイルアップロードサイズの上限値を変更
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…
メールフォームからメールを送信する際に、画像(ファイル)を添付できるようにしてほしいとの依頼を受けた際の実装法をメモ。
<form action="./sendmail.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="your-token" value="'.$_SESSION['your-token'].'">
<dl class="form__table">
<dt class="must">お名前</dt>
<dd><input type="text" name="your-name" value=""></dd>
<dt class="must">メールアドレス</dt>
<dd><input type="email" name="your-email" value=""></dd>
<dt class="must">ファイル</dt>
<dd><input type="file" name="your-file"></dd>
<dt class="must">お問い合わせの内容</dt>
<dd><textarea name="your-message"></textarea></dd>
</dl>
<ul class="form__submite">
<li><input type="submit" name="mailform" id="submit" value="送信"></li>
</ul>
</form>
if(!empty($_POST['mailform'])){
foreach($_POST as $key => $value){
$dt[$key] = mb_convert_kana($value, 'KVa', 'UTF-8');
}
//エラー処理は省略
if(!empty($_FILES['your-file']['name'])){
//ファイル名
$file = $_FILES['your-file']['name'];
//添付したいファイルのパス
$file_path = $_FILES['your-file']['tmp_name'];
}
//自動メール送信
//言語設定、内部エンコーディングを指定する
mb_language('japanese');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Asia/Tokyo');
//【相談者宛】件名
$mailto= 'test@syu-u.com';
$form= '運営会社';
$subject_owner = 'お問い合わせがありました';
//入力情報
$resbody = "";
$resbody .= "□お問い合わせ日:".date('Y/m/d', time())."\n";
$resbody .= "□お名前:".$dt['your-name']."\n";
$resbody .= "□メールアドレス:".$dt['your-email']."\n";
$resbody .= "□お問い合わせ:\n";
$resbody .= $dt["your-message"]."\n";
//受取側本文
//メールボディを定義
if(empty($file)) {
$body_owner .= "お申込み内容\n\n";
$body_owner .= "----------------------------------------------------\n";
$body_owner .= $resbody."\n";
$body_owner .= "----------------------------------------------------\n";
}else{
$body_owner = "--__BOUNDARY__\n";
$body_owner .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n\n";
$body_owner .= "お申込み内容\n\n";
$body_owner .= "----------------------------------------------------\n";
$body_owner .= $resbody."\n";
$body_owner .= "----------------------------------------------------\n";
$body_owner .= "--__BOUNDARY__\n";
$body_owner .= "Content-Type: application/octet-stream; name=\"{$file}\"\n";
$body_owner .= "Content-Disposition: attachment; filename=\"{$file}\"\n";
$body_owner .= "Content-Transfer-Encoding: base64\n";
$body_owner .= "\n";
$body_owner .= chunk_split(base64_encode(file_get_contents($file_path)));
$body_owner .= "--__BOUNDARY__\n";
}
//メールヘッダーを定義
$header_owner = "Content-Type: multipart/mixed;boundary=\"__BOUNDARY__\"\n";
$header_owner .= "Return-Path: ".$mailto. " \n";
$header_owner .= "From: ".$form." \n";
$header_owner .= "Sender: ".$form." \n";
$header_owner .= "Reply-To: ".$mailto. " \n";
mb_send_mail($mailto, $subject_owner, $body_owner, $header_owner);
}
実際の使用時は確認画面を用意する必要があるため、「$_POST」で取得した値を「$_SESSION」に入れたり、一時的に画像をWEB上に保管する等をして処理してます。
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…
2020.10.3
テキストエリア等で入力した文字の中にURLを含んでいた場合に、自動で認識してリンクタグを…
2020.12.5
メールフォームからメールを送信する際に、画像(ファイル)を添付できるようにしてほしいとの…
2024.03.30
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが…
2023.12.2
ワードプレスの投稿のカテゴリー機能を、目的ごとに使い分けたいというご要望があった際に、カ…