php 邮件发送问题

这段时间修改了一下我们系统的登陆功能,为了更加安全,增加了发送邮件验证功能。当用户登陆的时候判断登陆ip是否是之前登陆过的,如果不是的话,需要向邮箱里发送验证码,然后把收到的验证码输入再登陆,如果验证码正确并且时间没有超过规定时间,可以登陆,并且记下此次登陆的ip和时间,以后再以此ip登的话,就不用验证了。如果时间超过了,验证码失效,需重新发送。验证错误不能登陆,需重新输验证码,或在发送新的验证码到邮箱。为了实现此功能,我用到了如何向邮箱发送邮件,以及获取登陆ip的知识。下面整理一下,以便以后自己查看。



发送邮件:

首先需要下载phpmail的压缩包,然后解压,把解压后的文件复制到项目中。在项目中引入文件。

require("phpmailer/class.phpmailer.php");  //文件的路径具体看自己的项目中的路径是怎么样的
function postmail($to,$subject = "",$body = ""){          
			//$to 表示收件人地址 $subject 表示邮件标题 $body表示邮件正文
			//error_reporting(E_ALL);
				error_reporting(E_STRICT);
				date_default_timezone_set("Asia/Shanghai");//设定时区东八区
				require('./include/PHPMailer/class.phpmailer.php');
				$mail = new PHPMailer(); //new一个PHPMailer对象出来
				$body = eregi_replace("[\]",'',$body); //对邮件内容进行必要的过滤
				$mail->CharSet ="UTF-8";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
				$mail->IsSMTP(); // 设定使用SMTP服务
				$mail->SMTPDebug = 1; // 启用SMTP调试功能
				// 1 = errors and messages
				// 2 = messages only
				$mail->SMTPAuth = true; // 启用 SMTP 验证功能
				//$mail->SMTPSecure = "ssl"; // 安全协议
				$mail->Host = "smtp.163.com"; // SMTP 服务器      以163信箱为例,其他的邮箱需要改成其他的
				//$mail->Port = 465; // SMTP服务器的端口号
				$mail->Username = "*******@163.com"; // SMTP服务器用户名
				$mail->Password = "********"; // SMTP服务器密码
				$mail->SetFrom('邮箱地址', '邮件题目');
				$mail->AddReplyTo("回复地址","邮件回复人的名称");
				$mail->Subject = $subject;
				$mail->AltBody = "To view the message, please use an HTML compatible email viewer! - From www.jiucool.com"; // optional, comment out and test
				$mail->MsgHTML($body);
				$address = $to;
				$mail->AddAddress($address, "收件人名称");
				//$mail->AddAttachment("images/phpmailer.gif"); // attachment
				//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
				if(!$mail->Send()) {
				echo "Mailer Error: " . $mail->ErrorInfo;
				} else {
				echo "Message sent!恭喜,邮件发送成功!";
				}
		}
获取ip地址:

//获取ip地址  
		function GetIP(){ 
						if(!empty($_SERVER["HTTP_CLIENT_IP"])){
						  $cip = $_SERVER["HTTP_CLIENT_IP"];
						}
						elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
						  $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
						}
						elseif(!empty($_SERVER["REMOTE_ADDR"])){
						  $cip = $_SERVER["REMOTE_ADDR"];
						}
						else{
						  $cip = "无法获取!";
						}
						return $cip;
						}
   $ip=GetIP(); //调用该函数


ps:发送邮件功能还可用于注册时邮箱激活功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值