小马哥 2014-12-26 09:28:59 90033次浏览 25条评论 71 15 0

1.在配置文件main-local.php components=>[]里面配置

'mailer' => [  
   'class' => 'yii\swiftmailer\Mailer',  
    'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
   'transport' => [  
       'class' => 'Swift_SmtpTransport',  
       'host' => 'smtp.163.com',  //每种邮箱的host配置不一样
       'username' => '15618380091@163.com',  
       'password' => '*******',  
       'port' => '25',  
       'encryption' => 'tls',  
                           
                   ],   
   'messageConfig'=>[  
       'charset'=>'UTF-8',  
       'from'=>['15618380091@163.com'=>'admin']  
       ],  
],  
  1. controller控制器中 代码:
<?php
$mail= Yii::$app->mailer->compose();   
$mail->setTo('***********@qq.com');  
$mail->setSubject("邮件测试");  
//$mail->setTextBody('zheshisha ');   //发布纯文字文本
$mail->setHtmlBody("<br>问我我我我我");    //发布可以带html标签的文本
if($mail->send())  
    echo "success";  
else  
    echo "failse";   
die(); 
?>

ok,这样就可以发送邮件了

如需加载模板 把$mail= Yii::$app->mailer->compose();
修改成 $mail= Yii::$app->mailer->compose('xiaoma',['aa'=>222]);
注:aa是想xiaoma.php里面传递的参数。
输入图像描述

邮件模板 xiaoma.php里面的代码 :

<?php  
use yii\helpers\Html;  
  
/* @var $this yii\web\View */  
/* @var $user common\models\User */  
  
$resetLink = Yii::$app->urlManager->createAbsoluteUrl(['site/reset-password', 'token' => $aa]);  
?>  
  
  
< a href="#" ><?php echo $resetLink ?></a>  

加载模板的邮件代码:

$mail= Yii::$app->mailer->compose('xiaoma',['aa'=>222]);  
       $mail->setTo('1401619705@qq.com');  
       $mail->setSubject("邮件测试");  
       $mail->setTextBody('zheshisha ');  
       if($mail->send())  
           echo "success";  
       else  
           echo "failse";   
     die();  

希望对你们有帮助!
更多yii2知识整理:http://happymc.iteye.com/

觉得很赞
  • 评论于 2015-03-26 14:27 举报

    你测试的username是不是不用加@163.com 我测试不用加可以发送,加上后就发送不成功

    2 条回复
    评论于 2015-03-27 15:41 回复

    你是收到邮件还是在网页上输出success呢?????

    评论于 2015-05-06 13:35 回复

    重新看下我的配置,我加了一句配置,改下就可以了

  • 评论于 2015-05-05 11:39 举报

    echo success 但是收不到邮件..
    届似为麻?

    3 条回复
    评论于 2015-05-06 13:27 回复

    'useFileTransport' =>false,
    加上这句就可以了 ,在配置里面

    评论于 2017-03-03 14:19 回复

    因为你是天津人

    评论于 2018-01-15 09:52 回复

    果然是,那是为何true不行呢?

    觉得很赞
  • 评论于 2015-05-06 23:23 举报

    echo "failse"; 看了半天没看懂

  • 评论于 2015-06-05 15:01 举报

    好了是我端口搞错了

    5 条回复
    评论于 2015-06-05 15:35 回复

    报什么错,你还是没弄好吧。。。。。。。

    评论于 2015-06-05 15:43 回复

    已经好了 谢谢啊 163和qq都ok了

    评论于 2015-07-08 10:58 回复

    163邮箱可以,QQ邮箱不行啊,QQ邮箱你咋调试的

    评论于 2015-07-08 12:29 回复

    好像在qq邮箱里要设置下

    评论于 2019-03-06 21:28 回复

    我返回success,可是却收不到

  • 评论于 2015-06-06 11:37 举报

    我想请教一下,邮件总是被判为垃圾邮件 应该怎么解决

    2 条回复
    评论于 2019-01-16 14:56 回复

    请问,我今天用到这个垃圾邮件的, 你解决了吗?

    评论于 2019-01-16 15:04 回复

    我解决了,我从163邮箱往qq邮箱发送
    原因:我标题或者内容里面带有“测试”字眼的,被定义为了垃圾邮件,换成其他的问题,就可以了

    觉得很赞
  • 评论于 2015-06-16 16:53 举报

    我咋发送不成功那 用的是126的 错误提示

    "name": "Exception",
        "message": "Expected response code 250 but got code \"553\", with message \"553 Mail from must equal authorized user\r\n\"",
        "code": 0,
        "type": "Swift_TransportException",
    
    8 条回复
    评论于 2015-06-16 17:01 回复

    可以了,谢了

    评论于 2015-07-08 17:54 回复

    我也是这个问题,你咋解决的?

    评论于 2015-07-10 12:52 回复

    配成 126 的服务 host:smtp.126.com
    每种邮箱的host 配置不一样的

    评论于 2015-09-20 13:51 回复

    用的网易163邮箱,也是553,有经验否?痛苦中。。。

    评论于 2015-12-06 16:57 回复

    你的553解决了么??为什么我也显示这个啊?求解答

    评论于 2016-10-20 19:25 回复

    我的也一样。。。

    评论于 2016-10-20 19:49 回复

    @打驴的的堂吉诃德 解决了,可能的问题是
    1.缺少提交的setFrom('用户名@163.com');
    2.配置文件中的From和username不一致问题;
    3.邮箱未开启stmp服务;
    然而我的问题是把一个地方的163写成136导致from地址和用户名不匹配出现553错误 - -

    评论于 2017-02-15 21:32 回复

    那个错误信息应该是163的SMTP返回的,163要求你的发送账号要一致,也就是说你再transport里面设置的username和setFrom()里面的设置值要一样。想想也好理解,163也不想让你用他们的平台乱发垃圾邮件。

  • 评论于 2015-07-08 10:51 举报

    输出success 但是邮件发送不成功。。。

    3 条回复
    评论于 2015-07-09 09:39 回复

    qq 邮箱你配成 smtp.qq.com

    评论于 2015-07-09 11:24 回复

    我要发送的邮箱可能是QQ邮箱也可能是163邮箱,在配置文件中如果改成了smtp.qq.com,会不会导致163发送不成功呢

    评论于 2015-07-10 12:49 回复

    你配成163,或者qq的,无论收件人的邮箱是什么都可以收到的,
    但是你要是指 你发送人的邮箱有可能是qq,或者163,你可以2 个都配置,用的 时候根据需求切换下就行,
    Yii::$app-> (mailer //根据这个切换 )

  • 评论于 2015-12-07 21:50 举报

    我使用的YII2.0基础版,按照以上配制后,出现如下错误,请问是什么原因?

    Expected response code 220 but got code "502", with message "502 Error: command not implemented
    
    2 条回复
    评论于 2016-07-25 19:32 回复

    兄弟,你这个502后来好了没?现在我也遇到这问题,在开发机(wamp)没有问题,一上生产机(linux)就出这个错。

    评论于 2017-10-24 21:20 回复

    我也是遇到报502的错误,后来改成

    'port' => '465/994',   
    'encryption' => 'ssl',
    

    可以到我博客里看下 http://blog.csdn.net/hzmumu/article/details/78334552

  • 评论于 2015-12-10 11:09 举报

    我是基于基础版 Yii 2.0 开发的,配的是163邮箱 配置我也完全检查过了 也开启了163的 SMTP 服务,密码是授权密码,但是还是
    显示:

    Exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.163.com [No connection could be made because the target machine actively refused it.
     #10061]' 
    
    1 条回复
    评论于 2017-08-25 15:38 回复

    解决了吗 我现在也是这样 本地正常 测试环境就报这个错误

  • 评论于 2015-12-10 11:10 举报

    求大神帮助

  • 评论于 2015-12-10 14:43 举报

    我的也终于解决了 也不知道为什么tls不能用,我的配置如下:

    'transport'=>[
        'class'=>'Swift_SmtpTransport',
        'host'=>'smtp.163.com',
        'username'=>"username@163.com",
        'password'=>"客户端授权密码",
        'port' => '994',
        'encryption' => 'ssl'
    ],
    

    然后 就可以发送邮件了

    2 条回复
    评论于 2016-07-26 08:56 回复

    太棒啦, 我也是这样

    评论于 2021-11-06 14:33 回复

    tls不能用 只能用 ssl

    , 觉得很赞
  • 评论于 2016-04-14 11:31 举报

    配置正确,useFileTransport正确,返回值正确,但是就是发不出去的小朋友看这里->yii2 swift mailer 发送邮件不成功的问题

    觉得很赞
  • 评论于 2016-07-19 19:03 举报

    楼主你教程,我看的不是很明白,你“1.controller控制器中 代码:”不知道这个代码是加在哪里?

  • 评论于 2016-07-21 22:30 举报

    lz我想问下邮件模板是建在哪个文件夹下面的呢,难道也是通过控制器调用视图文件吗?

  • 评论于 2016-09-08 10:35 举报

    阿里云企业邮箱怎么配置呀。QQ成功,阿里云的老是出错。
    出错提示:

    Failed to authenticate on SMTP server with username "noreply@hldb8.com‍" using 2 possible authenticators
    
    7 条回复
    评论于 2016-09-12 15:43 回复

    请问你的问题解决了嘛

    评论于 2016-09-21 09:17 回复

    没有得。你也出现吗?我现在这个都是放着没有做。

    评论于 2016-09-27 15:08 回复

    我解决了,还是配置的问题

    评论于 2016-10-09 11:23 回复

    请问是怎么解决的 我配置都一样老是提示这个错误

    评论于 2017-01-11 12:03 回复

    请问你怎么解决的?

    评论于 2018-03-01 15:46 回复

    我今天配置的时候也出现了这个问题,最终最因为配置的时候 password不是邮箱的密码,而是邮箱的授权码

    评论于 2018-03-07 13:15 回复
    觉得很赞
  • 评论于 2016-11-19 10:58 举报

    如何使用自己定义的邮件模板

  • 评论于 2016-12-16 18:52 举报

    token过期我不想让它抛出异常我想让它跳转到一个提示页面怎么写啊

  • 评论于 2016-12-28 10:17 举报

    模板放在什么位置?

  • 评论于 2017-04-27 14:18 举报

    password 那里不是密码 是邮件服务的授权码!!!

  • 评论于 2017-09-18 21:02 举报

    已经配置成功,如果有人发送失败,有可能是漏了:messageConfig 这个参数

您需要登录后才可以评论。登录 | 立即注册