ホームページ  >  記事  >  バックエンド開発  >  メールを送信するphpのmail()関数の使用例を詳しく解説

メールを送信するphpのmail()関数の使用例を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-06-27 10:24:303059ブラウズ

1. はじめに
Mail()関数、この関数を使用してメールを送信できます。
要件
Mail 関数を使用するには、PHP がシステム内でバイナリ メール ファイルをコンパイルして送信する機能を備えている必要があります。 qmail や postfix などの他のメール プログラムを使用する場合は、それらを使用してメール パッケージを送信できるという確信が必要です。 PHP は最初にパス上で sendmail を検索するため、次のパスが推奨されます: :/usr/bin :/usr/sbin :/usr/etc :/etc:/usr/ucblib :/usr/lib PHP をコンパイルするユーザーは、バイナリの sendmail にもアクセスできる必要があります。
インストール
これらの機能はPHPコアの一部であり、インストールしなくても使用できます。
実行時設定
これらの関数の動作は、グローバル設定ファイルphp.iniの影響を受けます。
表 1. メールの基本構成オプション:

名前 デフォルト値 変更可能な値

SMTP "localhost" PHP_INI_ALL

smtp_port "25" PHP_INI_ALL

sendmail_from NULL PHP_INI_ALL

sendmail_path _PATH PHP_INI_SYSTEM

メールの詳細については、ini_set を参照してください。 () 設定オプションの関数。以下に、この構成オプションについて簡単に説明します。
SMTP string
Windows のみ: SMTP サーバーの DNS 名または IP アドレス。 PHP は、mail() 関数を使用して電子メールを送信するときに SMTP サーバーを使用します。
smtp_portint
Windows でのみ使用: mail() 関数を使用してメールを送信するときに、指定した SMTP サーバーに接続するポート番号を設定します。デフォルト: 25。 PHP 4.3.0以降でのみ利用可能です。
sendmail_from string
Windows システムで PHP が電子メールを送信するとき、「From:」電子メール アドレスが使用されます。
sendmail_path string
送信メールプログラムの場所。通常は /usr/sbin/sendmail または /usr/lib/ にあります。ここでの構成オプションは、適切に機能するようにデフォルト値に設定されています。ただし、失敗した場合は、ここで設定できます。
あなたのシステムがsendmailを使用できない場合は、以下の手順に従って、提供されているメールシステムでsendmailラッパー/代替品をセットアップする必要があります。たとえば、Qmail ユーザーは、これを新しいパス /var/qmail/bin/sendmail または /var/qmail/bin/qmail-inject に設定できます。
qmail - オプションなしでメールを正しく処理します。
リソースタイプ
この拡張モジュールはリソースタイプを定義しません。
事前定義された定数
この拡張モジュールは定数を定義しません

2. 使用方法
構文:

bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])   

mail() 関数は、指定されたメッセージ (文字列メッセージ) を指定された電子メール アドレス (文字列宛先) に送信できます。 。複数の電子メール アドレスはカンマで区切る必要があります。この機能を使用して、電子メールの添付ファイルや特殊な種類のファイルを送信できます。
上記の構文の各パラメーターの意味は次のとおりです:
string to - 受信者の電子メール アドレス、
string subject - 電子メールの件名、
string message - 電子メールの本文、
string added_headers - 追加情報を追加します。電子メールはレターのヘッダーと末尾に追加されます。
メールが正常に送信された場合、mail() 関数は TRUE を返し、それ以外の場合は FALSE を返します。 知らせ! Windows での

mail() 関数の実行方法は、多くの点で UNIX システムとは異なります。
1. メッセージ本文の形成にローカルバイナリを使用しません;
2. From:、Cc:、Bcc:、Date: などのヘッダー要素は最初に MTA によって解釈されませんが、PHP によって解釈できます。 PHP c10cdd1e24bd88c94fb12e4dd9365f89= 4.3 は、前述のヘッダー要素をすべてサポートしますが、大文字と小文字は区別されません。
2.1. 例 1. メールを送信する:

