PHP 利用QQ邮箱发送邮件「PHPMailer」

阅读:959 2019-03-20 14:09:20 来源:新网

在php应用开发中,往往需要验证用户邮箱、发送消息通知,而使用php内置的mail()函数,则需要邮件系统的支持。

t017bf32c52cb52e045.jpg

如果熟悉imap/smtp协议,结合socket功能就可以编写邮件发送程序了,不过开发这样一个程序并不容易。

好在phpmailer封装的足够强大,使用它可以更加便捷的发送邮件,免去了我们很多额外的麻烦。

phpmailer

phpmailer是一个封装好的php邮件发送类,支持发送html内容的电子邮件,以及可以添加附件发送,并不像php本身mail()函数需要服务器环境支持,您只需要设置邮件服务器以相关信息就能实现邮件发送功能。

php扩展支持

phpmailer需要php的sockets扩展支持,而登录qq邮箱smtp服务器则必须通过ssl加密,故php还得包含openssl的支持。

↑使用phpinfo()函数查看socket和openssl扩展信息(wampserver默认启用了该扩展)。

phpmailer核心文件

↑在本文中只需要class.phpmailer.php和phpmailer/class.smtp.php。

qq邮箱设置

所有的主流邮箱都支持smtp协议,但并非所有邮箱都默认开启,您可以在邮箱的设置里面手动开启。

第三方服务在提供了账号和密码之后就可以登录smtp服务器,通过它来控制邮件的中转方式。

开启smtp服务

↑选择imap/smtp服务,点击开启服务。

验证密保

↑发送短信“配置邮件客户端”至1069-0700-69。

获取授权码

↑smtp服务器认证密码,需要妥善保管(ps:密码直接没有空格)。

php发送邮件

/**

*邮件发送

*@param$to接收人

*@paramstring$subject邮件标题

*@paramstring$content邮件内容(html模板渲染后的内容)

*@throwsexception

*@throwsphpmailerexception

*/

functionsend_email($to,$title,$content){

require_once(think_path.'library/vendor/phpmailer/class.phpmailer.php');

require_once(think_path.'library/vendor/phpmailer/class.smtp.php');

//实例化phpmailer核心类

$mail=newphpmailer();

$config=tpcache('smtp');

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

$mail->issmtp();

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

$mail->smtpauth=true;

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

$mail->host=$config['smtp_server'];//'smtp.qq.com';

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

$mail->smtpsecure='ssl';

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

$mail->port=$config['smtp_port'];//465;

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

$mail->hostname='www.rongxun.net';

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

$mail->charset='utf-8';

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

$mail->fromname='容迅科技';

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

$mail->username=$config['smtp_user'];//'3131271385@qq.com';

//smtp登录的密码使用生成的授权码(就刚才保存的最新的授权码)

$mail->password=$config['smtp_pwd'];

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

$mail->from=$config['smtp_user'];

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

$mail->ishtml(true);

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

if(is_array($to)){

foreach($toas$v){

$mail->addaddress($v,'尊敬的客户');

}

}else{

$mail->addaddress($to,'尊敬的客户');

}

//添加该邮件的主题

$mail->subject=$title;

//添加邮件正文上方将ishtml设置成了true,则可以是完整的html字符串

$mail->body=$content;

$status=$mail->send();

//判断与提示信息

if($status){

returntrue;

}else{

returnfalse;

}

}

相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服