はじめに
携帯端末の内部コードは、docomo、au、SoftBankいずれもShift-JISです。
パソコンからインターネットで、CGI(PHP)でメール送信する方法は、大きく分けると「mail関数」とマルチバイトに対応の「mb_send_mail関数」の2種類あります。
「mail関数」を使い、docomoガラケー携帯へメール送信する場合は、メール送信するAP(HTMLおよびPHPなど)のソースコーダは、SHIFT-JISで作成します。
ただし、エンコード変換を行ってメールの送信が可能な「mb_send_mail関数」を使う場合は、ソースコーダはUTF-8で作成します。
また、メール本文の形式には、文書のみで作成された一般的な「テキストメール」と、画像の挿入や文字加工で見た目を整えたHTMLで作成された「HTMLメール」があります。
本ページは、PHPの「mail関数」および「mb_send_mail関数」を使用して、docomoガラゲーまたはスマホ携帯へのテキストメールおよびHTMLメール送信方法についてその4例(下表参照)について説明します。
- スマホ本体内「パソコンなどのメール受信設定」
なお、パソコンからスマホへメールを送信する場合は、スマホ本体内の「メール設定」を変更する必要があります。
設定方法は、「パソコンなどのメール受信設定」について、「拒否」する を「受信」する に変更します。
設定変更は、最寄りのドコモショップに依頼すると良いでしょう。 - 送信元メールアドレス(From)(パソコン側)
Fromメールアドレスは、PHP送信メールアプリの収容ドメインのメールアドレスであること。
例えば、PHP送信メールアプリのURLが、http://urbanqee.com/mail/php-keitai-sendmail.php の場合、
FROMメールアドレスはつぎの形式です。
【例】xxxx@urbanqee.com (xxxxは任意) - メールの送信管理
メールは、PHPを使用してパソコンから送信するため、送信メールの管理をPHPで独自に作り込みが必要です。 - メールの受信管理
前項2で作成したメールアドレスで、使用ドメイン(例、urbanqee.com)内にメールアカウントを作成し、 フリーのメールソフトなど(例 EdMax)で受信管理を行うと良いでしょう。PHP送信メールの動作イメージを下図に示します。
(図)PHP送信メールの動作イメージ
mail関数およびmb_send_mail関数のPHPマニュアルは以下を参照してください。
- mail関数:https://www.php.net/manual/ja/function.mail.php
- mb_send_mail関数:https://www.php.net/manual/ja/function.mb-send-mail.php
項 番 | PHP送信メール名(ページ内リンク) | ソースコード | PHP関数 | テキストメール HTMLメール | 応用機能 | 備 考 |
例1 | PHP送信メール01 携帯テキストメール mail関数/SHIFT-JIS | SHIFT-JIS | テキストメール | |||
例2 | PHP送信メール06 携帯HTMLメール mail関数/SHIFT-JIS | SHIFT-JIS | HTMLメール | |||
例3 | PHP送信メール02 携帯テキストメール mb_send_mail関数/UTF-8 | UTF-8 | mb_send_mail | テキストメール | ||
例4 | PHP送信メール07 携帯HTMLメール mb_send_mail関数/UTF-8 | UTF-8 | mb_send_mail | HTMLメール | ||
記事 | 【注】4例は、メールを送信する機能のみで、他の機能はありません。 |
1.PHP送信メール01 携帯テキストメール - mail関数 SHIFT-JIS
・呼び出し方 - メールを送信します
- 送信先アドレス(to)
メールを送信したい宛先アドレス。
複数の宛先にメールを送信する場合は、コンマ区切りで複数のアドレスを指定(入力)します。
(例)"to1@example.com,to2@example.com,to3@example.com" - 件名(subject)
メールの件名は1行あたりの文字制限の半角78文字まで入力できます(下メール本文を参照)。 - メール本文(message)
メールの本文。
本文メッセージの改行コードは CRLF (\r\n) となります。各行の長さは 70 文字を超えては いけません。 改行も含めた文字列を代入できますが、一行あたりの長さは70文字未満でなければなりません。そのため日本語の場合は35文字以下になります。 - 追加ヘッダー(headers) (オプション)
メールヘッダーの後に追加挿入されます。
通常、これには追加のヘッダ(From、Cc、Bcc)のために用いられます。メールを送信する際には、必ず Fromヘッダーが含まれていなければなりません。
PHP7.2.0以降はstring型とarray型どちらでも使用できます。それ以前はstring型のみになります。
複数のヘッダを追加する場合は CRLF(\r\n)で区切ります。
「From」ヘッダーは、php.iniでデフォルト値を指定している場合は、省略することができます。
Fromメールアドレスは、PHP送信メールアプリの収容ドメインのメールアドレスであること。
【例】xxxx@urbanqee.com
<?php //PHP送信メール01 携帯テキストメール - mail関数/SHIFT-JIS $to = $_POST['to']; $subject = $_POST['subject']; $message = $_POST['message']; // nl2br($_POST['content']); $headers = "From: ". $_POST['from']; if(mail($to, $subject, $message,$headers)){ echo mb_convert_encoding("メールを送信しました", "UTF-8", "SJIS"); //PHPソースコードがSHIFT-JISの場合 } else { echo mb_convert_encoding("メールの送信に失敗しました", "UTF-8", "SJIS"); //PHPソースコードがSHIFT-JISの場合 } ?>
(2) メール送信する入力フォームHTMLサンプル
入力フォームの操作において、メールの本文は、入力フォームの本文(textarea)に入力します。
(3)メール送信確認結果
メール送信確認結果は、日本語を含むFromアドレス名称、件名および特殊文字を含む本文などは、正しく表示されます。
項番 | 送信内容 | @yahoo.co.jp | @outlook.jp | @gmail.com | 携帯@docomo.ne.jp | 備 考 |
1 | Fromアドレス名称 | OK | ||||
2 | 件名 | OK | ||||
3 | 本文(テキスト) (特殊文字含む) | OK | ||||
4 | その他 | |||||
記事 |
2.PHP送信メール06 携帯HTMLメール - mail関数 SHIFT-JIS
・呼び出し方 - メールを送信します
- 送信先アドレス(to)
メールを送信したい宛先アドレス。
複数の宛先にメールを送信する場合は、コンマ区切りで複数のアドレスを指定(入力)します。
(例)"to1@example.com,to2@example.com,to3@example.com" - 件名(subject)
件名は1行あたりの文字制限の半角78文字まで入力できます(下メール本文を参照)。
ただし、outlookメールの場合、全角18/半角36文字以内です(オーバーの場合文字化け)。 - メール本文(message)
メールの本文。
本文メッセージの改行コードは CRLF (\r\n) となります。各行の長さは 70 文字を超えては いけません。 改行も含めた文字列を代入できますが、一行あたりの長さは70文字未満でなければなりません。そのため日本語の場合は35文字以下になります。 - 追加ヘッダー(headers) (オプション)
メールヘッダーの後に追加挿入されます。
通常、これには追加のヘッダ(From、Cc、Bcc)のために用いられます。メールを送信する際には、必ず Fromヘッダーが含まれていなければなりません。
PHP7.2.0以降はstring型とarray型どちらでも使用できます。それ以前はstring型のみになります。
複数のヘッダを追加する場合は CRLF(\r\n)で区切ります。
「From」ヘッダーは、php.iniでデフォルト値を指定している場合は、省略することができます。
Fromメールアドレスは、PHP送信メールアプリの収容ドメインのメールアドレスであること。
【例】xxxx@urbanqee.com
(1) mail関数を使用して、携帯HTMLメールを送信するPHPサンプル
<?php //PHP送信メール06 携帯HTMLメール - mail関数/SHIFT-JIS $to = $_POST['to']; $subject = $_POST['subject']; $message = $_POST['message']; //nl2br($_POST['message']); $headers = "From:" . $_POST['from']; $headers .= "\r\n"; $headers .= "Content-type: text/html; charset=SHIFT-JIS"; //メール起動 if(mail($to, $subject, $message, $headers)){ echo mb_convert_encoding("メールを送信しました", "UTF-8", "SJIS"); //PHPソースコードがSHIFT-JISの場合 } else { echo mb_convert_encoding("メールの送信に失敗しました", "UTF-8", "SJIS"); //PHPソースコードがSHIFT-JISの場合 } ?>
(2) メール送信する入力フォームHTMLサンプル
入力フォームの操作において、HTMLメール本文(HTML)全体を、入力フォームの本文(textarea)に入力(貼り付け)します。
(3)メール送信確認結果
メール送信確認結果は、日本語を含むFromアドレス名称、件名および特殊文字(例:①)や絵文字アイコン(例:😀)を含め本文など、正しく表示されます。 ただし、本文内の画像は表示されません。
項番 | 送信内容 | @yahoo.co.jp | @outlook.jp | @gmail.com | 携帯@docomo.ne.jp | 備 考 |
1 | Fromアドレス名称 | OK | ||||
2 | 件名 | OK | ||||
3 | 本文 (絵文字アイコン/特殊文字含む) | OK | ||||
4 | 本文内画像 | 表示せず | ||||
記事 |
3.PHP送信メール02 携帯テキストメール - mb_send_mail関数 UTF-8
・呼び出し方 - メールを送信します
- 送信先アドレス(to)
メールを送信したい宛先アドレス。
複数の宛先にメールを送信する場合は、コンマ区切りで複数のアドレスを指定(入力)します。
(例)"to1@example.com,to2@example.com,to3@example.com" - 件名(subject)
件名は1行あたりの文字制限の半角78文字まで入力できます(下メール本文を参照)。
ただし、outlookメールの場合、全角18/半角36文字以内です(オーバーの場合文字化け)。 - メール本文(message)
メールの本文。
本文メッセージの改行コードは CRLF (\r\n) となります。各行の長さは 70 文字を超えては いけません。 改行も含めた文字列を代入できますが、一行あたりの長さは70文字未満でなければなりません。そのため日本語の場合は35文字以下になります。 - 追加ヘッダー(headers) (オプション)
メールヘッダーの後に追加挿入されます。
通常、これには追加のヘッダ(From、Cc、Bcc)のために用いられます。メールを送信する際には、必ず Fromヘッダーが含まれていなければなりません。
PHP7.2.0以降はstring型とarray型どちらでも使用できます。それ以前はstring型のみになります。
複数のヘッダを追加する場合は CRLF(\r\n)で区切ります。
「From」ヘッダーは、php.iniでデフォルト値を指定している場合は、省略することができます。
Fromメールアドレスは、PHP送信メールアプリの収容ドメインのメールアドレスであること。
【例】xxxx@urbanqee.com
(1)mb_send_mail関数を使用して、携帯テキストメールを送信するPHPサンプル
<?php //PHP送信メール02 TEXTメール基本-mb_send_mail関数/UTF-8 mb_language("Japanese"); //mb_send_mail 用 mb_internal_encoding("UTF-8"); //mb_send_mail 用 $fr = $_POST['from']; // 送信者名称<aaaaa@yahoo.jp> 形式 $to = $_POST['to']; // 宛先 $subject = $_POST['subject']; $message = $_POST['message']; $fromarr = explode("<",$_POST['from']); $fromname = mb_encode_mimeheader($fromarr[0],"iso-2022-jp"); //携帯文字化け解消 OK $from = $fromname . "<" . $fromarr[1]; $message = mb_convert_encoding($message, 'ISO-2022-JP-ms', 'UTF-8'); //特殊文字①などNGの場合mb_convert_encoding //ヘッダー $headers = "From: ". $from ."\r\n"; if(mb_send_mail($to, $subject, $message,$headers)){ echo "メールを送信しました"; } else { echo "メールの送信に失敗しました"; } ?>
(2) メール送信する入力フォームHTMLサンプル
入力フォームの操作において、メールの本文を入力フォームの本文(textarea)に入力します。
(3)メール送信確認結果
メール送信確認結果は、日本語を含むFromアドレス名称、件名および特殊文字(例:①)や絵文字アイコン(例:😀)を含め本文など、正しく表示されます。
項番 | 送信内容 | @yahoo.co.jp | @outlook.jp | @gmail.com | 携帯@docomo.ne.jp | 備 考 |
1 | Fromアドレス名称 | OK | ||||
2 | 件名 | OK | ||||
3 | 本文 (絵文字アイコン/特殊文字含む) | OK | ||||
4 | その他 | |||||
記事 |
4.PHP送信メール07 携帯HTMLメール - mb_send_mail関数 UTF-8
・呼び出し方 - メールを送信します
- 送信先アドレス(to)
メールを送信したい宛先アドレス。
複数の宛先にメールを送信する場合は、コンマ区切りで複数のアドレスを指定(入力)します。
(例)"to1@example.com,to2@example.com,to3@example.com" - 件名(subject)
件名は1行あたりの文字制限の半角78文字まで入力できます(下メール本文を参照)。
ただし、outlookメールの場合、全角18/半角36文字以内です(オーバーの場合文字化け)。 - メール本文(message)
メールの本文。
本文メッセージの改行コードは CRLF (\r\n) となります。各行の長さは 70 文字を超えては いけません。 改行も含めた文字列を代入できますが、一行あたりの長さは70文字未満でなければなりません。そのため日本語の場合は35文字以下になります。 - 追加ヘッダー(headers) (オプション)
メールヘッダーの後に追加挿入されます。
通常、これには追加のヘッダ(From、Cc、Bcc)のために用いられます。メールを送信する際には、必ず Fromヘッダーが含まれていなければなりません。
PHP7.2.0以降はstring型とarray型どちらでも使用できます。それ以前はstring型のみになります。
複数のヘッダを追加する場合は CRLF(\r\n)で区切ります。
「From」ヘッダーは、php.iniでデフォルト値を指定している場合は、省略することができます。
Fromメールアドレスは、PHP送信メールアプリの収容ドメインのメールアドレスであること。
【例】xxxx@urbanqee.com
(1) mail関数を使用して、携帯HTMLメールを送信するPHPサンプル
<?php //PHP送信メール07 携帯HTMLメール-mb_send_mail関数/UTF-8 //mb_language("Japanese"); //mb_send_mail関数の場合 HTMLメールの場合不要 //mb_internal_encoding("UTF-8"); //mb_send_mail関数の場合 HTMLメールの場合不要 $to = $_POST['to']; $from = $_POST['from'];; $name = $_POST['name']; $subject = $_POST['subject']; $message = $_POST['message']; // nl2br($_POST['message'])は、2行改行される //ヘッダー $name2 = mb_encode_mimeheader($name,"iso-2022-jp"); //携帯 OK $headers = "From:" . $name2 . "<" .$from . ">" . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8'; //メール送信 if (mb_send_mail($to, $subject, $message, $headers)) { echo 'メールを送信しました'; } else { echo 'メールの送信に失敗しました'; } ?>
(2) メール送信する入力フォームHTMLサンプル
入力フォームの操作において、HTMLメール本文(HTML)全体を、入力フォームの本文(textarea)に入力(貼り付け)します。
(3)メール送信確認結果
メール送信確認結果は、日本語を含むFromアドレス名称、件名および特殊文字(例:①)や絵文字アイコン(例:😀)を含め本文など、正しく表示されます。 ただし、本文内の画像が表示されません。
項番 | 送信内容 | @yahoo.co.jp | @outlook.jp | @gmail.com | 携帯@docomo.ne.jp | 備 考 |
1 | Fromアドレス名称 | OK | ||||
2 | 件名 | OK | ||||
3 | 本文 (絵文字アイコン/特殊文字含む) | OK | ||||
4 | 本文内画像 | 表示せず | ||||
記事 |
- ▼ サイト内関連リンク
- ・PHP送信メール テキストメール 基本編3例 ・応用編2例
- ・PHP送信メール HTMLメール 基本編2例・応用編1例
- ・PHP送信メール docomoガラケー携帯メール TEXT/HTMLメール4例(本ページ)