我怎么敢倒下,我身后空无一人

阿里云ECS使用PHPMailer报错smtp connect failed

 PHP   高蒙   阅读(925)   评论(1004)   2018-02-23 09:56:22    PHPMailer smtp connect failed 阿里云ECS 


在阿里云ECS服务器上部署一套thinkphp开发的程序,需要用到phpmailer邮件发送功能,

在本地测试完成之后,迁移到线上邮件发不出去,一直提示 SMTP connect failed。

错误提示:SMTP connect failed(服务器环境Linux+nginx+php+mysql)

解决的方法有以下几种:

1、查看是否打开了socket与openssl扩展。可以使用phpinfo();

20140302140346.jpg

如果没有那就找到php.ini文件并打开,将extension=php_openssl.dll这个句代码前的“;”去掉就OK了。


2、发送邮件的代码中加入下面两行。

    $mail->SMTPSecure = 'ssl'; //设置使用ssl加密方式登录鉴权
    $mail->Port = 465;         //设置ssl连接smtp服务器的远程服务器端口号 465


3、在防火墙在添加465端口的访问权限。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT

最新的阿里云ECS可以直接在安全策略中配置即可。

阿里云管理后台->云服务器->网络和安全->安全组->自行配置即可。


4、一切设置妥当,可以重启php和防火墙。

service php-fpm reload;
service iptables reload;

再重新试试,用PHPMailer发送邮件会不会在报出smtp connect failed的错误了。


附赠,thinkphp下使用PHPMailer发送邮件的代码。

$email = ''; // 收件人的邮箱地址
    require VENDOR_PATH.'PHPMailer/PHPMailer.php';
    require VENDOR_PATH.'PHPMailer/SMTP.php';
    $config = array(
        'MAIL_HOST' =>'smtp.qq.com',//smtp服务器的名称
        'MAIL_SMTPAUTH' =>true, //启用smtp认证
        'MAIL_USERNAME' =>'',//你的邮箱名
        'MAIL_FROM' =>'',//发件人地址
        'MAIL_FROMNAME'=>'',//发件人姓名
        'MAIL_PASSWORD' =>'',//邮箱密码
        'MAIL_CHARSET' =>'utf-8',//设置邮件编码
        'MAIL_ISHTML' =>true, // 是否HTML格式邮件
        );
    $mail = new \PHPMailer(true);
    $mail->isSMTP(); // 启用SMTP
    $mail->SMTPSecure = 'ssl'; //设置使用ssl加密方式登录鉴权
    $mail->Port = 465;         //设置ssl连接smtp服务器的远程服务器端口号 465
    $mail->Host=$config['MAIL_HOST']; //smtp服务器的名称(这里以QQ邮箱为例)
    $mail->SMTPAuth = $config['MAIL_SMTPAUTH']; //启用smtp认证
    $mail->Username = $config['MAIL_USERNAME']; //你的邮箱名
    $mail->Password = $config['MAIL_PASSWORD'] ; //邮箱密码
    $mail->From     = $config['MAIL_FROM']; //发件人地址(也就是你的邮箱地址)
    $mail->FromName = $config['MAIL_FROMNAME']; //发件人姓名
    $mail->AddAddress($email,""); //邮件收件人地址 名称
    $mail->WordWrap = 50; //设置每行字符长度
    $mail->IsHTML($config['MAIL_ISHTML']); // 是否HTML格式邮件
    $mail->CharSet =$config['MAIL_CHARSET']; //设置邮件编码
    $mail->Subject = '邮件主题';//邮件主题
    $mail->Body    = '邮件内容。';//邮件内容
    $mail->AltBody = '若您看到此段内容,万分抱歉,您的邮箱不支持我们的邮件!';
    if($mail->send()){// 发送邮件
        echo 'ok';    // 发送成功
    }else{
        echo 'error'; // 发送失败
    }





相关文章



我要评论


站长昵称:(*)

输入内容:


评论列表


高蒙

男,程序猿一枚

 

人生要是没有理想, 那跟一条咸鱼有什么分别。


关于我

  http://www.shuchengxian.com

高蒙个人博客是以PHP技术为主的程序员个人博客。博客主要发布php开发中遇到的问题以及解决办法,同时个人博客也分享网站模板素材,jquery插件等方面素材。


站点声明:相关侵权、举报、投诉及建议等,请发E-mail:936594075#qq.com(#替换成@)。

Copyright © 2018, www.shuchengxian.com, All rights reserved. 个人博客皖公网安备 34152302000022号 皖ICP备15015490号

关键词:个人博客,PHP博客,PHP博客程序,高蒙博客,高蒙个人博客,php程序员博客,程序员个人博客