mail("joecool@example.com", "My Subject", "Line 1nLine 2nLine 3");

2.2. 4 番目のパラメーターが使用される場合、このパラメーター文字列はレターのヘッダーと末尾に挿入されます。これは通常、追加のヘッダー情報を示すために挿入されます。複数の追加ヘッダー情報は、復帰 r と改行 n 文字で区切る必要があります。
例 2. 追加のヘッダー情報を含む電子メールを送信する:

mail("nobody@example.com", "the subject", $message,"From: webmaster@{$_SERVER[’SERVER_NAME’]}rn"    
."Reply-T webmaster@{$_SERVER[’SERVER_NAME’]}rn"."X-Mailer: PHP/" .phpversion());

2.3.Additional_parameters パラメーターが使用される場合、プログラムは電子メールの送信時に追加のパラメーターを設定するために sendmail_path 構成を使用します。たとえば、これを使用して、メール送信前に -f オプションを使用するときに送信者のアドレス エンベロープを設定できます。この方法を使用して送信者エンベロープを設定する場合、次を使用してエンベロープ送信者を設定するときに「X-Warning」ヘッダーがメッセージに追加されないように、Web サーバーが実行するユーザーを sendmail 構成に追加する必要がある場合があります。このメソッドです。
例 3. ヘッダー情報を追加し、コマンド パラメーターを追加して電子メールを送信します。

mail("nobody@example.com", "the subject", $message,"From: webmaster@{$_SERVER[’SERVER_NAME’]}",      
 "-fwebmaster@{$_SERVER[’SERVER_NAME’]}");

  注意:其中的第五个参数附加在PHP 4.0.5版本中。在PHP 4.2.3以后的版本中的安全模式中被禁止,如果用它的话将返回一个警告信息和返回FALSE值。   
  你同样能用简单的字符串构造技术建立一个复杂的邮件消息。
例子 4. 发送一个复杂邮件

/*收件人*/
$to = "Mary " . ", " ; //注意逗号
$to .= "Kelly ";
 /*主题*/
$subject = "Birthday Reminders for August";
/*正文*/
$message = ’         
Here are the birthdays upcoming in August!
’;
 /*你能设置头内容:Content-type来发送HTML格式邮件。*/
 $headers = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=iso-8859-1rn";
 /*附加头消息*/
$headers .= "From: Birthday Reminder rn";
$headers .= "Cc: birthdayarchive@example.comrn";
$headers .= "Bcc: birthdaycheck@example.comrn";
/*发送它*/
mail($to, $subject, $message, $headers);
@example.com>@example.com>@example.com>

注意:
  1、不要在收件人地址和主题中有换行符号,否则邮件可能不能被发送出去。
  2、收件人地址参数(string to)中不能存在以"Something 12dddcdb18cfaab619f8d5d10409b77f"形式地址,否则当用MTA时mail命令可能不被正确的分析。
  3、PHP使用mail函数发送邮件标题乱码问题 PHP程序使用mail()函数发送邮件的时候,标题中文的话会出现乱码。
解决方法:
  先用函数base64_encode() — 使用 MIME base64 对数据进行编码 标题字符串前加编码类型例如: =?UTF-8?B? 标题字符串后加:?= 邮件header说明Content-type — 防止邮件正文也乱码
举例:

$to  = 'xinple@example.com';
$subject  = "=?UTF-8?B?".base64_encode('邮件标题')."?=";
$headers  = 'MIME-Version: 1.0' . "rn";
$headers .= 'Content-type: text/html; charset=utf-8' . "rn";
// Additional headers
$headers .= 'To: Xinple' . "rn";
$headers .= 'From: Admin ' . "rn";
$headers .= 'Reply-To: Xinple' . "rn";
mail($to, $subject, $message, $headers);@example>@example.com>@example.com

以上がメールを送信するphpのmail()関数の使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。