php发送邮件的相关知识

编	写:袁	亮
时	间:2015-07-28
说	明:php发送邮件的相关知识

一、什么时候需要用到?
	1、系统监控,应用监控报警
	2、相应的项目统计
	3、用户注册、重置密码
	4、发送推广内容(现在很少)
	5、给用户的正式通知
	
二、php中发送邮件的方式
	1、使用封装好的PHPMailer类发送【常用】
		网上下载相应的类文件即可phpmailer
	2、使用smtp类发送
		与PHPMailer类似
	3、PEAR::Net_SMTP组件
		需要引用pear类库中的Net/SMTP.php和Mail/mime.php,服务器上没有的话,直接下载也可以
		据说挺好用的,很强大,没用过,可以尝试下
	4、内置函数mail
		php需要安装正在运行的邮件系统,了解即可,平时不用
	5、popen管道形式发送
		需要配置邮件服务器,了解即可,我也没用过

三、PHPMailer简单demo
	IsSMTP();//使用smtp协议
	$mail->SMTPDebug = false;
	$mail->Host = "smtp.163.com"; //使用哪个smtp服务器,在对应的邮件设置里找SMTP服务器
	$mail->SMTPAuth = true; //需要认证,必选,基本没有不认证的了
	$mail->Username = "ci123_demo"; //邮箱账号,不需要@什么的,需要在邮箱里开启smtp服务,否则失败
	$mail->Password = "nymqjctyjlykkfpt"; //开启smtp服务的时候系统自动设置的密码(163是这样)

	$mail->CharSet = "UTF-8";//编码设置
	$mail->From = "ci123_demo@163.com";//发件人完整邮箱地址
	$mail->FromName = "育儿网";//发件人备注名,可以随意填写,方便自己看即可

	//发送给谁,可以发给多个人,多次执行AddAddress,前面是邮箱地址,后面是备注
	$mail->AddAddress('yuanliang@corp-ci.com', "袁亮");
	$mail->AddCC('629036398@qq.com','暗夜御林');//抄送,暗送是BCC

	$mail->Subject = '邮件标题';
	$content = '邮件测试内容'.date('Y-m-d H:i:s');
	//$mail->Body = $content;//纯文本内容,不能发送html
	$mail->MsgHTML($content);//以html的形式发送,一般用这个,方便排版

	if(!$mail->Send()){
		echo $mail->ErrorInfo;
		die();
	}
	echo 'succ';
	die();
		
四、PHPMailer注意事项
	1、php需要支持sockets,大部分情况下都开启了,phpinfo查看Sockets Support
	2、最常见的错误是需要开启smtp服务,到对应的邮箱里开启
		smtp服务器地址
		邮箱账号
		授权密码,非邮箱登陆密码
	3、需要发送html内容的,需要使用MsgHTML
	4、发送失败的情况下,第一反应是看报错信息,而不是瞎猜
		
五、邮件发送的注意事项
	1、限制
		每个邮件服务器,都有限制邮件数量,163的限制比较少
		出现莫名其妙收不到的情况,可以尝试换一个账号发,换一个账号收等来测试是哪方面有问题
	2、内容过滤
		垃圾内容过滤是邮件服务器最核心的功能,如果对用户发的时候,需要注意内容是否会被过滤,可以先拿自己的账号测试
	3、发送附件
		AddAttachment('文件绝对路径','附件名称');
		
六、邮件协议
	1、POP3
		1.1 POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件
		1.2 POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上
			比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的
	2、IMAP
		2.1 交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一
		2.2 IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,
			对邮件进行的操作,服务器上的邮件也会做相应的动作
		2.3 IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读
	3、SMTP
		3.1 简单邮件传输协议;它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式
		3.2 SMTP认证,就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,现在已经没有不需要认证的了,除非自己搭
		3.3 发送邮件,必须是开的这个服务
		
附录:
	http://www.w3school.com.cn/php/php_ref_mail.asp
	http://blog.csdn.net/heiyeshuwu/article/details/458170
	http://blog.csdn.net/rainday0310/article/details/6281936
	http://help.163.com/09/1223/14/5R7P6CJ600753VB8.html