如何使用PHP通过SMTP发送电子邮件
由于PHP没有提供现成的smtp函数,却提供了一个功能不甚灵活的mail()函数,这个函数需要服务器配置上的支持,并且不支持smtp验证,在很多场合无法正常的工作,因此不建议使用。本文的目的在于为新手指明方向,并没有涉及那些高级的内容,一来本身水平有限,二来也担心不能准确的讲述相关的概念,进而对各位造成误导,还请自行深入学习。
“使用php发送mail”最近已经成为继“register_globals”以后本版第二个新手陷阱,今天特地写这篇文章为新手解惑,希望可以为迷茫的人指明方向。
让我们先从以下这个例子开始说起:
引用:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server.domain.com.br ESMTP Postfix (2.1.0)
MAIL FROM: teste@dominio.com.br
250 Ok
RCPT TO: teste@dominio.com.br
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
teste
.
250 Ok: queued as 7B41F4665A
QUIT
221 Bye
Connection closed by foreign host.
注:以上来自netkiller的postfix文档,偷懒,直接用现成的。
首先是使用telnet来连接本地的25端口,稍微熟悉点网络的人都知道smtp协议使用25端口,这也就是说,现在在连接本地的smtp服务器。
引用:
Connected to localhost.
Escape character is '^]'.
220 server.domain.com.br ESMTP Postfix (2.1.0)
这些东西是系统输出信息,说明已经连接上了,而且这个smtp服务器是postfix做的。
“MAIL FROM: teste@dominio.com.br”这个命令指明了发件地址是teste@dominio.com.br,“250 Ok”说明这条命令被服务器接受并正确执行,这类似http协议的200、404、500等状态代码。接下来的“RCPT TO: teste@dominio.com.br”指明了收件地址是teste@dominio.com.br。
引用:
354 End data with <CR><LF>.<CR><LF>
teste
.
这一段是输入邮件正文,输入“DATA”以后系统提示使用“<回车>.<回车>”来结束输入,正文内容是“teste”。
最后使用“QUIT”退出。
以上就是最简单的一次发送mail的过程,从这个例子我们可以看出,发送mail其实是很简单的事情,实质上也就是建立一个对smtp服务器的连接,然后发送一些简单的命令给它,一封内容简单的邮件就发送出去了,至于更加复杂内容的邮件或者操作,其实也就是在此基础上稍加扩展而已。
把这个过程用php来实现,其实就是利用php的Socket functions、Network Functions等等操作socket的函数来和smtp服务器建立一个连接,然后发送文本的命令给服务器,如果你亲自去看看那些写好的利用smtp协议发送邮件的类或者函数,相信可以印证我的说法。
由于已经存在很多现成的封装得很好的类或者函数替我们完成底层的socket级操作,我们只需要直接拿来用就好,而我也不会费时费神的在本文里去讨论底层的代码,有精神去研究的话,自己找代码来研究吧。现在继续跟我走,我们来点实际的代码来说明如何使用php发送邮件,采用的类是PEAR::Mail。
代码:
require_once 'Mail.php';
$conf['mail'] = array(
'host' => 'xx.xx.xx.xx', //smtp服务器地址,可以用ip地址或者域名
'auth' => true, //true表示smtp服务器需要验证,false代码不需要
'username' => 'tester', //用户名
'password' => 'retset' //密码
);
/***
* 使用$headers数组,可以定义邮件头的内容,比如使用$headers['Reply-To']可以定义回复地址
* 通过这种方式,可以很方便的定制待发送邮件的邮件头
***/
$headers['From'] = 'tester@domain.com'; //发信地址
$headers['To'] = 'tester@domain.com'; //收信地址
$headers['Subject'] = 'test mail send by php'; //邮件标题
$mail_object = &Mail::factory('smtp', $conf['mail']);
$body = <<< MSG //邮件正文
hello world!!!
MSG;
$mail_res = $mail_object->send($headers['To'], $headers, $body); //发送
if( Mail::isError($mail_res) ){ //检测错误
die($mail_res->getMessage());
}
?>
以上的代码非常的简单,配合注释应该不难看懂,关于PEAR和PEAR::Mail的更多信息,可以自己去翻阅PEAR Manual得到进一步的信息。
现在你依葫芦画瓢已经可以开始工作了,不过如果你还想做得更好、做得更多的话,我在这里提供一些更多的指南。
1、SMTP协议
熟悉并了解SMTP协议的内容,这样你可以进行更多的高级操作,甚至自己写一个满足自己特别需求的发邮件程序。以上的代码虽然简单,但是肯定还是有很多人不了解注释里提到的邮件头是什么东西,它到底对发出的邮件有什么样的影响。
比如“发送html邮件为什么对方看到的是乱码”等等问题都可能和邮件头相关,如果对smtp协议比较了解的话,可以很快的知道问题所在。
2、MIME规范
如果想要发送html邮件甚至多媒体邮件,一定是需要对MIME有一定了解的,有了这方面的知识你就可以发送内容更加精彩的邮件。
3、PEAR
PEAR并非唯一的发送邮件的工具,但是PEAR包含了Mail、Mail_Mime等等已经封装好了的类,可以让我们的开发事半功倍,并且除了Mail方面的东西以外,它还提供了很多其他方面的现成的工具,非常值得花时间学一学。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP est un langage de programmation puissant largement utilisé dans le domaine du développement Web. La fonction de messagerie SMTP constitue également une partie importante du développement PHP. Cependant, dans certains cas, vous souhaiterez peut-être désactiver la fonctionnalité de messagerie SMTP, et cet article vous expliquera comment procéder.

