开发者社区> 问答> 正文

thinkphp中如何使用smtp发送邮件:报错

在项目中想使用smtp发送邮件,代码已经基本弄好了,主要的配置信息如下


qq邮箱中的相关服务也开启了:


然后填了自己的qq邮箱号和密码等信息都正确了,发送的时候就是报错,说是没有ssl什么的,不知道怎么设置,qq的帮助信息没用,

代码没问题,同事之前直接就去qq邮箱中开启几个服务,弄了邮箱独立密码,其他都一样,我用这段代码用同事的邮箱测试过,就没问题,用自己邮箱就不行,好像qq邮箱的smtp是不是和几个月前不一样了?找了好久好久,天呐。。。。唉

展开
收起
kun坤 2020-06-14 09:49:09 1130 0
1 条回答
写回答
取消 提交回答
  • TP官网方法 (http://www.thinkphp.cn/extend/248.html) a).引入函数库:Email.class.php放在component文件夹下 b).配置文件:common/Conf/config.php中加入如下:

    'SMTP_SERVER' =>'smtp.163.com',                 //邮件服务器
        'SMTP_PORT' =>'25',                             //邮件服务器端口
        'SMTP_USER_EMAIL' =>'@163.com',     //SMTP服务器的用户邮箱(一般发件人也得用这个邮箱)
        'SMTP_USER'=>'@163.com',            //SMTP服务器账户名
        'SMTP_PWD'=>'授权密码',                         //SMTP服务器账户密码
        'SMTP_MAIL_TYPE'=>'HTML',                       //发送邮件类型:HTML,TXT(注意都是大写)
        'SMTP_TIME_OUT'=>30,                            //超时时间
        'SMTP_AUTH'=>true,  
    

    1 2 3 4 5 6 7 8 c).实际调用:controller.php,直接可以在控制器中应用,如下 1 $mail = new \Component\Email(); $data['mailto'] = "123456@qq,.com"; //收件人 $data['subject'] = '欢迎注册网站'; //邮件标题 $data['body'] = "邮件正文内容"; //邮件正文内容 if($mail->send($data)) { //邮件发送成功... } else { //邮件发送失败... } 1 2 3 4 5 6 7 8 9 10 11 12 2.类库 a).引入函数库,PHPMailer移动到thinkphp里的library\Vendor b).配置文件,common/Conf/config.php中加入如下: 1 2 // // 配置邮件发送服务器 'MAIL_HOST' =>'smtp.163.com',//smtp服务器的名称smtp.exmail.qq.com 'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证renxiaole66@126.com 'MAIL_USERNAME' =>'@163.com',//你的邮箱名 'MAIL_FROM' =>'@163.com',//发件人地址 'MAIL_FROMNAME'=>'MR.峰',//发件人姓名 'MAIL_PASSWORD' =>'授权密码',//邮箱授权密码 'MAIL_CHARSET' =>'utf-8',//设置邮件编码 'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件 1 2 3 4 5 6 7 8 9 c).引入函数,common/common/function.php,创建此php文件,后边用时框架会自动加载 1 function SendMail($to, $title, $content) { Vendor('PHPMailer.PHPMailerAutoload');
    $mail = new PHPMailer(); //实例化 $mail->IsSMTP(); // 启用SMTP $mail->Host=C('MAIL_HOST'); //smtp服务器的名称(这里以QQ邮箱为例) $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证 $mail->Username = C('MAIL_USERNAME'); //你的邮箱名 $mail->Password = C('MAIL_PASSWORD') ; //邮箱密码 $mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址) $mail->FromName = C('MAIL_FROMNAME'); //发件人姓名 $mail->AddAddress($to,"尊敬的客户"); $mail->WordWrap = 50; //设置每行字符长度 $mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件 $mail->CharSet=C('MAIL_CHARSET'); //设置邮件编码 $mail->Subject =$title; //邮件主题 $mail->Body = $content; //邮件内容 $mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示 return($mail->Send()); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 d).实际调用:controller.php,直接可以在控制器中应用,如下 1 if(SendMail("$_POST[user_email]",'欢迎注册网站',"$message")){ $this->success('发送成功,请激活后登录',U('login')); }else{ $this->error('发送失败'); } }else{//add()失败 // echo "error"; $this->error('注册失败',U('register')); }

    2021-02-21 00:28:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载