“使用php发送mail”最近已经成为继“register_globals”以后本版第二个新手陷阱,今天特地写这篇文章为新手解惑,希望可以为迷茫的人指明方向。 让我们先从以下这个例子开始说起: [quote:c9547ed7fa][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 <CR><LF>.<CR><LF> teste . 250 Ok: queued as 7B41F4665A QUIT 221 Bye Connection closed by foreign host. 注:以上来自netkiller的postfix文档,偷懒,直接用现成的。[/quote:c9547ed7fa] 首先是使用telnet来连接本地的25端口,稍微熟悉点网络的人都知道smtp协议使用25端口,这也就是说,现在在连接本地的smtp服务器。 [quote:c9547ed7fa]Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 server.domain.com.br ESMTP Postfix (2.1.0)[/quote:c9547ed7fa] 这些东西是系统输出信息,说明已经连接上了,而且这个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。 [quote:c9547ed7fa]DATA 354 End data with <CR><LF>.<CR><LF> teste .[/quote:c9547ed7fa] 这一段是输入邮件正文,输入“DATA”以后系统提示使用“<回车>.<回车>”来结束输入,正文内容是“teste”。 最后使用“QUIT”退出。