Heim > Backend-Entwicklung > PHP-Tutorial > Ausführliche Erläuterung der Anwendungsbeispiele der PHP-Funktion mail() zum Senden von E-Mails

Ausführliche Erläuterung der Anwendungsbeispiele der PHP-Funktion mail() zum Senden von E-Mails

伊谢尔伦
Freigeben: 2023-03-11 15:24:02
Original
3121 Leute haben es durchsucht

1. Einführung
Mail()-Funktion, mit dieser Funktion können Sie E-Mails senden.
Anforderungen
Um die Mail-Funktion nutzen zu können, muss PHP in der Lage sein, binäre Maildateien in Ihrem System zu kompilieren und zu versenden. Wenn Sie andere E-Mail-Programme wie qmail oder Postfix verwenden, müssen Sie sicher sein, dass Sie diese zum Versenden von E-Mail-Paketen verwenden können. PHP sucht zuerst nach sendmail in Ihrem Pfad, daher werden die folgenden Pfade empfohlen: :/usr/bin :/usr/sbin :/usr/etc :/etc:/usr/ucblib :/usr/lib. Benutzer, die PHP kompilieren, müssen auch Zugriff auf das binäre Sendmail haben.
Installation
Diese Funktionen sind Teil des PHP-Kerns und können ohne Installation genutzt werden.
Laufzeitkonfiguration
Das Verhalten dieser Funktionen wird durch die globale Konfigurationsdatei php.ini beeinflusst.
Tabelle 1. Grundlegende Mail-Konfigurationsoptionen:

Name Standardwert Veränderbarer Wert

SMTP „localhost“ PHP_INI_ALL

smtp_port „25“ PHP_INI_ALL

sendmail_from NULL PHP_INI_ALL

sendmail_path DEFAULT_SENDMAIL_PATH PHP_INI_SYSTEM

Weitere Konfigurationsoptionen zu Mail finden Sie in der Funktion ini_set(). Im Folgenden finden Sie eine kurze Erläuterung dieser Konfigurationsoption.
SMTP-Zeichenfolge
 Nur unter Windows verwendet: DNS-Name oder IP-Adresse des SMTP-Servers. PHP verwendet den SMTP-Server, wenn E-Mails mit der Funktion mail() gesendet werden.
smtp_portint
Wird nur unter Windows verwendet: Legen Sie die Portnummer fest, um beim Senden von E-Mails mit der Funktion mail() eine Verbindung zum angegebenen SMTP-Server herzustellen. Erst verfügbar nach PHP 4.3.0.
sendmail_from string
Wenn PHP E-Mails in Windows-Systemen sendet, verwendet es die E-Mail-Adresse „Von:“.
sendmail_path string
Wo finde ich das E-Mail-Versandprogramm? Normalerweise in: /usr/sbin/sendmail oder /usr/lib/. Die Konfigurationsoptionen sind hier auf einen Standardwert eingestellt, damit sie für Sie ordnungsgemäß funktionieren. Sollte dies jedoch fehlschlagen, können Sie es hier einstellen.
Wenn Ihr System sendmail nicht verwenden kann, sollten Sie diese Anweisungen befolgen, um einen sendmail-Wrapper/-Ersatz für das bereitgestellte Mail-System einzurichten. Qmail-Benutzer können beispielsweise einen neuen Pfad festlegen: /var/qmail/bin/sendmail oder /var/qmail/bin/qmail-inject.
qmail – verarbeitet E-Mails ohne Optionen korrekt.
Ressourcentyp
Dieses Erweiterungsmodul definiert keinen Ressourcentyp.
Vordefinierte Konstanten
Dieses Erweiterungsmodul definiert keine Konstanten

2. Verwendung
Syntax: ​

bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])   
Nach dem Login kopieren

mail Die Funktion () kann die angegebene Nachricht (Zeichenfolge Nachricht) an die angegebene E-Mail-Adresse (Zeichenfolge an) senden. Mehrere E-Mail-Adressen müssen durch Kommas getrennt werden. Mit dieser Funktion können Sie E-Mail-Anhänge und Sondertypen versenden.
Die Bedeutung jedes Parameters in der obigen Syntax ist:
Zeichenfolge an – die E-Mail-Adresse des Empfängers,
Zeichenfolge Betreff – der Betreff der E-Mail,
Zeichenfolge Nachricht – der Text der E-Mail,
Zeichenfolge „additional_headers“ – Fügen Sie dem Kopf und Ende des Briefes zusätzliche E-Mail-Informationen hinzu.
Wenn die E-Mail erfolgreich gesendet wurde, gibt die Funktion mail() TRUE zurück, andernfalls FALSE. Beachten! ​

Die Ausführungsmethode der Funktion mail() in Windows unterscheidet sich in vielerlei Hinsicht von UNIX-Systemen.
 1. Es wird keine lokale Binärdatei verwendet, um den Nachrichtentext zu bilden;   
 2. Header-Elemente wie From:, Cc:, Bcc: und Date: werden zunächst nicht von MTA interpretiert, können aber von PHP interpretiert werden . PHP < 4.3 unterstützt nur Cc: und unterscheidet zwischen Groß- und Kleinschreibung, PHP >= 4.3 unterstützt alle genannten Header-Elemente und unterscheidet nicht zwischen Groß- und Kleinschreibung.
 2.1. Beispiel 1. Senden Sie eine E-Mail:

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

 2.2. Wenn der vierte Parameter verwendet wird, wird diese Parameterzeichenfolge in den Kopf und das Ende des Briefes eingefügt. Dies wird normalerweise eingefügt, um zusätzliche Header-Informationen zu veranschaulichen. Mehrere zusätzliche Headerinformationen müssen durch Wagenrücklaufzeichen r und Zeilenvorschubzeichen n getrennt werden.
Beispiel 2. Senden Sie zusätzliche Header-Informationen per E-Mail:

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

2.3 Wenn der Parameter „additional_parameters“ verwendet wird, verwendet das Programm die sendmail_path-Konfiguration, um beim Senden der E-Mail einen zusätzlichen Parameter festzulegen. Dies kann beispielsweise verwendet werden, um den Adressumschlag des Absenders festzulegen, wenn vor dem Versenden die Option -f verwendet wird. Wenn Sie den Absenderumschlag mit dieser Methode einrichten, müssen Sie möglicherweise den Benutzer, den Ihr Webserver ausführt, zu Ihrer Sendmail-Konfiguration hinzufügen, um zu verhindern, dass der Nachricht ein „X-Warning“-Header hinzugefügt wird, wenn Sie den Absender des Umschlags mit festlegen Diese Methode.
Beispiel 3. Senden einer E-Mail mit zusätzlichen Header-Informationen und Anhängen eines Befehlsparameters.

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

  注意:其中的第五个参数附加在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>
Nach dem Login kopieren

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

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

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Anwendungsbeispiele der PHP-Funktion mail() zum Senden von E-Mails. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage