php发送邮件

1. php内置的mail()函数

php本身提供了一个邮件发送函数mail,可以在程序中直接发送电子邮件,不过该函数要求服务器支持sendmail或者必须设置一台不需要中继的邮件发送服务器,但现在要找到一台不需要身份验证的邮件发送中继几乎不可能,所以使用mail函数往往无法成功发送email。
自己如果熟悉SMTP协议,结合socket功能就可以编写高效稳定的邮件发送程序,但对一般用户来说太困难.好在互联网上已经有很多别人编写好的邮件发送模块,我们只需要下载后简单调用即可,十分方便.

2. 使用封装的STMP协议的邮件类

这里推荐 phpmailer

第一步:需要下载PHPMailer文件包
第二步:确认你的服务器系统已经支持socket 如下图,通过phpinfo();查看是否支持sockets
如果没有这一项就请注意: socket 是属于PHP扩展部分,编译时必须给定一个用于./configure --enable-sockets 的配置选项。
第三步:把文件解压到你的web服务器目录下,调用类就可以了,说明:首先包含 class.phpmailer.php,然后创建对象,设置参数,调用成员函数。具体请见下面的示例代码:
<?php
ini_set('date.timezone','PRC');

require_once('./class.phpmailer.php');
include_once("class.smtp.php"); //可选,否则会在class.phpmailer.php中包含

$mail = new PHPMailer(true); //实例化PHPMailer类,true表示出现错误时抛出异常

$mail->IsSMTP(); // 使用SMTP

try {
    $mail->CharSet ="UTF-8";//设定邮件编码
    $mail->Host       = "smtp.163.com";    // SMTP server
    $mail->SMTPDebug  = 1;        // 启用SMTP调试 1 = errors  2 =  messages
    $mail->SMTPAuth   = true;    // 服务器需要验证
    $mail->Port       = 25;        //默认端口
    // $mail->Port       = 465;                    // ssl验证时默认端口
    // $mail->SMTPSecure = "ssl";     
    // $mail->SMTPSecure = "ssl";                 
    // $mail->Host       = "smtp.gmail.com";     


    $mail->Username   = "qustliuchuanwei@163.com"; //SMTP服务器的用户帐号
    $mail->Password   = "fanyi303114";        //SMTP服务器的用户密码
    $mail->AddReplyTo('qustliuchuanwei@163.com', '回复'); //收件人回复时回复到此邮箱,可以多次执行该方法
    
    //收件人如果多人发送循环执行AddAddress()方法即可 还有一个方法时清除收件人邮箱ClearAddresses()
    $mail->AddAddress('1254428526@qq.com', 'liuchuanwei'); 
    
    $mail->SetFrom('qustliuchuanwei@163.com', '发件人');//发件人的邮箱
    //$mail->AddAttachment('./img/bloglogo.png');      // 添加附件,如果有多个附件则重复执行该方法
    $mail->Subject = '这里是邮件的标题' . date('Y-m-d H:i:s');

    //以下是邮件内容
    $mail->Body = '<h1>邮件内容</h1><font color=red>测试颜色</font>' . date('His');
    $mail->IsHTML(true);

    //$body = file_get_contents('tpl.html'); //获取html网页内容
    //$mail->MsgHTML(str_replace('\','',$body));

    $mail->Send();
    echo "Message Sent OK";
} catch (phpmailerException $e) {
    echo $e->errorMessage(); //从PHPMailer捕获异常
} catch (Exception $e) {
    echo $e->getMessage();
}
?>
原文地址:https://www.cnblogs.com/lhat/p/7052941.html