Zend framework2 Zend Framework 2未从mail.local.php加载配置
我正在尝试从mail.local.php获取配置smtp,我尝试了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 {
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;
}
// ...
}
可以使用以下命令呈现配置文件: