ITメモ
PHP
PHP マニュアル(PHP Official Web)
Basic Knowlege / 基礎知識
「CentOS」にPHPをインストール方法PHPファイルの作り方外部「クラスファイル」「関数ファイル」を読み込む方法変数の使い方定義済み変数の使い方関数の使い方配列の使い方クラスの使い方ヒアドキュメントの使い方PHPの演算子条件分岐
Access Info / アクセス インフォ
IPアドレスを確認する方法アクセスされたURLパスを確認する方法PCとスマートフォンの判定アクセスしたページから特定ページにリダイレクトさせる方法
ファイル・ディレクトリ
ファイルとディレクトリの操作方法(作成・確認・削除)ディレクトリ内のファイル・ディレクトリPath(URL)を配列に格納する方法
ファイルの読み込みと書き込み
「file_get_contents」関数を使ってファイルを読み込む方法「readfile」関数を使ってファイルを読み込む方法「file」関数を使ってファイルを読み込む方法「fread」関数を使ってファイルを読み込む方法「fgets」関数を使ってファイルを読み込む方法「fwrite」関数を使ってファイルに書き込みをする方法
チェック
「is_file」関数 - 指定パスがファイルかをチェックする方法「is_dir」関数 - 指定パスがディレクトリかをチェックする方法
画像ファイル
画像ファイルのIPTC情報を取得する方法 画像ファイルをZipファイル形式でダウンロードさせる画像をコピーする方法画像のキーワード情報を取得する方法画像ファイルから「EXIF」ヘッダを読み込む画像の大きさ・画像情報を取得する
情報
「PHP」の出力系関数 - プログラミングで必須のデータ内容をチェックする方法関数の返り値を複数で受け取る方法使用可能なメモリ使用量を変更する方法mb_send_mail - エンコード変換を行ってメールを送信する「Google」「Goolge Map]に渡した値が文字化けするときの解決方法PHPで日付比較をする方法
文字列
「文字列」の長さを取得する方法【 substr 】「文字列」から一部分を取り出す方法【 explode 】「文字列」を分割する方法【 preg_split 】正規表現で「文字列」を分割するランダムな数字を取得する方法
文字の検索
「strpos」関数で指定文字の最初の位置を確認する方法「preg_match」関数で指定した「正規表現」で検索する方法
文字の置換
「str_replace」関数で指定した文字列を置き換える方法「preg_replace」関数で指定した文字列を置き換える方法
文字の削除
「trim」関数 - 文字列の両端から指定文字を削除する方法「ltrim」関数 - 文字列の先頭から指定文字を削除する方法「rtrim」関数 - 文字列の末尾から指定文字を削除する方法文字列の中にある「文字」を削除する方法「改行」を削除する方法文字列の「空白(スペース)」を削除する方法
配列
配列に値を追加する方法配列の値を削除する方法配列の有無を確認する方法配列の中から重複した値を削除する配列の空の値を削除する配列の並び順を変えるis_array - 変数が配列かを確認するin_array - 配列の中に指定した値があるか確認するimplode - 値の間に文字加えて配列を文字列に変換するarray_merge - 配列と配列を結合する方法
ライブラリ
「PHP」で使えるライブラリの種類「GD」ライブラリの使い方
Server / サーバー
サーバーの最大実行可能時間を変更する





【PHP】mb_send_mail - エンコード変換を行ってメールを送信する

【PHP】
mb_send_mail - エンコード変換を行ってメールを送信する




「mb_send_mail」関数とは

PHPのプログラム上から、メールを送信するための関数で、エンコード変換を行ってメール送信が可能。
日本語によるメール送信は、言語と文字エンコーディングを設定して、マルチバイト対応の「mb_send_mail()」関数を使用する。
英文のメール送信であれば、「mail()」関数でも送信可能。
エンコード(変換)対象は、「ヘッダ」「本文」で、
「mb_language()」 の設定に基づき変換、 エンコードされる。




「mb_send_mail」関数の書式


mb_send_mail(送信先,タイトル,メール本文,ヘッダー,パラメーター)
mb_send_mail($to,$subject,$body,$headers,$sendmail_params)

メールを送信する際には、必ず「From」ヘッダが含まれている必要がある。
パラメータで指定するか、「php.ini」にデフォルト値を指定する。
エンコードの設定は、「mb_language」関数の設定となる。


ヘッダーの設定
名前の部分が日本語の場合、mb_encode_mimeheaderでエンコードする必要がある
$headers= "MIME-Version: 1.0 \n";
$headers.="From: ".mb_encode_mimeheader(mb_convert_encoding("送信元氏名","ISO-2022-JP","AUTO"))."<送信元メールアドレス> \n";
$headers.="Reply-To: ".mb_encode_mimeheader(mb_convert_encoding("返信先宛先","ISO-2022-JP","AUTO"))."<返信先メールアドレス> \n";
$headers.="Content-Type: text/plain;charset=ISO-2022-JP \n";


HTML メールを送信するには下記のようにする。
$headers='MIME-Version: 1.0' . "\r\n";
$headers.='Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers.="From: ".mb_encode_mimeheader(mb_convert_encoding("送信元氏名","ISO-2022-JP","AUTO"))."<送信元メールアドレス> \n";
$headers.="Reply-To: ".mb_encode_mimeheader(mb_convert_encoding("返信先宛先","ISO-2022-JP","AUTO"))."<返信先メールアドレス> \n";
$headers.="Content-Type: text/plain;charset=ISO-2022-JP \n";



パラメーターでの「From」ヘッダの設定方法
$sendmail_params="-f$from_email";



「mb_language」関数の設定

mixed mb_language ([ string $language = mb_language() ] )
mb_language("ja");

mb_language( 'Japanese' ); mb_internal_encoding( 'UTF-8' );
mb_send_mail() は、e-mail をエンコードする際にこの設定を使用する。

設定可能(有効な言語)
"Japanese", "ja","English","en", "uni"
Japanese「ISO-2022-JP」「Base64」
uni「UTF-8」「Base64」
English「ISO-8859-1」「quoted printable」



「php.ini」での設定


PHPからメール送信するときは「php.ini」で、「sendmail_path」の設定をしなければならない。
Windows環境で利用する場合は「sendmail_from」にデフォルトのメール送信元のメールアドレスが設定可能。
設定する場合は先頭のセミコロン(;)を外してメールアドレスを設定する。


「sendmail」のない環境から送信

Windows環境などでは基本的にsendmailが入っていないので送信に必要な情報をphp.iniに設定する必要がある。
SMTPに設定したSMTPサーバは、mail(),mb_send_mail()関数を使用する際に使われる。
「sendmail_from」に設定したメールアドレスは、「Return-Path」ヘッダとしても設定される。

SMTP = smtp.example.com
sendmail_from = sample@example.com



「sendmail」のある環境から送信

PHP設定ファイル「php.ini」の「sendmail_path」に「sendmail」のURLとオプションを指定する。 「sendmail_path」が指定されると、他の「SMTP」「sendmail_from」の設定値は無視される。
sendmail_path = "/sendmail -t -i"


デフォルトの送信元メールアドレスを登録する

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
sendmail_from = me@example.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =