有没有人在Symfony中使用Swiftmailer设置假脱机电子邮件的条件? 我希望可以选择立即发送电子邮件或将其换成文件,具体取决于我正在运行的功能。
我在自己的Bundle中提取了电子邮件服务,并在需要时调用其他Bundle中的sendEmail()函数。但是对于一些Bundles / Functions,我希望立即发送电子邮件给其他人,假脱机是好的。我想在sendEmail()函数中使用 spool 参数,所以如果在调用函数时参数设置为true,则电子邮件会被假脱机,如果它被设置为false,它们会得到立即发送。
或许一个简单的if条件就足够了?]
任何想法,提示,经验等都会很棒!
更新
在我的config.yml中:
# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool:
type: file
path: /srv/http/test/spool
答案 0 :(得分:1)
通过在参数中指定spool
选项,Swiftmailers将使用Swift_Transport_SpoolTransport
的实例,它将通过向队列发送消息来管理假脱机,而不是直接将它们发送到世界。通过Transport
对象,您可以访问Spool
实例(Swift_MemorySpool
或Swift_FileSpool
)并强制Swiftmailer刷新队列。
// custom function to send an email
// inject \Swift_Mailer like you normally would
public function sendMessage($name, \Swift_Mailer $mailer, $bypassSpool = false)
{
$message = new \Swift_Message('Hello Email')
->setFrom(/* from */)
->setTo(/* to */)
->setBody(/* render view */);
$mailer->send($message); // pushes the message to the spool queue
if($bypassSpool) {
$spool = $mailer->getTransport->getSpool()
$spool->flushQueue(new Swift_SmtpTransport(
/* Get host, username and password from config */
));
}
}