visual-craft / email-types-bundle
用于结构化电子邮件编辑的Symfony扩展包
v0.3.1
2024-06-17 08:41 UTC
Requires
- php: >=7.4
- symfony/framework-bundle: ^4.4|^5.0|^6.0|^7.0
- symfony/mailer: ^4.4|^5.0|^6.0|^7.0
- symfony/options-resolver: ^4.4|^5.0|^6.0|^7.0
- symfony/translation: ^4.4|^5.0|^6.0|^7.0
- symfony/twig-bridge: ^4.4|^5.0|^6.0|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: v3.53.0
- symfony/phpunit-bridge: ^4.4|^5.0|^6.0|^7.0
- symfony/twig-bundle: ^4.4|^5.0|^6.0|^7.0
- visual-craft/php-cs-fixer-config: ^0.4
This package is auto-updated.
Last update: 2024-09-17 09:06:12 UTC
README
用于结构化电子邮件编辑的Symfony扩展包。
安装和配置
步骤 1:安装扩展包
composer require visual-craft/email-types-bundle
步骤 2:启用扩展包
如果您不使用Flex,您还必须在app/AppKernel.php中添加以下行来启用扩展包
<?php // config/bundles.php return [ // ... VisualCraft\EmailTypesBundle\VisualCraftEmailTypesBundle::class => ['all' => true], // ... ];
配置扩展包(可选)
# config/packages/email_types.yaml visual_craft_email_types: # used in case of email 'from' is not explicitly set (default null) default_email_from: 'Name <contact@example.com>'
使用方法
创建电子邮件类型类
<?php namespace App\EmailType; use App\Entity\User; use Symfony\Bridge\Twig\Mime\TemplatedEmail; use Symfony\Component\OptionsResolver\OptionsResolver; use VisualCraft\EmailTypesBundle\EmailTypeInterface; class UserActivationType implements EmailTypeInterface { public function configureOptions(OptionsResolver $optionsResolver): void { $optionsResolver ->setRequired(['user']) ->setAllowedTypes('user', User::class) ; } public function configureEmail(TemplatedEmail $email, array $options): void { $user = $options['user']; $email ->to($user->getEmail()) ->from('admin@example.com') // subject is automatically translated // translation parameters are populated from context (scalar values only) ->subject('Hello %fullName%') ->htmlTemplate('email/activation.html.twig') ->context([ 'user' => $user, // used as subject translation parameter %fullName% 'fullName' => $user->getFullName(), ]) ; } }
将您的电子邮件类型类注册为服务
# config/services.yaml services: Email\Type\UserActivationType: ~
发送电子邮件
<?php namespace App\Controller; use App\Entity\User; use App\EmailType\UserActivationType; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use VisualCraft\EmailTypesBundle\Mailer; class ActivationController extends AbstractController { private Mailer $mailer; public function __construct(Mailer $mailer) { $this->mailer = $mailer; } public function __invoke(Request $request): Response { // ...code $this->mailer->send(UserActivationType::class, [ 'user' => $this->getUser(), ]); // ...code } }
测试
$ vendor/bin/simple-phpunit install $ vendor/bin/simple-phpunit
其他工具
$ composer install $ vendor/bin/php-cs-fixer fix $ composer lint
致谢
由Visual Craft开发。
许可协议
此扩展包遵循MIT许可协议。完整的许可协议请见LICENSE文件。