一、获取邮箱的授权码(这里以126邮箱为案例)
1.登录邮箱,点击设置
2.开启IMAP|SMTP 或 POP3|SMTP服务
3.获取授权码到授权码
二、下载邮箱类库
方法1.使用composer安装phpmailer(推荐使用此方法)
composer require phpmailer/phpmailer
方法2.手动下载引用
下载地址:https://github.com/PHPMailer/PHPMailer
三、封装通用函数
下面函数使用到的config配置文件
方法1.composer安装的封装
/**
* Notes:发送邮件
* @param $tomail //收件人地址
* @param string $subject //主题
* @param string $body //内容
* @param null $attachment //附件
* @param array $option // 额外参数
* @return bool
*/
function send_mail($tomail, $subject = '', $body = '', $attachment = null, $option = array()) {
// config读取的是配置文件里的配置
$username = config('my_mail.platform_126.username');
$senderName = config('my_mail.platform_126.sender_name', $username);
$password = config('my_mail.platform_126.password');
$defualtOption = array(
'toname' => '', // 接收方姓名
);
foreach($defualtOption as $key => $item){
if(!isset($option[$key])){
$option[$key] = $item;
}
}
$mail = new \PHPMailer\PHPMailer\PHPMailer(); //实例化PHPMailer对象
$mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->IsSMTP(); // 设定使用SMTP服务
$mail->SMTPDebug = 0; // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
$mail->SMTPSecure = config('my_mail.platform_126.smtp_secure'); // 使用安全协议
$mail->Host = config('my_mail.platform_126.host'); // 企业邮局域名
$mail->Port = config('my_mail.platform_126.port'); //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
$mail->Username = $username; //邮件发送人的用户名(请填写完整的email地址)
$mail->Password = $password; // 邮件发送人的 密码 (授权码)
$mail->SetFrom($username, $senderName);
$replyEmail = ''; //留空则为发件人EMAIL
$replyName = ''; //回复名称(留空则为发件人名称)
$mail->AddReplyTo($replyEmail, $replyName); //回复的地址
$mail->Subject = $subject; //邮件标题
$mail->MsgHTML($body); //邮件内容
$mail->AddAddress($tomail, $option['toname']); //收件人地址,("收件人email","收件人姓名")
if (is_array($attachment)) { // 添加附件
foreach ($attachment as $file) {
is_file($file) && $mail->AddAttachment($file);
}
}
return $mail->Send() ? true : $mail->ErrorInfo;
}
方法2.通过引用到extend的封装
function send_mail($tomail, $subject = '', $body = '', $attachment = null, $option = array()) {
// config读取的是配置文件里的配置
$username = config('my_mail.platform_126.username');
$senderName = config('my_mail.platform_126.sender_name', $username);
$password = config('my_mail.platform_126.password');
$defualtOption = array(
'toname' => '', // 接收方姓名
);
foreach($defualtOption as $key => $item){
if(!isset($option[$key])){
$option[$key] = $item;
}
}
$mail = new \PHPMailer\PHPMailer(); //实例化PHPMailer对象
$mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->IsSMTP(); // 设定使用SMTP服务
$mail->SMTPDebug = 0; // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
$mail->SMTPSecure = config('my_mail.platform_126.smtp_secure'); // 使用安全协议
$mail->Host = config('my_mail.platform_126.host'); // 企业邮局域名
$mail->Port = config('my_mail.platform_126.port'); //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
$mail->Username = $username; //邮件发送人的用户名(请填写完整的email地址)
$mail->Password = $password; // 邮件发送人的 密码 (授权码)
$mail->SetFrom($username, $senderName);
$replyEmail = ''; //留空则为发件人EMAIL
$replyName = ''; //回复名称(留空则为发件人名称)
$mail->AddReplyTo($replyEmail, $replyName); //回复的地址
$mail->Subject = $subject; //邮件标题
$mail->MsgHTML($body); //邮件内容
$mail->AddAddress($tomail, $option['toname']); //收件人地址,("收件人email","收件人姓名")
if (is_array($attachment)) { // 添加附件
foreach ($attachment as $file) {
is_file($file) && $mail->AddAttachment($file);
}
}
return $mail->Send() ? true : $mail->ErrorInfo;
}