Heim  >  Artikel  >  Backend-Entwicklung  >  Zwei Möglichkeiten, PHP-E-Mails zu versenden

Zwei Möglichkeiten, PHP-E-Mails zu versenden

小云云
小云云Original
2018-05-14 16:19:5434982Durchsuche

Viele Programmierer werden bei der Verwendung von PHP zum Versenden von E-Mails auf mehrere Probleme stoßen. Wenn sie auf Probleme stoßen, müssen sie Ideen zur Lösung dieser Probleme haben. Dieser Artikel basiert auf der Idee, den E-Mail-Versand in PHP zu implementieren. Interessierte Freunde können bei unterschiedlichen Problemen auf die verschiedenen Lösungen zurückgreifen.

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 direkt ein Fehler wie folgt:

Warnung: mail() [Funktion .mail]: Fehler Stellen Sie eine Verbindung zum Mailserver am „localhost“-Port 25 her und überprüfen Sie „SMTP“ und „smtp_port“. Einstellung in php.ini oder verwenden Sie ini_set() inD:/www/Zend/email/email.php online 10

Analysegrund: Ein lokaler SMTP-Server wird benötigt und der Code wurde 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-Server Antwort: 553 Authentifizierung ist erforderlich, smtp2,DNGowKD7v5BTDo9NnplVBA--.1171S2 1301220947 inD:/www/Zend/email/email.php in Zeile 9

Analysegrund: Es werden Verifizierungsinformationen benötigt. 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. So richten Sie es ein: Verwenden Sie einfach den mit Windows gelieferten IIS 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 einen E-Mail-Kurs, der das SMTP-Protokoll kapselt.

Diese Methode ist relativ verbreitet, insbesondere für die Mehrheit der Studenten, die keinen Server haben und einen virtuellen Host aus dem Internet kaufen. Die erste Methode ist unrealistisch, daher ist es besser, das SMTP-Protokoll zu 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. Sie verfügt über leistungsstarke Funktionen: Sie kann E-Mails im Nur-Text-Format unterstützen und die HTML-Codierung kann für jedes Feld festgelegt werden, und die korrekte Konfiguration verursacht kein Chinesisch verstümmelte Zeichen; es kann Anhänge usw. unterstützen.

Sie können Pear Install Mail auf dem Server verwenden Der Befehl lässt sich schnell installieren. Schüler, die nicht über ausreichende Serverberechtigungen verfügen, können den PHP-Quellcode der Klasse auch direkt herunterladen und einbinden.

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 ä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 Sie finden die SMTP-Klasse im Internet. Sie sind alle stark gekapselt und daher einfacher zu verwenden als die oben genannten, aber die Verwendungsmethoden sind 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.

Egal, auf welche Art von Problem Sie stoßen, es gibt Tausende von Methoden. Das Wichtigste ist, eine Idee zur Lösung des Problems zu haben. Ich hoffe, dieser Artikel kann jedem Inspiration geben.

Verwandte Empfehlungen:

Leistungsstarker PHP-E-Mail-Kurs

Einfacher PHP-E-Mail-Kurs

Probleme beim Senden von E-Mails mit PHP

Das obige ist der detaillierte Inhalt vonZwei Möglichkeiten, PHP-E-Mails zu versenden. 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