1phpMailer 是一个邮件发送类 实用,无论是原生还是框架下,都没有问题 下载地址
https://github.com/PHPMailer/PHPMailer
function send_email($user_list, $title, $content, $att_path='', $is_html=true){
vendor('phpMailer.SMTP');
vendor('phpMailer.PHPMailer');
$mail = new \PHPMailer\PHPMailer\PHPMailer;
$mail->Host = 'smtp.sina.com';
$mail->isSMTP(); // Set mailer to use SMTP 使用SMTP方式发送
$mail->SMTPAuth = true; // Enable SMTP authentication 启用SMTP验证功能
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
// 设置发送的邮件的编码
$mail->CharSet = 'UTF-8';
// 设置发件人昵称 显示在收件人邮件的发件人邮箱地址前的发件人姓名
$mail->FromName = '**';
// smtp登录的账号 QQ邮箱即可
$mail->Username = '*****@sina.com';
// smtp登录的密码 使用生成的授权码
$mail->Password = '******';
// 设置发件人邮箱地址 同登录账号
$mail->From = '******@sina.com';
// 邮件正文是否为html编码 注意此处是一个方法
$mail->isHTML($is_html);
/*
foreach ($user_list as $key => $email_address) {
// 设置收件人邮箱地址
$mail->addAddress($email_address);
}
*/
// 设置收件人邮箱地址
$mail->addAddress($user_list);
// 添加该邮件的主题
$mail->Subject = $title;
// 添加邮件正文
$mail->Body = $content;
// 为该邮件添加附件
if(!empty($att_path)){
$mail->addAttachment();
}
// 发送邮件 返回状态
if($mail->send()){
return 'ok';
}else{
return 'no';
}
}
2.php自带mail函数
首先调用
<?php phpinfo();?>
查看自己的服务器是否支持这个函数 mail邮件函数是php核心的组成部分,无需安装就可以使用这些函数
2.如果邮件发送当时QQ必须开启SMTP服务,不开启是无法实现在php脚本中使用该QQ邮箱发送的,具体怎么设置
在QQ邮箱设置里面自己找 找不到可以上网百度。
3. 25号端午用于SMTP,如果被占用或被防火墙禁止访问,应该也会发送失败
4.php.ini配置如下
SMTP = smtp.qq.com
smtp_port = 25
mail.add_x_header = On
sendmail_path="F:\phpStudy\phpStudy\tools\sendmail\sendmail.exe -t"
sendmail_path便是你的sendmail的路径,有人说 路径不能太长 我也不知道我的算不算长,反正我的没出问题
修改之后重启apache ini_set函数可以让你的php.ini里的配置临时生效
sendmail.ini 配置如下
smtp_server=smtp.qq.com
smtp_port=25
smtp_ssl=auto
error_logfile=error.log 建议开启(将前面的分号去掉),便于查找问题
debug_logfile=debug.log 建议开启(将前面的分号去掉),便于查找问题
auth_username=*****@qq.com 发送邮件的QQ邮箱号
auth_password=***** 邮箱密码
force_sender=*****@qq.com 要同上上
测试代码
<?php
// php.ini动态配置
ini_set('sendmail_path','F:\phpStudy\phpStudy\tools\sendmail\sendmail.exe -t');
ini_set('SMTP','smtp.qq.com ');
ini_set('smtp_port','25');
ini_set('mail.add_x_header','On');
$from = 'mail测试';
$to = '*****@qq.com'; //发给的QQ邮箱
$subject = '测试';
$message = '这是使用php的mail函数在脚本中发来的邮件';
$message = wordwrap($message, 70); //mail()该函数规定要发送的消息每行不能超过70个字
/**
* (Windows 下)当 PHP 直接连接到 SMTP 服务器时,如果在一行开头发现一个句号,则会被删掉。
* 要避免此问题,将单个句号替换成两个句号。
*/
$message = str_replace("\n.", "\n..", $message);
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
if (mail($to, $subject, $message, $headers)){
echo '发送成功!';
}else{
echo "发送失败!";
}
?>
如果发送失败 请检查你的防火墙 网络 不行就看下你的配置信息