个性化阅读
专注于IT技术分析

如何在Symfony 1.4中使用SwiftMailer从任务(控制台命令)发送电子邮件

许多开发人员对旧的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运行命令。

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在Symfony 1.4中使用SwiftMailer从任务(控制台命令)发送电子邮件

评论 抢沙发

评论前必须登录!