使用PHPMailer扩展类库发送邮件(附源码)

利用PHPMailer扩展类库来实现发送功能

本次使用的新浪邮箱作为发送方,使用其他邮箱也是一样的方式结果。
不同的可能就是对发送信息的敏感和拦截程度不同

一、 登录新浪邮箱,打开设置找到带有smtp字样的页面
新浪邮箱
测试账号:131*
在这里插入图片描述
把所有状态均设为打开,每次打开都需要发送验证才能打开
在这里插入图片描述
SMTP服务器地址我们要保存下来,后面需要贴到代码中
在这里插入图片描述
成功后,即可得到授权密码。记得保存,后面同样会用到
在这里插入图片描述
至此,邮箱我们已经设置完毕。
小结:申请成功后,我们会得到一个唯一授权码,我们还需要得到SMTP服务器的地址:SMTP服务器:smtp.sina.com

下面是安装PHPMailer扩展类的两种方式

本次我们用第二种

  1. 使用git克隆 PHPMailer扩展类库

在根目录下创建一个空文件夹mall
在这里插入图片描述
在github上找到PHPMailer的扩展类库并克隆到项目根目录下
下载地址:https://github.com/PHPMailer/PHPMailer
如图所示
复制该地址到项目根目录下,打开命令行,使用git clone 进行克隆
复制:git clone git@github.com:PHPMailer/PHPMailer.git 执行在这里插入图片描述克隆中...
在这里插入图片描述
到这一步,就是克隆好了。

  1. 利用composer 安装

命令:

composer require phpmailer/phpmailer

如图所示,即为成功

安装好PHPMailer后应用到代码中

现在我们在根目录下新建index.php,并复制代码进去

<?php
#!/bin/bash

/**
 * User: hzbskak
 * Date: 2019/12/25 - 14:54
 */

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
class Email{
    public static function sendEmail($email,$body){
        $mail = new PHPMailer(true);
        try {

            //使用STMP服务
            $mail->isSMTP();

            //这里使用我们第二步设置的stmp服务地址
            $mail->Host = "smtp.sina.com";

            //设置是否进行权限校验
            $mail->SMTPAuth = true;

            //第二步中登录网易邮箱的账号
            $mail->Username = "hzbskak@sina.com";

            //客户端授权密码,注意不是登录密码
            $mail->Password = "这里是你获取到的授权码";

            //使用ssl协议
            $mail->SMTPSecure = 'ssl';

            //端口设置
            $mail->Port = 465;

            //字符集设置,防止中文乱码
            $mail->CharSet= "utf-8";

            //设置邮箱的来源,邮箱与$mail->Username一致
            $mail->setFrom("hzbskak@sina.com", "测试来源");

            //设置收件的邮箱地址
            $mail->addAddress($email);

            //设置回复地址,一般与来源一致
            $mail->addReplyTo("hzbskak@sina.com", "测试来源");

            $mail->isHTML(true);
            //标题
            $mail->Subject = '测试标题';
            //正文
            $mail->Body    = $body;
            $mail->send();
            echo 'ok';
            return true;
        } catch (Exception $e) {
            var_dump( array('errCode'=>-1,'msg'=>$mail->ErrorInfo));
        }
    }
}
Email::sendEmail('接收方邮箱号', '测试内容体');


// 需要修改的地方
$mail->Username = "你的邮箱号";
$mail->Password = "你的授权码";
// 这个是调用方法
Email::sendEmail('接收方邮箱号', '测试内容体'); // 这是调用方法
// 在实际应用项目中我们可以把这个方法放到我们调用的方法中去
Email::sendEmail();

至此代码结束

我们来测试一下
测试链接

在这里插入图片描述
返回“ok”,我们到接收方的邮箱中去看一下是否成功接收到
在这里插入图片描述

问题总结

即使邮箱服务器返回"ok"但是也只能是表明一方已经成功,还需要验证接收方是否真正可以接收到邮件。
如果没有接收到邮件,那么很有可能是发送方邮箱服务器返回给你申请授权码的邮箱中一封邮件。可能是550报错。涉及到了一些敏感词汇等,
你可以根据这个报错,来修改代码中的body体内容,或者标题等,如果顺着这个思路找不到解决问题的办法,也可以咨询客服,他们会告诉你具体的错误。

代码包地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值