Yii2 邮件发送 [ 2.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']
],
],
- 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/
小马哥
注册时间:2014-07-01
最后登录:2016-09-25
在线时长:40小时54分
最后登录:2016-09-25
在线时长:40小时54分
- 粉丝66
- 金钱615
- 威望60
- 积分1615
共 25 条评论
你测试的username是不是不用加@163.com 我测试不用加可以发送,加上后就发送不成功
你是收到邮件还是在网页上输出success呢?????
重新看下我的配置,我加了一句配置,改下就可以了
echo success 但是收不到邮件..
届似为麻?
'useFileTransport' =>false,
加上这句就可以了 ,在配置里面
因为你是天津人
@小马哥 果然是,那是为何true不行呢?
echo "failse"; 看了半天没看懂
好了是我端口搞错了
报什么错,你还是没弄好吧。。。。。。。
@小马哥 已经好了 谢谢啊 163和qq都ok了
@最初的梦想 163邮箱可以,QQ邮箱不行啊,QQ邮箱你咋调试的
@webclz 好像在qq邮箱里要设置下
我返回success,可是却收不到
我想请教一下,邮件总是被判为垃圾邮件 应该怎么解决
请问,我今天用到这个垃圾邮件的, 你解决了吗?
我解决了,我从163邮箱往qq邮箱发送
原因:我标题或者内容里面带有“测试”字眼的,被定义为了垃圾邮件,换成其他的问题,就可以了
@小马哥 我咋发送不成功那 用的是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",
@小马哥 可以了,谢了
@很菜哦 我也是这个问题,你咋解决的?
@lamp68小菜鸟 配成 126 的服务 host:smtp.126.com
每种邮箱的host 配置不一样的
@小马哥 用的网易163邮箱,也是553,有经验否?痛苦中。。。
@linqiu126 你的553解决了么??为什么我也显示这个啊?求解答
我的也一样。。。
@打驴的的堂吉诃德 解决了,可能的问题是
1.缺少提交的setFrom('用户名@163.com');
2.配置文件中的From和username不一致问题;
3.邮箱未开启stmp服务;
然而我的问题是把一个地方的163写成136导致from地址和用户名不匹配出现553错误 - -
@linqiu126 那个错误信息应该是163的SMTP返回的,163要求你的发送账号要一致,也就是说你再transport里面设置的username和setFrom()里面的设置值要一样。想想也好理解,163也不想让你用他们的平台乱发垃圾邮件。
输出success 但是邮件发送不成功。。。
qq 邮箱你配成 smtp.qq.com
@小马哥 我要发送的邮箱可能是QQ邮箱也可能是163邮箱,在配置文件中如果改成了smtp.qq.com,会不会导致163发送不成功呢
你配成163,或者qq的,无论收件人的邮箱是什么都可以收到的,
但是你要是指 你发送人的邮箱有可能是qq,或者163,你可以2 个都配置,用的 时候根据需求切换下就行,
Yii::$app-> (mailer //根据这个切换 )
我使用的YII2.0基础版,按照以上配制后,出现如下错误,请问是什么原因?
Expected response code 220 but got code "502", with message "502 Error: command not implemented
兄弟,你这个502后来好了没?现在我也遇到这问题,在开发机(wamp)没有问题,一上生产机(linux)就出这个错。
我也是遇到报502的错误,后来改成
'port' => '465/994', 'encryption' => 'ssl',
可以到我博客里看下 http://blog.csdn.net/hzmumu/article/details/78334552
我是基于基础版 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]'
@suzy 解决了吗 我现在也是这样 本地正常 测试环境就报这个错误
求大神帮助
我的也终于解决了 也不知道为什么tls不能用,我的配置如下:
'transport'=>[ 'class'=>'Swift_SmtpTransport', 'host'=>'smtp.163.com', 'username'=>"username@163.com", 'password'=>"客户端授权密码", 'port' => '994', 'encryption' => 'ssl' ],
然后 就可以发送邮件了
太棒啦, 我也是这样
@yuhezheng tls不能用 只能用 ssl
配置正确,useFileTransport正确,返回值正确,但是就是发不出去的小朋友看这里->yii2 swift mailer 发送邮件不成功的问题
楼主你教程,我看的不是很明白,你“1.controller控制器中 代码:”不知道这个代码是加在哪里?
lz我想问下邮件模板是建在哪个文件夹下面的呢,难道也是通过控制器调用视图文件吗?
阿里云企业邮箱怎么配置呀。QQ成功,阿里云的老是出错。
出错提示:
Failed to authenticate on SMTP server with username "noreply@hldb8.com" using 2 possible authenticators
请问你的问题解决了嘛
@蠕动的虫虫 没有得。你也出现吗?我现在这个都是放着没有做。
我解决了,还是配置的问题
@蠕动的虫虫 请问是怎么解决的 我配置都一样老是提示这个错误
请问你怎么解决的?
我今天配置的时候也出现了这个问题,最终最因为配置的时候 password不是邮箱的密码,而是邮箱的授权码
@蠕动的虫虫
如何使用自己定义的邮件模板
token过期我不想让它抛出异常我想让它跳转到一个提示页面怎么写啊
模板放在什么位置?
已经配置成功,如果有人发送失败,有可能是漏了:messageConfig 这个参数