时间:2016-02-24 20:15 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【使用php通过smtp发送邮件新手指南】,下面是详细的分享!
使用php通过smtp发送邮件新手指南
“使用php发送mail”最近已经成为继“register_globals”以后本版第二个新手陷阱,今天特地写这篇文章为新手解惑,希望可以为迷茫的人指明方向。
让我们先从以下这个例子开始说起:
Trying127.0.0.1...
Connectedtolocalhost.
Escapecharacteris'^]'.
220server.domain.com.brESMTPPostfix(2.1.0)
MAILFROM:teste@dominio.com.br
250Ok
RCPTTO:teste@dominio.com.br
250Ok
DATA
354Enddatawith<CR><LF>.<CR><LF>
teste
.
250Ok:queuedas7B41F4665A
QUIT
221Bye
Connectionclosedbyforeignhost.
注:以上来自netkiller的postfix文档,偷懒,直接用现成的。
首先是使用telnet来连接本地的25端口,稍微熟悉点网络的人都知道smtp协议使用25端口,这也就是说,现在在连接本地的smtp服务器。
Connectedtolocalhost.
Escapecharacteris'^]'.
220server.domain.com.brESMTPPostfix(2.1.0)
这些东西是系统输出信息,说明已经连接上了,而且这个smtp服务器是postfix做的。
“MAILFROM:teste@dominio.com.br”这个命令指明了发件地址是teste@dominio.com.br,“250Ok”说明这条命令被服务器接受并正确执行,这类似http协议的200、404、500等状态代码。接下来的“RCPTTO:teste@dominio.com.br”指明了收件地址是teste@dominio.com.br。
354Enddatawith<CR><LF>.<CR><LF>
teste
.
这一段是输入邮件正文,输入“DATA”以后系统提示使用“<回车>.<回车>”来结束输入,正文内容是“teste”。
最后使用“QUIT”退出。
以上就是最简单的一次发送mail的过程,从这个例子我们可以看出,发送mail其实是很简单的事情,实质上也就是建立一个对smtp服务器的连接,然后发送一些简单的命令给它,一封内容简单的邮件就发送出去了,至于更加复杂内容的邮件或者操作,其实也就是在此基础上稍加扩展而已。
把这个过程用php来实现,其实就是利用php的Socketfunctions、NetworkFunctions等等操作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['From']='tester@domain.com';//发信地址
$headers['To']='tester@domain.com';//收信地址
$headers['Subject']='testmailsendbyphp';//邮件标题
$mail_object=&Mail::factory('smtp',$conf['mail']);
$body=<<<MSG//邮件正文
helloworld!!!
MSG;
$mail_res=$mail_object->send($headers['To'],$headers,$body);//发送
if(Mail::isError($mail_res)){//检测错误
die($mail_res->getMessage());
}
?>
以上的代码非常的简单,配合注释应该不难看懂,关于PEAR和PEAR::Mail的更多信息,可以自己去翻阅PEARManual得到进一步的信息。
现在你依葫芦画瓢已经可以开始工作了,不过如果你还想做得更好、做得更多的话,我在这里提供一些更多的指南。
1、SMTP协议
熟悉并了解SMTP协议的内容,这样你可以进行更多的高级操作,甚至自己写一个满足自己特别需求的发邮件程序。以上的代码虽然简单,但是肯定还是有很多人不了解注释里提到的邮件头是什么东西,它到底对发出的邮件有什么样的影响。
比如“发送html邮件为什么对方看到的是乱码”等等问题都可能和邮件头相关,如果对smtp协议比较了解的话,可以很快的知道问题所在。
2、MIME规范
如果想要发送html邮件甚至多媒体邮件,一定是需要对MIME有一定了解的,有了这方面的知识你就可以发送内容更加精彩的邮件。
3、PEAR
PEAR并非唯一的发送邮件的工具,但是PEAR包含了Mail、Mail_Mime等等已经封装好了的类,可以让我们的开发事半功倍,并且除了Mail方面的东西以外,它还提供了很多其他方面的现成的工具,非常值得花时间学一学。
以上所分享的是关于使用php通过smtp发送邮件新手指南,下面是编辑为你推荐的有价值的用户互动:
相关问题:如何使用PHP通过SMTP发送电子邮件
答:mail() php中有 mail() 函数用于从脚本中发送电子邮件 mail(to,subject,message,headers,parameters) 参数描述 to必需。规定 email 接收者。 subject必需。规定 email 的主题。注释:该参数不能包含任何新行字符。 message必需。定义要发送的消... >>详细
相关问题:PHP如何通过SMTP验证发送邮件
答:PHP mail()与SMTP验证 缺乏灵活性是PHP的mail()函数显得过于简单的部分原因。最重要而且令人沮丧的是,死板的mail()函数通常还不允许你使用你选择的SMTP服务器,并且它也根本不支持如今已被众多邮件服务器采用的SMTP验证。 幸运的是,克服PHP本... >>详细
相关问题:PHP如何通过SMTP发送邮件?
答:用phpmailer插件就行了,这个插件下载之后内部提供了范例,你参照他的范例就行了,很简单 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
