jlrien-its/emails-queue

Symfony Easy Emails Queue Bundle

安装: 35

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 1

类型:symfony-bundle

1.0.13 2018-01-27 09:07 UTC

This package is not auto-updated.

Last update: 2024-09-17 04:17:04 UTC


README

emails-queue

特性

您可以使用此服务将您的邮件发送到队列系统。所有邮件都将存储在您的数据库中以保存日志。您可以直接发送邮件或使用cron通过队列发送邮件。在调用处理队列操作时,定义您想要每次发送的邮件数量。

安装

Email-queue需要twig/twig和doctrine/doctrine-bundle

使用composer安装

$ composer require julien-its/emails-queue

说明

安装后,在您的AppKernel.php文件中注册EmailsQueueBundle:

app/AppKernel.php

new JulienIts\Bundle\EmailsQueueBundle\EmailsQueueBundle()

修改您的config.yml并添加以下导入行

app/Resources/config/config.yml

 resource: "@EmailsQueueBundle/Resources/config/services.yml"

使用doctrine在数据库中生成新表

$ php bin/console doctrine:schema:update --force

创建一个新的邮件服务,其中将定义所有您的邮件方法。我们只添加了一个示例,即联系表单邮件

<?php
namespace AppBundle\Services;
use \JulienIts\Bundle\EmailsQueueBundle\Entity\EmailQueue;
class EmailService
{
	const DEFAULT_SUBJECT = "My App";
    protected $jitsEmailService;

    public function __construct(\JulienIts\Bundle\EmailsQueueBundle\Services\EmailService $jitsEmailService)
    {
        $this->jitsEmailService = $jitsEmailService;
    }

	public function contact($message)
	{
        $config = array(
            'template' => 'EmailsQueueBundle:mail:contact.html.twig',
            'templateVars' => array('message' => $message),
            'contextName' => 'contact',
            'priority' => EmailQueue::HIGH_PRIORITY,
            'subject' => self::DEFAULT_SUBJECT.' : Contact',
            'emailTo' => 'toemail@to.com',
            'mailsCc' => 'contact@julien-gustin.be;email2@email.com'
        );
		$this->jitsEmailService->createNewAndProcess($config);
	}
}

注意,您可以将contact.html和email布局复制到您自己的appBundle中以自定义它们

创建emailQueue时的两种可能性

$this->jitsEmailService->createNew($config);
$this->jitsEmailService->createNewAndProcess($config);

createNewAndProcess将直接处理邮件队列并将其发送到您的邮件服务。

在services.yml中注册您的服务 :

app/Resources/config/services.yml

services:
    services.email:
        class: AppBundle\Services\EmailService
        arguments:
            $jitsEmailService: "@jits.services.email"

发送邮件

要发送邮件,请在一个控制器中调用您的服务

$message = array(
    'name' => 'Julien Gustin',
    'phone' => '+320484010203',
    'message' => 'gustin.julien@gmail.com'
);
$this->get('services.email')->contact($message);

定义cron操作

如果您要分批发送邮件,请将路由注册在您的routing.yml文件中

app/Resources/config/routing.yml

emailsQueue:
    resource: '@EmailsQueueBundle/Controller/'
    type: annotation

URL将如下所示:/emails-queue/cron/process-mail-queue