phpMailer邮件发送

本文介绍两种使用PHP发送邮件的方法:一种是通过phpMailer类库实现更复杂的邮件发送需求,包括设置SMTP服务器、发送HTML格式邮件及附件;另一种是利用PHP自带的mail函数快速发送简单邮件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 "发送失败!";
}

?>
如果发送失败 请检查你的防火墙 网络 不行就看下你的配置信息


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值