PHP est un langage de script largement utilisé pour développer des applications Web. Il offre de nombreuses fonctions permettant de gérer l'envoi d'e-mails. Cet article vous expliquera comment utiliser la fonction d'envoi d'e-mails en PHP et fournira des exemples de code spécifiques. 1. Préparation Avant d'utiliser PHP pour envoyer des emails, vous devez d'abord vous assurer que votre serveur a été configuré pour envoyer des emails. De manière générale, vous avez besoin d'un serveur SMTP pour envoyer des e-mails. Vous pouvez utiliser le serveur SMTP fourni par votre fournisseur de messagerie, tel que le SMTP de Gmail

Comment utiliser PHP pour mettre en œuvre une communication par courrier électronique basée sur le protocole SMTP Avec la popularité d'Internet, le courrier électronique est devenu un élément indispensable de la vie quotidienne et du travail des gens. En PHP, nous pouvons utiliser le protocole SMTP (SimpleMailTransferProtocol) pour envoyer et recevoir des emails. Cet article explique comment utiliser PHP pour implémenter une communication par courrier électronique basée sur le protocole SMTP et est accompagné d'exemples de code pertinents. Pour référencer la bibliothèque de classes SMTP, nous devons utiliser le protocole SMTP.

Avec le développement rapide de la société moderne, le courrier électronique est devenu une méthode de communication facile à utiliser et universellement acceptée. Alors que de plus en plus d'applications nécessitent l'envoi de notifications par courrier électronique aux utilisateurs, utiliser des programmes pour envoyer des courriers électroniques est devenu une tâche importante et nécessaire. En tant que langage de programmation rapide, simple et hautement simultané, le langage Go peut facilement implémenter la fonction d'envoi d'e-mails. Dans cet article, nous présenterons comment envoyer du courrier via SMTP dans Go. SMTP est un protocole standard utilisé pour la transmission d'e-mails. En Aller

Exigences : utilisez l'API native jdk - java.mail pour envoyer des e-mails. Prenez la boîte aux lettres qq comme exemple. mail.Session; importjavax.mail.Transport; importjavax.mail.internet.Inte

Avec le développement d’Internet, le courrier électronique est devenu l’un des principaux moyens de communication au quotidien. Pour certains développeurs de sites Web, l’envoi d’e-mails sur le site Web est également particulièrement critique. En tant que langage de script côté serveur, PHP doit naturellement fournir un moyen d'envoyer des e-mails. Cet article présentera comment PHP utilise Simple Mail Transfer Protocol (SMTP) pour envoyer des e-mails. L'introduction au SMTP Simple Mail Transfer Protocol (SimpleMailTransferProtocol, SMTP en abrégé) est utilisée pour

1. Introduction L'envoi d'e-mails doit être l'une des fonctions essentielles du site Web, comme la vérification de l'inscription, l'oubli du mot de passe ou l'envoi d'informations marketing aux utilisateurs. Au début, nous utilisions les API liées à JavaMail pour écrire des codes pertinents pour l'envoi d'e-mails. Plus tard, spring s'est retiré de JavaMailSender, ce qui a simplifié le processus d'envoi d'e-mails. Plus tard, springboot a encapsulé cela et maintenant spring-boot-starter-mail. 2. Utilisation simple 1. Ajoutez le package spring-boot-starter-mail au package pom pour configurer le package pom pour référencer org.springframework.bootspring-

Paramètres PHPSMTP : assurez une transmission fiable des e-mails. Le courrier électronique fait partie intégrante de la communication moderne. Que ce soit dans les domaines professionnel, personnel ou social, les informations et la communication doivent être transmises par courrier électronique. Lors de la rédaction d’un site Web ou d’une application utilisant PHP, nous avons souvent besoin d’utiliser un serveur SMTP pour envoyer des e-mails. Cet article explique comment configurer SMTP en PHP pour garantir une transmission fiable des e-mails. Qu’est-ce que SMTP ? SMTP (SimpleMailTransferProtocol)
