400-800-9385
网站建设资讯详细

网站制作之PHP发送系统邮件

发表日期:2019-08-26 11:07:59   作者来源:红旺   浏览:4463   标签:网站制作    
利用邮件服务商的IMAP/SMTP 服务,这里我们用163邮箱在说明一下,实现发送邮件功能的流程
1.登入163邮箱在设置里开启IMAP/SMTP 服务
 

邮件设置



2.在客户端授权密码设置授权密码(需要手机验证), POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。
 

邮件设置



3. 确认php.ini中;extension=php_openssl.dll是否开启, 没有则添加extension=php_openssl.dll。
4.选择php自带函数mail() 或者PHPMaile第三方的类进行发送邮件,下面介绍第一种自带mail()
一:
/*需要添加一个发送邮件的代理在config配置文件中*/
'MAIL_ADDRESS'          =>  '****@163.com',        // 初始化邮箱地址
'MAIL_SMTP'             =>  'smtp.163.com',        // 初始化邮箱SMTP服务器
'MAIL_LOGINNAME'        =>  '****@163.com',        // 初始化邮箱登录帐号
'MAIL_PASSWORD'         =>  '****',                 // 初始化邮箱密码
'MAIL_CHARSET'          =>  'UTF-8',                //编码
'MAIL_AUTH'             =>  true,                   //邮箱认证
'MAIL_HTML'             =>  true,                   //true HTML格式 false TXT格式
 
/*以下是控制器中的使用*/
import('Org.Util.Mail');//导入邮件类
$sendTitle="邮件标题";//邮件标题
$sendData="邮件内容,可以使用html代码";//发送内容
$toMail="xxxxx@163.com";//收件人
$theme="留言反馈邮件";//邮件主题
SendMail($toMail,$sendTitle,$sendData,$theme);
 
 
二、
* phpemail邮件发送服务类,下载的phpmail把src时的文件放入指定文件夹,同时修改去除PHPMailer.php和SMTP.php时的命名空间即可
 * 库下载地址:https://github.com/PHPMailer/PHPMailer
这是封装的一个类
class SendemailService {
    function __construct() {
        $config = array(
            'MAIL_CHARSET' => 'UTF-8',
            'MAIL_SMTPAUTH' => true, //是否使用身份验证
            'MAIL_ISHTML' => true, //是否使用html
            'MAIL_USERNAME' => '', //发件地址
            'MAIL_SMTPHOST' => '', //smtp地址
            'MAIL_PASSWORD' => '', //发件地址密码
            'MAIL_SMTPSECURE' => '', //使用ssl协议方式,ssl协议方式端口号是465/994
            'MAIL_PORT' => '25', //端口
            'MAIL_GET_ADDRESS' => '', //默认单一收件箱
        );
        $this->mailconfig = $config;
    }
 
    /**
     * 发送邮件
     * @param $get_email
     * @param $data array('title'=>'','detail'=>'')
     * @return bool
     */
    public function sendEmail($data, $get_email = '') {
        vendor('PHPMailer.PHPMailer');
        vendor('PHPMailer.SMTP');
        $mail = new \PHPMailer();
        $mail = $this->setBaseConfig($mail, $data, $get_email);
        if (!$mail->send()) {
            return "Mailer Error: " . $mail->ErrorInfo; //返回错误信息
        } else {
            return 0; //为0表示发送成功
        }
    }
 
    /**
     * 邮件基本设置
     * @param $mail
     * @param $data
     * @param string $get_email
     * @return mixed
     */
    public function setBaseConfig($mail, $data, $get_email = '') {
        $config = $this->mailconfig;
        $get_email = $get_email ? $get_email : $config['MAIL_GET_ADDRESS'];
        $mail->isSMTP(); // 使用SMTP服务
        $mail->CharSet = "utf8"; // 编码格式为utf8,不设置编码的话,中文会出现乱码
        $mail->Host = $config['MAIL_SMTPHOST']; // 发送方的SMTP服务器地址
        $mail->SMTPAuth = $config['MAIL_SMTPAUTH']; // 是否使用身份验证
        $mail->Username = $config['MAIL_USERNAME']; // 发送方的163邮箱用户名
        $mail->Password = $config['MAIL_PASSWORD']; // 发送方的邮箱密码,注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码!
        $mail->SMTPSecure = $config['MAIL_SMTPSECURE']; // 使用ssl协议方式
        $mail->Port = $config['MAIL_PORT']; // 163邮箱的ssl协议方式端口号是465/994
        $mail->IsHTML($config['MAIL_ISHTML']); //支持html格式内容
        $mail->setFrom($config['MAIL_USERNAME'], ''); // 设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@163.com),Mailer是当做名字显示
        $mail->addAddress($get_email, ''); // 设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@163.com)
        //$mail->addReplyTo("","王");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
        //$mail->addCC("1132083961@qq.com"); // 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址
        //$mail->addBCC("");// 设置秘密抄送人
        //$mail->addAttachment("bug0.jpg");// 添加附件
 
        $mail->Subject = $data['title']; // 邮件标题
        $mail->Body = $data['detail']; // 邮件正文
        //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
        return $mail;
    }
 
 
}
调用方法
 
$mail=new \Fwadmin\Service\SendemailService();
        $send['title']=$title;
        $send['detail']=$content;
        $flag=$mail->sendEmail($send,$email);
如没特殊注明,文章均为方维网络原创,转载请注明来自https://www.szfangwei.cn/news/5239.html