由于最近导师给了Web开发的任务,用ThinkPHP+HTML5做个官网。其中有一项就是后台管理实现发送邮件的功能,在网上查了很多资料,使用PHPMailer这个第三方库还是挺方便的。第一次学习ThinkPHP框架,用了一天的时间搞懂了这个发邮件的功能,记录一下过程,有不专业的地方请多指教:p
1 下载PHPMalier
PHPMailer下载地址:https://github.com/PHPMailer/PHPMailer/
(ReadMe里带有测试的demo,核心代码直接拿来复制粘贴非常方便)
2 配置
配置这一步对于大佬们来说应该是挺简单的,但是对我这种小白来说,里面好多引用语法和格式实在是给我整懵了,所以在这一步耽误了比较久的时间,不过好在最后搞明白了,详细的记录一下吧。
- vendor目录
由于项目结构的问题,我把下载好的PHPMailer目录放在了vendor文件夹下。vendor这部分要注意的是github上的demo给的使用use和require,不过我放在了vendor下,所以后边引用的时候要用助手函数vendor()。
vendor("phpmailer.src.PHPMailer");
vendor("phpmailer.src.SMTP");
vendor("phpmailer.src.Exception");
- extend目录
新建了个util文件夹,再新建个Util.php类,也是用来放核心代码的类文件。这里要注意的是引用extend需要配置一下路径以及用法,下面这两位博主的blog就可以。
配置路径
Extend使用
3 PHPMailer核心代码
这里就不多说了,和demo差不多,需要改的地方就是收发件人。这里我用的是qq邮箱,password可能需要去QQ邮箱打开SMTP设置得到授权码。我就是没用授权码,导致邮件发送失败,后来在这里查了半天资料T-T
$mail = new PHPMailer(true);
//Server settings
$mail->SMTPDebug = 0; // Enable verbose debug output
$mail->isSMTP(); // Send using SMTP
$mail->Host = 'smtp.qq.com'; // Set the SMTP server to send through
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '******@qq.com'; // SMTP username
$mail->Password = '******'; // SMTP password
$mail->SMTPSecure = 'PHPMailer::ENCRYPTION_SMTPS'; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
$mail->Port = 587; // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
//Recipients
$mail->setFrom('*****@qq.com', 'Mailer');
$mail->addAddress($to); // Add a recipient
// $mail->addAddress('ellen@example.com'); // Name is optional 添加多个收件人
$mail->addReplyTo('********@qq.com', 'Mailer');
// $mail->addCC('cc@example.com');
// $mail->addBCC('bcc@example.com');
// Attachments 添加附件
// $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
// Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $content;
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
写好代码后,直接在浏览器运行,这里我echo了一个发送成功的提示,看到这个并且收到邮件就表示发送成功。
4 HTML5部分
实现的功能就是输入一个邮箱地址,提交后自动发送邮件。这里我仅做展示就没有写样式,直接用的继承的模板中的样式。代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试</title>
</head>
<body>
<h1>发送邮件</h1>
<form action="{:url('Test/get_email')}" method="post" role="form">
<input type="email" placeholder="请输入您的电子邮件" name="email" id="email"/>
<button type="submit">提 交</button>
</form>
</body>
</html>
php的功能函数,主要是实现接收邮件地址再传给PHPMailer,代码如下:
public function get_email(){
$sendmail=$_POST["email"];
$mail=new Util(); //实例化Util类
$mail->SendEmail($sendmail,'邮件测试','123'); //调用Util类里的函数,实现邮件发送
}
5 结果
界面做的比较丑,但是功能可以实现,输入收件邮箱就可以发送啦。
关于ThinkPHP框架的内容,还在学习中~有问题希望大家评论里多多和我交流呀
如果这篇Blog对你有帮助的话,给我点个小星星哦:)