PHPMailer发送邮件

  使用PHP发邮件,需要PHPMailer类库,今天记录下使用PHPMailer的一些使用方法。


使用环境
  0、版本不同,可能会导致解决方案行不通,故记录使用环境。
  1、Apache/2.4.33 (Win64) PHP/5.6.35
  2、ThinkPHP5.0.21
  3、phpmailer 6.0


安装dompdf
  1、使用命令行进入到项目根目录

	cd C:\wamp64\www\tp5

  2、使用composer安装phpmailer

	composer require phpmailer/phpmailer

  3、检查是否安装成功
  在C:\wamp64\www\tp5\vendor看是否有phpmailer文件夹


使用方法一

	//实例化PHPMailer
	$this->mail = new \PHPMailer();

	//是否启用smtp的debug进行调试,开发模式开启
	$mail->SMTPDebug = 1;

	//使用smtp鉴权方式发送邮件
    $mail->isSMTP();

    //使用鉴权方式,这里必须是true
    $mail->SMTPAuth = true;

    //设置加密方式,这里使用SSL
    $mail->SMTPSecure = 'ssl';

    //设置邮件服务器地址,这里使用QQ域名的邮箱服务器
    $mail->Host = 'smtp.qq.com';

   	//设置邮箱服务器端口
   	$mail->Port = 465;

   	//设置登录邮箱账号,你的邮箱
    $mail->Username = '#############';

    //设置授权码,从邮箱里面设置SMTP获得
    $mail->Password = '##############';
    
    //设置发送邮件邮箱信息,和登录邮箱账号一致
    $mail->setFrom('#########', '发送人'//设置接收邮件邮箱信息,你要发送的邮箱
   	$mail->addAddress('##########');

    //附件
    $mail->addAttachment(ROOT_PATH.'/public/letters/test.pdf'); 

    //邮件主题
    $mail->Subject = '邮件主题';

    //邮件内容
    $mail->Body    = '邮件内容';

使用方法二
  使用于tls方式、25端口,大致参数一样,需要改变几个关键的地方。

	$mail->SMTPOptions = array(
	    'ssl' => array(
	        'verify_peer' => false,
	        'verify_peer_name' => false,
	        'allow_self_signed' => true,
	    ));

	$mail->SMTPSecure = 'tls';

    $mail->Port = 25;

关于调试
  开启调试

	$mail->SMTPDebug = 1;

  有时调试只能看到比较大概的错误,要想看到详细的错误就需要设置调试等级,先来看源码注释内容

  	 /**
     * Debug output level.
     * Options:
     * * self::DEBUG_OFF (`0`) No debug output, default
     * * self::DEBUG_CLIENT (`1`) Client commands
     * * self::DEBUG_SERVER (`2`) Client commands and server responses
     * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status
     * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages
     * @var integer
     */

  可以大致看出每个等级显示信息内容:
    0 => 默认不开启调试输出
    1 => 客户端命令
    2 => 客户端命令和服务器反馈
    3 => 附加一些连接状态
    4 => 底层数据输出,所有信息

  由此可见,如果还没有找到想要的信息,不妨设置到3 和 4看看。有具体的错误信息,才能更快的解决问题。


相关扩展
  使用这个类库需要开启openssl,sockets,一般都默认开启了。没有开启的,找到php.ini去掉以下两行前面的分号,开启扩展。

	extension=php_openssl.dll
	extension=php_sockets.dll

  访问phpinfo(),检查他们是否开启。
在这里插入图片描述
在这里插入图片描述


结语
  1、整体上这个类库坑不是很多,可能就是使用tls、25端口的时候有些坑。

  2、使用$mail->SMTPDebug调试非常重要

  3、使用QQ邮箱服务器发送邮件,需要先去自己的邮箱设置STMP,并获取授权码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值