Heim  >  Artikel  >  Backend-Entwicklung  >  Die Idee, den E-Mail-Versand in PHP zu implementieren

Die Idee, den E-Mail-Versand in PHP zu implementieren

墨辰丷
墨辰丷Original
2018-06-06 16:51:261777Durchsuche

Dieser Artikel stellt hauptsächlich die Idee vor, den E-Mail-Versand in PHP zu implementieren. Ich hoffe, dass er für alle hilfreich ist.

Der Hauptinhalt dieses Artikels ist die Verwendung von PHP zum Senden von E-Mails, die in den folgenden zwei Methoden zusammengefasst wird:

1 Verwenden Sie die in PHP integrierte Funktion mail()

<?php 
$to = "test@163.com"; //收件人 
$subject = "Test"; //主题 
$message = "This is a test mail!"; //正文 
mail($to,$subject,$message);

Das Ergebnis ist ein Fehler wie folgt:

Warnung: mail() [function.mail]: Failed to connect to mailserver at „localhost“ port 25, Überprüfen Sie Ihre „SMTP“- und „smtp_port“-Einstellung in php.ini oder verwenden Sie ini_set() inD:/www/Zend/email/email.php in Zeile 10

Analyse des Grundes: Sie benötigen einen lokalen SMTP-Server, also haben Sie den Code geändert:

