목차
$title ?>" >= $title ?>
php教程 php手册 yii2发送邮件教程 - 白狼栈

yii2发送邮件教程 - 白狼栈

May 20, 2016 am 11:39 AM

作者:白狼 出处:http://www.manks.top/article/yii2_swiftMailer本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

yii2中官方为了解决邮件发送问题,提供了swiftMailer扩展。

我们先来了解下什么是swiftMailer。

Swift是一个完全采用面向对象编码用于发送e-mail的PHP函数库。Swift不依赖于PHP的mail()函数,因为用它发送多封邮件时会占用较高的服务器资源。Swift通过直接连到SMTP服务器或MTA能够更快,更高效地发送邮件。

官方文档上做出了简单的使用说明。我们也来参考下。

1、利用composer进行安装

php composer.phar <span style="color: #0000ff;">require</span> --prefer-dist yiisoft/yii2-swiftmailer
로그인 후 복사

 

2、配置

<span style="color: #0000ff;">return</span><span style="color: #000000;"> [ 
    </span><span style="color: #008000;">//</span><span style="color: #008000;">.... </span>
    'components' =><span style="color: #000000;"> [ 
        </span>'mailer' =><span style="color: #000000;"> [ 
            </span>'class' => 'yii\swiftmailer\Mailer', 
            'viewPath' => '@common/mail', 
            <span style="color: #008000;">//</span><span style="color: #008000;"> send all mails to a file by default. You have to set 
            // 'useFileTransport' to false and configure a transport 
            // for the mailer to send real emails. </span>
            'useFileTransport' => <span style="color: #0000ff;">false</span>, 
            'transport' =><span style="color: #000000;"> [ 
                </span>'class' => 'Swift_SmtpTransport', 
                'host' => 'smtp.163.com', 
                'username' => '***@163.com', 
                'password' => '******', 
                'port' => '25', 
                'encryption' => 'tls',<span style="color: #000000;"> 
            ]</span>, 
            'messageConfig'=><span style="color: #000000;">[ 
                </span>'charset'=>'UTF-8', 
                'from'=>['***@163.com'=>'白狼栈'<span style="color: #000000;">] 
            ]</span>,<span style="color: #000000;"> 
        ]</span>,<span style="color: #000000;"> 
    ]</span>,<span style="color: #000000;"> 
];</span>
로그인 후 복사

 

3、简单使用

<span style="color: #800080;">$mail</span>= Yii::<span style="color: #800080;">$app</span>->mailer-><span style="color: #000000;">compose(); 
</span><span style="color: #800080;">$mail</span>->setTo('***@qq.com'); <span style="color: #008000;">//</span><span style="color: #008000;">要发送给那个人的邮箱 </span>
<span style="color: #800080;">$mail</span>->setSubject("邮件主题"); <span style="color: #008000;">//</span><span style="color: #008000;">邮件主题 </span>
<span style="color: #800080;">$mail</span>->setTextBody('测试text'); <span style="color: #008000;">//</span><span style="color: #008000;">发布纯文字文本 </span>
<span style="color: #800080;">$mail</span>->setHtmlBody("测试html text"); <span style="color: #008000;">//</span><span style="color: #008000;">发送的消息内容 </span>
<span style="color: #008080;">var_dump</span>(<span style="color: #800080;">$mail</span>->send()); 
로그인 후 복사

 

测试发现$mail->setHtmlBody()发送邮件可以发送成功。但是$mail->setTextBody()不知道为啥试了10来次都没收到,回头我再试试。

4、我们看看怎么批量发送邮件

<span style="color: #800080;">$users</span> = ['***@qq.com', '******@qq.com'<span style="color: #000000;">]; 
</span><span style="color: #800080;">$messages</span> =<span style="color: #000000;"> []; 
</span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">$users</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$user</span><span style="color: #000000;">) {
    </span><span style="color: #800080;">$messages</span>[] = Yii::<span style="color: #800080;">$app</span>->mailer-><span style="color: #000000;">compose() 
            </span>->setTo(<span style="color: #800080;">$user</span><span style="color: #000000;">) 
            </span>->setSubject('测试主题'<span style="color: #000000;">) 
            </span>->setHtmlBody('测试内容'<span style="color: #000000;">); 
} 
Yii</span>::<span style="color: #800080;">$app</span>->mailer->sendMultiple(<span style="color: #800080;">$messages</span>);
로그인 후 복사

 

5、定义邮件模版,这样我们就可以更方便的构建我们的邮件模板了

在步骤2中我们定义了viewPath指向common\mail。因此我们可以在该目录下创建新的模版文件test.php,内容自己随便定义就好。

然后看看程序中怎么实现发送邮件

<span style="color: #800080;">$res</span> = Yii::<span style="color: #800080;">$app</span>->mailer->compose('test'<span style="color: #000000;">) 
    </span>->setTo('*******@qq.com'<span style="color: #000000;">) 
    </span>->setSubject('Message subject'<span style="color: #000000;">) 
    </span>-><span style="color: #000000;">send(); 
</span><span style="color: #008080;">var_dump</span>(<span style="color: #800080;">$res</span>); <span style="color: #008000;">//</span><span style="color: #008000;">true</span>
로그인 후 복사

 

我们只需要在compose的第一个参数上填写该模版的文件名即可。

注:我这里是偶尔发到qq的垃圾箱去了,大家测试的时候也记得去查看。

实际上比如找回密码等内容时,内容基本上都是动态不定的,也就是说我们怎么实现传参呢?

这个也是很简单,只需要指定compose的第二个参数即可

<span style="color: #008000;">//</span><span style="color: #008000;">controller代码 </span>
Yii::<span style="color: #800080;">$app</span>->mailer->compose('test', ['title' => '测试'<span style="color: #000000;">]) 
    </span>->setTo('422744746@qq.com'<span style="color: #000000;">) 
    </span>->setSubject('Message subject'<span style="color: #000000;">) 
    </span>-><span style="color: #000000;">send(); 
</span><span style="color: #008000;">//</span><span style="color: #008000;">test.php </span>
<h2 id="span-style-color-title-span-gt">= <span style="color: #800080;">$title</span> ?></h2> 
로그인 후 복사

 

6、你也可以为你的邮件定制layout,布局文件这里放到common\mail\layouts目录下面即可。

现在我们有一个布局文件html.php,我们看看怎么利用布局文件发邮件。

Yii::<span style="color: #800080;">$app</span>->mailer->compose('test',<span style="color: #000000;"> [ 
    </span>'html' => 'html', <span style="color: #008000;">//</span><span style="color: #008000;">key固定,value是模版文件名 </span>
    'title' => 333<span style="color: #000000;"> 
]) </span>->setTo('422744746@qq.com'<span style="color: #000000;">) 
   </span>->setSubject('Message subject'<span style="color: #000000;">) 
   </span>->send();
로그인 후 복사

 

7、我们看看如何发送带附件的邮件

我们举一个发送邮件并以附件的形式带上一张图片和一个txt文本内容试试看

继续阅读

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)