メール送信部分には、『mb_send_mail』を使用しているので、インターネット上のサーバーで、そこからパスワード無しでメールアドレスが利用できる必要があります。 ※ fake sendmail for windows でも動作確認しました ※ FormData を使用して送信すると、ファイルのアップロードとメール送信を一度にできます。 ( FormData を使用したサンプル ) メールアドレスは、mail.php で、セッション変数にセットして使用しています。 Content-Type の MIME は、ファイルアップロード時に取得した type をセッション変数に保存して使用しています。<?php require_once("common.php"); $_SESSION['user'] = "セッションデータを表示する為のダミー"; $_SESSION["mail_from"] = "メールアドレス"; require_once("mail_view.php"); ?>ファイル一覧
<?php require_once("common.php"); require_once("html_head.php"); foreach( $_POST as $Key => $Value ) { $_POST[$Key] = str_replace("\\\\", "\\", $Value ); $_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] ); $_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] ); } mb_language( "ja" ); mb_internal_encoding("utf-8"); $from = $_SESSION["mail_from"]; $fname = $_SESSION["mail_file"]; $mime = $_SESSION['mime']; if ( $fname == "" ) { print "ファイルをアップロードして下さい <a href=\"mail.php\">戻る</a><br>"; exit(); } $uniqid = uniqid(); $headers = "From: {$from}\n"; $headers .= "Content-Type: multipart/mixed; boundary=\"{$uniqid}\"\n"; $body = "--{$uniqid}\n"; $body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; $body .= "\n"; $body .= $_POST['text'] . "\n"; $body .= "--{$uniqid}\n"; $body .= "Content-Type: {$mime}; name=\"{$fname}\"\n"; $body .= "Content-Transfer-Encoding: base64\n"; $body .= "Content-Disposition: attachment; filename=\"{$fname}\"\n"; $body .= "\n"; $path = "upload_file/{$fname}"; $data = file_get_contents($path); $encode = base64_encode($data); $body .= chunk_split($encode); $body .= "\n--{$uniqid}--\n"; $ret = mb_send_mail( $_POST['to_address'], $_POST['subj'], $body, $headers ); // アップロードして添付したファイルを削除 unlink($path); $_SESSION["mail_file"] = ""; if ( $ret === TRUE ) { print "<a href=\"mail.php\">戻る</a> メール送信が終了しました。<br>"; } else { print "<a href=\"mail.php\">戻る</a> メール送信に失敗しました。<br>"; } print "</body>"; print "</html>"; ?>
ファイルのアップロード後、アップロードフォルダのファイルのタイムスタンプが5分以上経過している場合は削除します。(upload1.php) ファイルアップロードの実行は IFRAME 内の別ページで行っています。さらに、IFRAME 内の IFRAME にアップロード結果を表示している為、アップロード結果の『ファイル名』をメインページに転送する為、JavaScript を PHP で出力しています。 その際、メインページでは jQuery を使用しているので、メインページの jQuery を使用してファイル名をテキストフィールドに転送しています
if ( move_uploaded_file( $_FILES['file_1']['tmp_name'], $upload ) ) { print "アップロードに成功しました<br>"; $_SESSION["mail_file"] = $target; print "<script>"; print " parent.parent.$('#mail_file').val( \"{$target}\" );"; print "</script>"; } else { print "アップロードに失敗しました<br>"; }
関連する記事 fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信 : Gmail なので ssl(465)
|
【PHP + 通信の最新記事】
- fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信
- PHP の cURL でファイルアップロード
- PHP : WEB でもコマンドラインでも HTTP でファイルをダウンロードする 『fget.php』
- PHP : cURL : Google Photo API の albums.list メソッドを使用して アルバム一覧データを取得する
- PHP + cURL で Google Photo API の アクセストークンを取得する
- PHP : cURL で FTP + SSL ダウンロード
- PHP の imap 関数で( Windows ローカル )、Yahoo メールのメールをさくらインターネットのメールへコピーする
- PHP の imap 関数( Windows のローカル )で、さくらインターネットのメールボックスの情報を取得する
- PHP : IMAP 関数 でまずメールのヘッダ部分を整理してログに出力する / ※ JSON 出力を追加
- ファイルを一つアップロード : FORM の target を IFRAME にして、PHP に JavaScript を書き出させて元のページにメッセージを表示させる
- Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信
- PHP をコマンドプロンプトから実行して、WEB 上のデータを取得するいくつかの方法
- FormData を使用して $.ajax で送信すると、ファイルのアップロードとメール送信(ファイル添付)を一度に行えます
- PHP : mb_send_mail を使用した自家用メール送信 API
- PHP で Windows標準のオブジェクト(CDO.Message)とGMail を使ってメール送信
- PHP : http 経由でファイルのサイズを取得する file_size 関数と ファイルサイズを付加した get_imagesize 関数
- 連想配列のキー部分がプロパティと一致したらセットする( メール送信用クラス )
- PHP : リモートのファイルサイズを取得する
- ローカルの PHP を使ってコマンドプロンプトより簡単にバイナリファイルをアップロードする
- PHP の cURL で ftp サーバーにファイルをアップロードする(SSLなし)