phpmailer 私密抄送_解决phpmailer后的总结

这两天,在开发一个登陆注册系统,要做好一个注册系统,我想验证码肯定是必不可少的,毕竟设置这个验证码有很多的用途,其一,可以防止被人恶意注册,防止sql注入;其二,可以用来验证对方的手机或者邮箱是真实的信息。

由于我没有那么多的经济能力,所以没办法使用手机短信验证,因此我只能通过邮箱来验证信息。那么问题来了,怎么使用邮箱验证呢?

我去找了很多,一开始,我是直接用了mail()这个函数,然后肯定是不行的了,提示错误

,相信就算不是这个确切的错误也是会有诸如此类的错误,所以这个函数用起来还是比较困难的。于是,我又去找别的办法,然后找到了大家常说的phpmailer这个封装类。

还有个问题要提前讲一下,就是如果你使用的是阿里云的服务器,如果是在2016年九月份之后购买的话,那么默认的已经封掉了25端口,也就是我们无法使用到25端口,而网上的很多的phpmailer的封装类的话,都是针对25端口写的文件,可能也可以拓展,不过我还不会,所以就只能直接点找一些现成的,也给那些和我同样在解决这个问题搞到焦头烂额的同学们予与帮助。顺便带巨,刚用到phpmailer的时候,很多都是这两个错误。①SMTP Error: Could not authenticate.②SMTP Error: Could not connect to SMTP host.,然后这个的话,如果不是25端口被服务器提供商屏蔽掉了的话,通常有两个解决方案①就是在class.smtp.php中修改,

在@fsockopen前面加个‘p’,变成@pfsockopen,这个是fsockopen函数被屏蔽掉的一种处理办法,②也有可能fsockopen和pfsockopen两个函数都屏蔽掉了的话,就要在class.smtp.php中,

$this->smtp_conn = stream_socket_client("tcp://".$host.":".$port, $errno, $errstr, $tval);

用这个替代

$this->smtp_conn = @fsockopen($host, // the host of the server

$port, // the port to use

$errno, // error number if any

$errstr, // error message if any

$tval); // give up after ? secs

这里还有个重点就是,不要相信那些网上说在class.phpmailer.php中修改

public function IsSMTP() {

$this->Mailer = 'smtp';

}

把'smtp'改成'SMTP',这个是不行的,反而直接让程序挂了,这一点深有体会。

所以,如果你们也用的是阿里云服务器,用25端口无论如何都无法连接主机的时候,你们可以试一下我的方法,我觉得可以成功,你也能少走弯路。

要用到这个类,要先做几件事情。

第一,先去确定你的服务器的是否开启了两个相关的函数拓展。①socket ②openssl如何看是否开启了这两个拓展呢

,同理可以测试到openssl是否开启,如果两个都已经开启,则不用去修改php.ini,如果还没开启,则要手动开启,到php.ini中,搜索

extension=php_sockets.dll或者是extension=php_openssl.dll,然后把它们前面的';’去掉,然后重启Apache。到此,第一步已经完成。

第二,我们要去开启我们QQ的smtp的服务,打开你的QQ邮箱,点击设置,点击账户,滚动进度条,拉到下面,如果还没开启的话,就会有“开启”两个字,点击开启之后,就会有一个授权码,记得要把这两项都要开启,两项都开启就有两个授权码(建议等下输入的时候用第二个授权码,这个是我测试的时候可以的,不过我认为这两个授权码的作用是一样的,也就是第一个应该也是可以用的)。到此,就完成了第二步。第二,我们要去开启我们QQ的smtp的服务,打开你的QQ邮箱,点击设置,点击账户,滚动进度条,拉到下面,如果还没开启的话,就会有“开启”两个字,点击开启之后,就会有一个授权码,记得要把这两项都要开启,两项都开启就有两个授权码(建议等下输入的时候用第二个授权码,这个是我测试的时候可以的,不过我认为这两个授权码的作用是一样的,也就是第一个应该也是可以用的)。到此,就完成了第二步。

第三步,下载这个类,并进行配置。找这个类也不好找,网上流传这很多版本,所以我等下讲的方法是针对我这个版本的方法,所以在这里我先给大家链接先https://github.com/PHPMailer/PHPMailer/tree/5.2-stable(记得,是5.2的版本,这个创作者好像一直更新着他的版本,你们要在5.2的版本里面才能找到这几个文件)在里面找到src,找到class.phpmailer.php、class.phpmaileroauth.php、class.pop3.php、class.smtp.php、PHPMailerAutoload.php 这四个文件,并把它们下载下来,新建一个phpmailer文件夹,把下载好的文件放到文件夹中,然后我新建一个functions.php文件,让它与phpmailer这个文件夹同级,里面的内容是

SMTPDebug = 1;

//使用smtp鉴权方式发送邮件

$mail->isSMTP();

//smtp需要鉴权 这个必须是true

$mail->SMTPAuth=true;

//链接qq域名邮箱的服务器地址

$mail->Host = 'smtp.qq.com';

//设置使用ssl加密方式登录鉴权

$mail->SMTPSecure = 'ssl';

//设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587

$mail->Port = 465;

//设置smtp的helo消息头 这个可有可无 内容任意

// $mail->Helo = 'Hello smtp.qq.com Server';

//设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名

$mail->Hostname = 'http://www.zhangyingfeng.cn';

//设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码

$mail->CharSet = 'UTF-8';

//设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名

$mail->FromName = 'dian_feng';

//smtp登录的账号 这里填入字符串格式的qq号即可

$mail->Username ='1234567@qq.com';

//smtp登录的密码 使用生成的授权码

$mail->Password = 'xlksnqrmmfbebcfe';

//设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”

$mail->From = '1234567@qq.com';

//邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false

$mail->isHTML(true);

//设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大

$mail->addAddress($to,'通知');

//添加多个收件人 则多次调用方法即可

// $mail->addAddress('xxx@163.com','通知');

//添加该邮件的主题

$mail->Subject = $title;

//添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件

$mail->Body = $content;

//为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称

// $mail->addAttachment('./d.jpg','mm.jpg');

//同样该方法可以多次调用 上传多个附件

// $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');

$status = $mail->send();

//简单的判断与提示信息

if($status) {

return true;

}else{

return false;

}

}

然后,我们再新建一个文件index.php,让这个文件和functions.php和phpmaile文件夹同级,也就是这个样子,然后我们在index里面写入一些内容,对这个类进行测试

,然后你就把整个文件放到你的服务器中,然后在你的电脑浏览器进行访问你的网站,然后就可以到你的邮箱去查看是否有收到邮件啦。

这里是列举了qq的465端口,我认为网易的465应该也是和这个差不多,换一下functions.php中$mail->Host = 'smtp.163.com';就可以了。

希望这篇文章对你们有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值