Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 扩展swiftmailer使用smtp服务器_Php_Oop_Swiftmailer - Fatal编程技术网

Php 扩展swiftmailer使用smtp服务器

Php 扩展swiftmailer使用smtp服务器,php,oop,swiftmailer,Php,Oop,Swiftmailer,我有一个带有一些smtp设置的配置数组。 我正在寻找一种方法来扩展Swiftmailer以自动填写这些详细信息 我找不到任何关于扩展swiftmailer的信息。我确实找到了一些关于插件的信息,但是这些swiftmailer现有的插件不会告诉我任何事情 // automatic use smtp.domain.com, username, password ?? $transport = Swift_MailTransport::newInstance(); $mailer = Swift_Ma

我有一个带有一些smtp设置的配置数组。 我正在寻找一种方法来扩展Swiftmailer以自动填写这些详细信息

我找不到任何关于扩展swiftmailer的信息。我确实找到了一些关于插件的信息,但是这些swiftmailer现有的插件不会告诉我任何事情

// automatic use smtp.domain.com, username, password ??
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance('Test')
  ->setFrom(array('mail@domain.com' => 'from user'))
  ->setTo(array('mail@domain.com' => 'from user'))
  ->setBody('Body')
  ;

$result = $mailer->send($message);

有人能告诉我怎么做吗?

您可以像这样将所有内容包装到服务类中:

class MyMailerAssistant
{
    /**
     * Service method to fastly send a message
     * @param $subject
     * @param $body
     */
    public static function sendMessage($subject, $body)
    {
        // automatic use smtp.domain.com, username, password ??
        $transport = Swift_MailTransport::newInstance();
        $mailer = Swift_Mailer::newInstance($transport);

        $message = Swift_Message::newInstance('Test')
                ->setSubject($subject)
                ->setFrom(array('mail@domain.com' => 'from user'))
                ->setTo(array('mail@domain.com' => 'from user'))
                ->setBody($body);

        $result = $mailer->send($message);
    }
}
并简单地这样称呼它:

MyMailerAssistant::sendMessage('Hello', 'This is the email content');

无论如何,我强烈反对您将配置插入到方法中,我总是从模块化外部配置文件加载它。

我不明白您为什么要扩展SwiftMailer以满足该要求。创建一个处理准备工作的类要容易得多

class SwiftMailerPreparator {
    private $mailer;

    public __construct(Swift_Mailer $mailer) {
        $this->mailer = $mailer;
    }

    public function prepare(array $settings) {
        // do your thing here
    }
}
此外,由于SwiftMailer是开源的,您只需查看代码即可了解其工作原理