fbeen/mailerbundle

这个组件是在每个标准Symfony框架中包含的Swift Mailer Bundle上的一个微小层。

安装: 82

依赖者: 2

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-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

  1. "fbeen/mailerbundle": "dev-master"添加到你的composer.json项目文件的require部分。
    "require": {
        ...
        "fbeen/mailerbundle": "dev-master"
    },
  1. 运行composer update

    $ composer update

  2. 将组件添加到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()
        );
    }
}