jlrien-its / emails-queue
Symfony Easy Emails Queue Bundle
1.0.13
2018-01-27 09:07 UTC
Requires
- php: >=5.3.2
- doctrine/doctrine-bundle: *
- symfony/framework-bundle: >=3.0
- twig/twig: *
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