如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

php发email,可以调用php的函数mail函数发送邮件,函数说明可以点击这里查看:https://doc.php.sh/zh/function.mail.html 。但是整个mail函数有很大的局限性,首先,它在win下面,默认是不能发送邮件的,需要配置个mail服务器。而在linux下面一般是不需要配置的。其次,这个mail函数的发送结果,是不可信的。因为它可以伪造发信人地址。具体的,以后有空开贴在说这个话题。

本文里面,苏南大叔给大家带来的是phpmailer这个类库的基本使用demo。这个库的使用,一般需要提供用户名和密码去真实的服务器上面做验证,所以发送结果还是可以信任的。和系统的mail函数相比而言,更强大更安全吧。但是却相对而言,缺乏便捷性。鱼和熊掌不可兼得。

phpmailer的github地址是这里:https://github.com/PHPMailer/PHPMailer 。当然,在compser大行其道的今天,你也可以使用composer来安装phpmailer。方法如下:

composer require phpmailer/phpmailer

下面是一个使用smtp进行phpmailer发信的简单函数包装(当然你也可以使用pop3发信):

include_once  '/libs/phpmailer/class.phpmailer.php';
include_once  '/libs/phpmailer/class.smtp.php';
/**
 * 邮件发送函数
 */
function sendMail($to, $title, $content) {
    $mail = new PHPMailer(true); //实例化PHPMailer类,true表示出现错误时抛出异常
    $mail->IsSMTP(); // 启用SMTP
    $mail->Host = 'smtp.qiye.163.com'; //smtp服务器的名称
    $mail->SMTPAuth = TRUE; //启用smtp认证
    $mail->Username = 'demo@newsn.net'; //你的邮箱名
    $mail->Password = 'yourpasswordgoeshere'; //邮箱密码
    $mail->From = 'demo@newsn.net'; //发件人地址(也就是你的邮箱地址)
    $mail->FromName = title; //发件人姓名
    $toarr = explode(',', $to);
    foreach ($toarr as $v) {
        $mail->AddAddress($v);
    }
    $mail->WordWrap = 50; //设置每行字符长度
    $mail->IsHTML(TRUE); // 是否HTML格式邮件
    $mail->CharSet = 'utf-8'; //设置邮件编码
    $mail->Subject = $title; //邮件主题
    $mail->Body = $content; //邮件内容
    $mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示
    return($mail->Send());
}

下面是个非常全的官方demo。

require 'PHPMailerAutoload.php';

$mail = new PHPMailer;
//$mail->SMTPDebug = 3;                               // Enable verbose debug output
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'user@example.com';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
$mail->addAddress('ellen@example.com');               // Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

通过phpmailer进行smtp发信 - email

这里还可以发送附件呢,说起来还是挺强大的。大家有用得上的,可以看着demo打造自己的版本。更多php相关文章,请点击:https://newsn.net/tag/php/

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。