fbeen / mailerbundle
这个组件是在每个标准Symfony框架中包含的Swift Mailer Bundle上的一个微小层。
v1.0.3
2017-09-23 11:32 UTC
This package is not auto-updated.
Last update: 2024-09-14 19:26:00 UTC
README
这个组件是在每个标准Symfony框架中包含的Swift Mailer Bundle上的一个微小层。
特性包括
- Mailer辅助类
- 更少的配置
- 标准Twig布局,可选徽标
- 方便配置使用的邮箱地址
- 渲染示例视图的方法
安装
使用composer
- 将
"fbeen/mailerbundle": "dev-master"
添加到你的composer.json项目文件的require部分。
"require": {
...
"fbeen/mailerbundle": "dev-master"
},
-
运行composer update
$ composer update
-
将组件添加到app/AppKernel.php
$bundles = array(
...
new Fbeen\MailerBundle\FbeenMailerBundle(),
);
配置
查看这个配置示例
fbeen_mailer:
company_name: "php-programmer.nl"
company_logo: "https://www.php-programmer.nl/images/logo.png"
mailaddresses:
noreply:
email: no-reply@example.com # required
name: example.com # optional
general:
email: info@example.com # required
name: example.com # optional
admins:
- {email: 'admin1@gmail.com', name: 'Admin1'} # at least one required, name is optional
- {email: 'admin2@gmail.com'}
如果company_logo是一个完整的URL,则将直接使用。否则,邮件器类将把它视为一个资产。
noreply: 这是接收者在他的电子邮件中看到的信息。
general: 这是默认设置的回复。如果接收者回复,你将在这个邮箱地址上收到他的邮件。
admins: 这是默认设置的接收者的收件人。
使用名称会降低垃圾邮件评分
如何使用
这可以通过几个示例轻松展示
要给管理员发送电子邮件,你不需要使用setTo()
/*
* send an email to the admins
*/
$this->get('fbeen_mailer')
->setSubject('New contact request!')
->setTemplate('email/contact_request.html.twig')
->setData(array(
'name' => $name,
'email' => $email,
'message' => $message,
))
->sendMail()
;
要给用户发送电子邮件,你必须使用setTo()
/*
* send an email to the user
*/
$this->get('fbeen_mailer')
->setTo($user->getEmail())
->setSubject('Welcome on board!')
->setTemplate('email/welcome.html.twig')
->setData(array(
'user' => $user,
))
->sendMail()
;
邮件器类将在调用twig之前向数组中添加额外的数据
- companyName (配置中的公司名称)
- companyLogo (所选图像的路径或完整URL)
- urlHomepage (网站"/"路径的完整URL)
- subject (由setSubject()设置的标题)
所以,例如2,你可以有一对如下模板。
layout.html.twig
<table style="font-family: Arial, Helvetica, sans-serif;">
<tr>
<td><a href="{{ urlHomepage }}">{% if companyLogo %}<img src="{{ companyLogo }}">{% else %}{{ companyName }}{% endif %}</a></td>
</tr>
<tr>
<td>
{% block body %}{% endblock %}
</td>
</tr>
<tr>
<td style="font-size: 12px;">
Sincerely,<br>
<br>
{{ companyName }}
</td>
</tr>
</table>
welcome.html.twig
{% extends 'email/layout.html.twig' %}
{% block body %}
<table>
<tr>
<td><h1>{{ subject }}</h1></td>
</tr>
<tr>
<td>Hi {{ user.name }}, Welcome to our community.</td>
</tr>
</table>
{% endblock %}
以电子邮件示例内容的格式渲染页面
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller
{
public function emailAction()
{
$user = new User();
$user->setName('Frank Beentjes');
$user->setEmail('frank@example.org');
return new Response(
$this->get('fbeen_mailer')
->setSubject('Welcome on board!')
->setTemplate('email/welcome.html.twig')
->setTemplate('email/'.$blockname.'.html.twig')
->setData(array(
'user' => $user
))
->renderView()
);
}
}