许多开发人员对旧的Symfony 1.4框架不了解的是, Swift Mailer和它的后继者一样, 已经包含在项目中, 甚至自动将其自身注入到项目的所有控制器中。但是, 当你在任务中工作时(控制台命令), 尽管可以使用其他工具(例如Doctrine), 但SwiftMailer不能直接使用。
为了使Swift Mailer可以从Task进行访问, 你将需要包含swift_required.php文件, 该文件包含使用它所需的所有必需类。你可以将它包含在require_once中, 如下所示:
require_once dirname(__FILE__) . '/../../symfony-1.4.27/lib/vendor/swiftmailer/swift_required.php';
将其包含在任务中之后, 你将能够使用Swiftmailer照常发送电子邮件。如果你不知道如何操作, 我们将向你展示一个功能命令的完整示例, 该命令基本上将电子邮件发送给所需的收件人。
创建发送电子邮件的任务
在project / lib / task目录中创建SendEmailTask.class.php文件, 并添加以下代码作为文件内容:
<?php
// 1. Include SwiftMailer with the swift_required.php file, otherwise the namespaces of SwiftMailer won't be available.
// Symfony 1.4 includes Swift Mailer inside the Symfony code.
require_once dirname(__FILE__) . '/../../symfony-1.4.27/lib/vendor/swiftmailer/swift_required.php';
/**
* Command to send a test email from Symfony 1.4 using Swift Mailer.
*
* You can run the command as:
*
* 'php symfony ourcodeworld:send-email'
*
* @author Carlos Delgado <dev@ourcodeworld.com>
*/
class SendEmailTask extends sfBaseTask {
public function configure()
{
$this->namespace = 'ourcodeworld';
$this->name = 'send-email';
$this->briefDescription = 'Sends a test email';
$this->detailedDescription = <<<EOF
Sends an email with SwiftMailer (integrated version of Symfony 1.4)
EOF;
}
public function execute($arguments = array(), $options = array()) {
$email = "cheese@cheese.ch";
$password = "ch33s3";
// 2. Prepare transport, change the smtp server adress and configuration
$transport = \Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
->setUsername($email)
->setPassword($password);
// 3. Create the mailer
$mailer = \Swift_Mailer::newInstance($transport);
// 4. Create the message instance
$message = \Swift_Message::newInstance("Test Email")
->setFrom(array($email => 'Subject Email'))
->setTo(array(
"targetemail@domain.com" => "targetemail@domain.com"
))
->setBody("This is the content of my Email !", 'text/plain');
// 5. Send email !
$mailer->send($message);
}
}
保存文件后, 你可以从终端使用php symfony ourcodeworld:send-mail运行命令。
编码愉快!
评论前必须登录!
注册