<?php 
$to = "test@163.com";//收件人 
$subject = "Test";//邮件主题 
$message = "This is a test mail!";//邮件正文 
ini_set(&#39;SMTP&#39;,&#39;smtp.163.com&#39;);//发件SMTP服务器 
ini_set(&#39;smtp_port&#39;,25);//发件SMTP服务器端口 
ini_set(&#39;sendmail_from&#39;,"admin@163.com");//发件人邮箱 
mail($to,$subject,$message);

Das Ergebnis ist immer noch falsch:

Warnung: mail() [function.mail]: SMTP-Serverantwort: 553 Authentifizierung ist erforderlich,smtp2,DNGowKD7v5BTDo9NnplVBA--.1171S2 1301220947 inD:/www/Zend/email/email.php in Zeile 9

Analysegrund: Verifizierungsinformationen sind erforderlich. Wie schreibe ich Verifizierungsinformationen? Wo kann man es konfigurieren? Nachdem ich einige technische Artikel mit diesen Fragen gelesen hatte, kam ich zu dem Schluss, dass die Verwendung der Funktion mail() zum Versenden von E-Mails einen Mailserver erfordert, der Briefe ohne SMTP-Authentifizierung versenden kann. Heutige SMTP-Mailserver erfordern jedoch grundsätzlich eine Authentifizierung. Wenn Sie sie also zum Versenden von E-Mails verwenden möchten, können Sie nur einen lokalen SMTP-Server einrichten, der keine Authentifizierung erfordert. Erstellungsmethode: Verwenden Sie einfach den IIS, der mit Windows geliefert wird, oder laden Sie andere SMTP-Serversoftware aus dem Internet herunter.

Fazit: Um die Funktion mail() zum Versenden von E-Mails verwenden zu können, müssen Sie über einen SMTP-Server verfügen, der keine Authentifizierung erfordert. In diesem Fall ist der Konfigurationsaufwand etwas größer, aber die Verwendung ist einfacher, da nur ein paar Codezeilen erforderlich sind.

2. Verwenden Sie die Mail-Klasse, die das SMTP-Protokoll kapselt

Diese Methode ist relativ verbreitet, insbesondere für die Mehrheit der Studenten, die keinen Server haben und einen kaufen Die erste Methode ist nicht praktikabel, daher sollten Sie das SMTP-Protokoll verwenden, um selbst E-Mails zu versenden.

Aber um diese Arbeit abzuschließen, müssen Sie ein gewisses Verständnis des SMTP-Protokolls haben. Schüler, die es gerne selbst machen, können es selbst schreiben Aus dem Internet gibt es viele.

Ich empfehle jedoch die Verwendung der Mail-Klasse in der PEAR-Erweiterung: kann sowohl E-Mails im Nur-Text- als auch im HTML-Format unterstützen Die Kodierung kann für Felder festgelegt werden, und eine korrekte Konfiguration führt nicht dazu, dass chinesische Zeichen verstümmelt werden. Anhänge usw. können unterstützt werden. Sie können den Befehl

pear install Mail auf dem Server verwenden, um ihn schnell zu installieren. Schüler, die nicht über ausreichende Serverberechtigungen verfügen, können den PHP-Quellcode auch direkt herunterladen der Klasse und binden Sie sie ein.

Hinweis:

Die Mail-Klasse hängt von Net/SMTP.php und Mail/mime.php ab, die zusammen heruntergeladen und bei der Verwendung zusammen einbezogen werden müssen. Lassen Sie mich ein Beispiel für das Versenden von E-Mails in der Mail-Klasse geben. Die Methoden zur Verwendung anderer SMTP-Mail-Klassen im Internet sind ebenfalls ähnlich:

<?php 
 
// Pear Mail 扩展 
require_once(&#39;Mail.php&#39;); 
require_once(&#39;Mail/mime.php&#39;); 
require_once(&#39;Net/SMTP.php&#39;); 
 
$smtpinfo = array(); 
$smtpinfo["host"] = "smtp.163.com";//SMTP服务器 
$smtpinfo["port"] = "25"; //SMTP服务器端口 
$smtpinfo["username"] = "username@163.com"; //发件人邮箱 
$smtpinfo["password"] = "password";//发件人邮箱密码 
$smtpinfo["timeout"] = 10;//网络超时时间,秒 
$smtpinfo["auth"] = true;//登录验证 
//$smtpinfo["debug"] = true;//调试模式 
 
// 收件人列表 
$mailAddr = array(&#39;receiver@163.com&#39;); 
 
// 发件人显示信息 
$from = "Name <username@163.com>"; 
 
// 收件人显示信息 
$to = implode(&#39;,&#39;,$mailAddr); 
 
// 邮件标题 
$subject = "这是一封测试邮件"; 
 
// 邮件正文 
$content = "<h3>随便写点什么</h3>"; 
 
// 邮件正文类型,格式和编码 
$contentType = "text/html; charset=utf-8"; 
 
//换行符号 Linux: \n Windows: \r\n 
$crlf = "\n"; 
$mime = new Mail_mime($crlf); 
$mime->setHTMLBody($content); 
 
$param[&#39;text_charset&#39;] = &#39;utf-8&#39;; 
$param[&#39;html_charset&#39;] = &#39;utf-8&#39;; 
$param[&#39;head_charset&#39;] = &#39;utf-8&#39;; 
$body = $mime->get($param); 
 
$headers = array(); 
$headers["From"] = $from; 
$headers["To"] = $to; 
$headers["Subject"] = $subject; 
$headers["Content-Type"] = $contentType; 
$headers = $mime->headers($headers); 
 
$smtp =& Mail::factory("smtp", $smtpinfo); 
 
 
$mail = $smtp->send($mailAddr, $headers, $body); 
$smtp->disconnect(); 
 
if (PEAR::isError($mail)) { 
  //发送失败 
  echo &#39;Email sending failed: &#39; . $mail->getMessage()."\n"; 
} 
else{ 
  //发送成功 
  echo "success!\n"; 
}

Wenn die Im Internet gibt es alle SMTP-Klassen. Es ist stark gekapselt und daher einfacher zu verwenden als die oben genannten, die Verwendungsmethoden sind jedoch relativ ähnlich.

Fazit: Sie müssen keine Software installieren, um E-Mails auf diese Weise zu versenden. Sie müssen lediglich eine PHP-Klasse einbinden und ein paar weitere Zeilen Konfigurationscode schreiben. Und es gibt viele Beispielcodes im Internet. In vielen Fällen müssen Sie sie nur kopieren und einige Parameter ändern, um sie zu verwenden. Daher ist die Verwendung dieser Methode sehr praktisch.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

Detaillierte Erläuterung von Funktionsbeispielen von PHP-Downloaddateien

PHP-Methode zur Generierung von Farb-QR-Codes basierend auf QRCODE

PHP implementiert die Funktion des Anmeldebestätigungscodes und die Aufrufmethode

Das obige ist der detaillierte Inhalt vonDie Idee, den E-Mail-Versand in PHP zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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