使用PHPmailer发送邮件
下载phpmailer
https://github.com/PHPMailer/PHPMailer
打开后将
这几个文件导入你的项目(复制),本人使用的tp5,如下图(位置自定)
记得修改命名空间(都要改哈)
新建一个控制器
<?php
/**
* Created by PhpStorm.
* User: Cotary
* Date: 2018/11/27
* Time: 10:59
*/
namespace app\index\controller;
use app\index\model\PHPMailer;
use think\Controller;
use think\Db;
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Credentials : true");
header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Connection, User-Agent, Cookie");
class Email extends Controller
{
public function email()
{
/* ignore_user_abort(true);//关闭浏览器仍然执行
set_time_limit(0);//让程序一直执行下去
$interval = 3;//每隔一定时间运行
do {
$msg = date("Y-m-d H:i:s");
file_put_contents("log.text", $msg, FILE_APPEND);//记录日志
sleep($interval);//等待时间,进行下一次操作。*/
$toemail = '543471956@qq.com';
$name = '1274829183';
$subject = '打撸了打撸了';
$body = '打撸了打撸了';
sendEmail($toemail, $subject, $body);
/* } while (true);*/
}
接下来实现这个控制器里面的sendEmail()方法:
function sendEmail($tomail, $subject = '', $body = '', $attachment = null)
{
$mail = new PHPMailer(true);
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
$mail->isSMTP(); // Set mailer to use SMTP
$mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
//$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers
$mail->Host = "smtp.qq.com"; // SMTP 服务器
$mail->SMTPAuth = true; // Enable SMTP authentication
//$mail->Username = 'user@example.com'; // SMTP username
// $mail->Password = 'secret'; // SMTP password
$mail->Username = "你的邮箱@qq.com"; // SMTP服务器用户名
$mail->Password = "fasdfasdfasdf"; // SMTP服务器密码
// $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->SMTPSecure = 'ssl'; // 使用安全协议
// $mail->Port = 587; // TCP port to connect to\
$mail->Port = 465; // SMTP服务器的端口号
//Recipients
$mail->setFrom('cotary@qq.com', 'cotary'); //发件人 地址 和 用户名
// $mail->setFrom('from@example.com', 'Mailer');
// $mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient
$mail->addAddress($tomail); // Name is optional 收件人的地址 (用户名可选 )
$replyEmail = 'cotary@qq.com'; //留空则为发件人EMAIL
$replyName = 'cotary'; //回复名称(留空则为发件人名称)
$mail->AddReplyTo($replyEmail, $replyName);
//$mail->addReplyTo('info@example.com', 'Information');
// $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 = $body; //发送的正文
//$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; //该属性的设置是在邮件正文不支持HTML的备用显示
if (is_array($attachment)) { // 添加附件
foreach ($attachment as $file) {
is_file($file) && $mail->AddAttachment($file);
}
}
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
其中 $mail->Username = “你的邮箱@qq.com”; // SMTP服务器用户名
$mail->Password = “fasdfasdfasdf”; // SMTP服务器密码 需要你去qq邮箱开启smtp的时候那个字符密码
你们使用的时候只需要改这两个东西就能用了 (还有不需要你的qq邮箱密码和qq密码,别搞错了)
备注:在这个邮箱需要你开启(不开就用不起)
ssl 和socekt
好了,如果不懂可以找我,cotary@qq.com