>백엔드 개발 >PHP 튜토리얼 >PHP应用技巧:通过SMTP发送电子邮件_PHP

PHP应用技巧:通过SMTP发送电子邮件_PHP

WBOY
WBOY원래의
2016-06-01 12:43:12906검색

SMTP

由于PHP没有提供现成的smtp函数,却提供了一个功能不甚灵活的mail()函数,这个函数需要服务器配置上的支持,并且不支持smtp验证,在很多场合无法正常的工作,因此不建议使用。本文的目的在于为新手指明方向,并没有涉及那些高级的内容,一来本身水平有限,二来也担心不能准确的讲述相关的概念,进而对各位造成误导,还请自行深入学习。

“使用php发送mail”最近已经成为继“register_globals”以后本版第二个新手陷阱,今天特地写这篇文章为新手解惑,希望可以为迷茫的人指明方向。

让我们先从以下这个例子开始说起:

引用:

[root@server~/]# telnet localhost 25

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 .

teste

.

250 Ok: queued as 7B41F4665A

QUIT

221 Bye

Connection closed by foreign host.

注:以上来自netkiller的postfix文档,偷懒,直接用现成的。

首先是使用telnet来连接本地的25端口,稍微熟悉点网络的人都知道smtp协议使用25端口,这也就是说,现在在连接本地的smtp服务器。

引用:

Trying 127.0.0.1...

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。

引用:

DATA

354 End data with .

teste

.

这一段是输入邮件正文,输入“DATA”以后系统提示使用“.”来结束输入,正文内容是“teste”。

最后使用“QUIT”退出。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.