germania-kg / mailer

邮件和SwiftMailer服务的Pimple服务提供者。

1.3.2 2022-05-30 13:47 UTC

README

邮件和SwiftMailer服务的Pimple服务提供者。

Packagist PHP version Build Status Scrutinizer Code Quality Code Coverage Build Status

安装

$ composer require germania-kg/mailer

注册

<?php
use Germania\Mailer\MailerServiceProvider;

$dic = new \Pimple\Container;
$dic->register( new MailerServiceProvider );

配置

配置是一个数组,包含典型的邮件配置字段,每个字段都是空的。

您可以通过以下方式从Pimple容器中检索配置

$dic->register( new MailerServiceProvider );
$config = $dic['Mailer.Config'];
print_r($config);
(
    [smtp] =>
    [port] =>
    [ssl] =>
    [user] => 
    [pass] =>
    [from_name] =>
    [from_mail] =>
    [to] =>
    [subject] =>
)

在实例化时配置

将自定义配置传递给MailerServiceProvider构造函数。像通常一样将其注册到Pimple容器中。

$mailer_service_provider = new MailerServiceProvider([
  'from_name' => 'John Doe',
  'from_mail' => 'me@test.com'
]);

$dic->register( $mailer_service_provider );
$config = $dic['Mailer.Config'];
print_r($config);
(
    [smtp] =>
    [port] =>
    [ssl] => 
    [user] => 
    [pass] =>
    [from_name] => John Doe
    [from_mail] => me@test.com
    [to] =>
    [subject] =>
)

在运行时配置

两种方式

  • 在将ServiceProvider注册到Pimple之后(即扩展Mailer.Config服务定义)
  • 在注册之前,在Mailer.Config服务定义中预定义配置

在注册到Pimple之后

$dic->register( new MailerServiceProvider() );
$dic->extend('Mailer.Config', function($default_config, $dic) {
  $new_config = array_merge($default_config, [
    'from_name' => 'John Doe',
    'from_mail' => 'me@test.com'
  ]);
  return $new_config;
});

在注册到Pimple之前

$dic['Mailer.Config'] = function($dic) {
  return array(
    'from_name' => 'John Doe',
    'from_mail' => 'me@test.com'
  );
};

$dic->register( new MailerServiceProvider() );

用法

设置MailerServiceProvider

$dic->register( new MailerServiceProvider([
    'from_name' => 'John Doe',
    'from_mail' => 'me@test.com',
    'to'        => 'admin@test.com',
  	'subject'   => 'Default subject'
]));

SwiftMailerCallable

<?php
use Germania\SwiftMailerCallable\SwiftMailerCallable;

// Grab the Mailer callable
$mailer = $dic[SwiftMailerCallable::class];
// DEPRECATED service name: 
$mailer = $dic['Mailer.Callable'];

// Send with subject and mail body
$result = $mailer("The subject", "<p>The mailtext</p>");

# Override receipient address
# previosuly set in Mailer.Config
$result = $mailer("The subject", "<p>The mailtext</p>", "admin@test.com");

SwiftMailer

https://swiftmailer.symfony.com/docs/introduction.html

<?php
use Germania\Mailer\SwiftMessageFactory;
use \Swift_Mailer;

// Grab Swiftmailer
$swift_mailer = $dic[Swift_Mailer::class];  

// Setup message
$message_factory = $dic[SwiftMessageFactory::class];
$message = $message_factory->createMessage();
$message->setBody("This is the mail body");

// This optional as we set it with Configuration
$message->setSubject( "Custom subject line" );

// Send message
$result = $swift_mailer->send( $message ));

开发

$ git clone https://github.com/GermaniaKG/Mailer.git
$ cd Mailer
$ composer install

单元测试

要么复制phpunit.xml.distphpunit.xml并根据自己的需求进行修改,要么保持原样。运行PhpUnit测试或composer脚本,如下所示

$ composer test
# or
$ vendor/bin/phpunit