Zend framework2 Zend Framework 2未从mail.local.php加载配置

Zend framework2 Zend Framework 2未从mail.local.php加载配置,zend-framework2,Zend Framework2,我正在尝试从mail.local.php获取配置smtp,我尝试了ServiceLoadergetServiceLoader方法,但找不到在助手类中获取配置的方法: 获取自动加载\mail.local.php的最佳方式是什么 namespace Helpers; use Zend\Mail; use Zend\Mail\Transport\Smtp as SmtpTransport; use Zend\Mail\Transport\SmtpOptions; class SendEmail {

我正在尝试从mail.local.php获取配置smtp,我尝试了
ServiceLoader
getServiceLoader
方法,但找不到在助手类中获取配置的方法:

获取
自动加载\mail.local.php
的最佳方式是什么

namespace Helpers;

use Zend\Mail;
use Zend\Mail\Transport\Smtp as SmtpTransport;
use Zend\Mail\Transport\SmtpOptions;

class SendEmail
{
    public static function email($to = '', $recipientName = '', $template = '')
    {
        $transport = new SmtpTransport();
//        $options = new SmtpOptions(array(
//            'name' => 'smtp.mailtrap.io',
//            'host' => 'smtp.mailtrap.io',
//            'port' => 2525,
//            'connection_class' => 'crammd5',
//            'connection_config' => array(
//                'username' => 'f11f5a55fdfbf5',
//                'password' => '7780e1e7ee1cc5',
//            ),
//        ));

        $mail = new Mail\Message();
        $html = new \Zend\Mime\Part($template);
        $html->type = 'text/html';
        $body = new \Zend\Mime\Message;
        $body->setParts(array($html));
        $mail->setBody($body);
        $mail->setFrom('admin@fonedoctors.com', 'Admin FoneDoctors');
        $mail->addTo($to, $recipientName);
        $mail->setSubject('Unpaid Invoices');

        $transport->setOptions($options);
        $transport->send($mail);
    }
}

如果您的配置文件位于
/autoload/mail.local.php
中,那么作为ZF引导过程的一部分,配置已经合并在一起。然后,可以使用
$serviceManager->get('config')从服务管理器获取合并的模块配置

要将此配置注入
sendmail
类,您最好创建一个新工厂

class SendEmailFactory implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        $config =  $container->get('config'); // all merged module configuration

        $emailOptions = isset($config['my_email_config_key'])
            ? $config['my_email_config_key'] 
            : [];

        return new SendEmail($emailOptions);
    }
}
您还需要向服务管理器注册服务:

'service_manager' => [
    'factories' => [
        SendEmail::class => SendEmailFactory::class,
    ],    
],
并更新
sendmail
类以通过构造函数接受选项

class SendEmail
{
    private $options;

    public function __construct(array $options)
    {
        $this->options = $options;
    }
    // ...
}

可以使用以下命令呈现配置文件: