experiment with mailer and event driven
This commit is contained in:
parent
9ea0224880
commit
94a27e13c4
10 changed files with 361 additions and 2 deletions
|
|
@ -90,3 +90,7 @@ HUB_JO_KEY=hub_jo_count
|
||||||
# hub geofence
|
# hub geofence
|
||||||
HUB_GEOFENCE_ENABLE=set_to_true_or_false
|
HUB_GEOFENCE_ENABLE=set_to_true_or_false
|
||||||
HUB_FILTER_ENABLE=set_to_true_or_false
|
HUB_FILTER_ENABLE=set_to_true_or_false
|
||||||
|
|
||||||
|
###> symfony/mailer ###
|
||||||
|
# MAILER_DSN=null://null
|
||||||
|
###< symfony/mailer ###
|
||||||
|
|
|
||||||
12
compose.override.yaml
Normal file
12
compose.override.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
services:
|
||||||
|
###> symfony/mailer ###
|
||||||
|
mailer:
|
||||||
|
image: axllent/mailpit
|
||||||
|
ports:
|
||||||
|
- "1025"
|
||||||
|
- "8025"
|
||||||
|
environment:
|
||||||
|
MP_SMTP_AUTH_ACCEPT_ANY: 1
|
||||||
|
MP_SMTP_AUTH_ALLOW_INSECURE: 1
|
||||||
|
###< symfony/mailer ###
|
||||||
|
|
@ -50,6 +50,7 @@
|
||||||
"symfony/filesystem": "^4.0",
|
"symfony/filesystem": "^4.0",
|
||||||
"symfony/flex": "^1.0",
|
"symfony/flex": "^1.0",
|
||||||
"symfony/framework-bundle": "^4.0",
|
"symfony/framework-bundle": "^4.0",
|
||||||
|
"symfony/mailer": "^4.0",
|
||||||
"symfony/maker-bundle": "^1.0",
|
"symfony/maker-bundle": "^1.0",
|
||||||
"symfony/monolog-bundle": "^3.7",
|
"symfony/monolog-bundle": "^3.7",
|
||||||
"symfony/process": "^4.0",
|
"symfony/process": "^4.0",
|
||||||
|
|
|
||||||
237
composer.lock
generated
237
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "da765755121aaeb5c5a43aa74d7eeb76",
|
"content-hash": "3da24a255bf74ac8f6423361afa08210",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "composer/package-versions-deprecated",
|
"name": "composer/package-versions-deprecated",
|
||||||
|
|
@ -1827,6 +1827,73 @@
|
||||||
},
|
},
|
||||||
"time": "2023-07-19T09:04:27+00:00"
|
"time": "2023-07-19T09:04:27+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "egulias/email-validator",
|
||||||
|
"version": "3.2.6",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/egulias/EmailValidator.git",
|
||||||
|
"reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7",
|
||||||
|
"reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"doctrine/lexer": "^1.2|^2",
|
||||||
|
"php": ">=7.2",
|
||||||
|
"symfony/polyfill-intl-idn": "^1.15"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^8.5.8|^9.3.3",
|
||||||
|
"vimeo/psalm": "^4"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Egulias\\EmailValidator\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Eduardo Gulias Davis"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A library for validating emails against several RFCs",
|
||||||
|
"homepage": "https://github.com/egulias/EmailValidator",
|
||||||
|
"keywords": [
|
||||||
|
"email",
|
||||||
|
"emailvalidation",
|
||||||
|
"emailvalidator",
|
||||||
|
"validation",
|
||||||
|
"validator"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/egulias/EmailValidator/issues",
|
||||||
|
"source": "https://github.com/egulias/EmailValidator/tree/3.2.6"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/egulias",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2023-06-01T07:04:22+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "friendsofphp/proxy-manager-lts",
|
"name": "friendsofphp/proxy-manager-lts",
|
||||||
"version": "v1.0.5",
|
"version": "v1.0.5",
|
||||||
|
|
@ -4867,6 +4934,87 @@
|
||||||
],
|
],
|
||||||
"time": "2021-11-22T14:10:53+00:00"
|
"time": "2021-11-22T14:10:53+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/mailer",
|
||||||
|
"version": "v4.4.49",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/mailer.git",
|
||||||
|
"reference": "554b8c0dc2db9d74e760fd6b726f527364f03302"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/mailer/zipball/554b8c0dc2db9d74e760fd6b726f527364f03302",
|
||||||
|
"reference": "554b8c0dc2db9d74e760fd6b726f527364f03302",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"egulias/email-validator": "^2.1.10|^3",
|
||||||
|
"php": ">=7.1.3",
|
||||||
|
"psr/log": "^1|^2|^3",
|
||||||
|
"symfony/event-dispatcher": "^4.3",
|
||||||
|
"symfony/mime": "^4.4.21|^5.2.6",
|
||||||
|
"symfony/polyfill-php80": "^1.16",
|
||||||
|
"symfony/service-contracts": "^1.1|^2"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"symfony/http-kernel": "<4.4",
|
||||||
|
"symfony/sendgrid-mailer": "<4.4"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"symfony/amazon-mailer": "^4.4|^5.0",
|
||||||
|
"symfony/google-mailer": "^4.4|^5.0",
|
||||||
|
"symfony/http-client-contracts": "^1.1|^2",
|
||||||
|
"symfony/mailchimp-mailer": "^4.4|^5.0",
|
||||||
|
"symfony/mailgun-mailer": "^4.4|^5.0",
|
||||||
|
"symfony/messenger": "^4.4|^5.0",
|
||||||
|
"symfony/postmark-mailer": "^4.4|^5.0",
|
||||||
|
"symfony/sendgrid-mailer": "^4.4|^5.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Component\\Mailer\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Helps sending emails",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/symfony/mailer/tree/v4.4.49"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://symfony.com/sponsor",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/fabpot",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2022-11-04T06:30:35+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/maker-bundle",
|
"name": "symfony/maker-bundle",
|
||||||
"version": "v1.36.3",
|
"version": "v1.36.3",
|
||||||
|
|
@ -4955,6 +5103,91 @@
|
||||||
],
|
],
|
||||||
"time": "2021-11-22T18:44:03+00:00"
|
"time": "2021-11-22T18:44:03+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/mime",
|
||||||
|
"version": "v5.4.43",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/mime.git",
|
||||||
|
"reference": "a02711d6ce461edada8c0f8641aa536709b99b47"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/mime/zipball/a02711d6ce461edada8c0f8641aa536709b99b47",
|
||||||
|
"reference": "a02711d6ce461edada8c0f8641aa536709b99b47",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.2.5",
|
||||||
|
"symfony/deprecation-contracts": "^2.1|^3",
|
||||||
|
"symfony/polyfill-intl-idn": "^1.10",
|
||||||
|
"symfony/polyfill-mbstring": "^1.0",
|
||||||
|
"symfony/polyfill-php80": "^1.16"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"egulias/email-validator": "~3.0.0",
|
||||||
|
"phpdocumentor/reflection-docblock": "<3.2.2",
|
||||||
|
"phpdocumentor/type-resolver": "<1.4.0",
|
||||||
|
"symfony/mailer": "<4.4",
|
||||||
|
"symfony/serializer": "<5.4.35|>=6,<6.3.12|>=6.4,<6.4.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"egulias/email-validator": "^2.1.10|^3.1|^4",
|
||||||
|
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
|
||||||
|
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||||
|
"symfony/process": "^5.4|^6.4",
|
||||||
|
"symfony/property-access": "^4.4|^5.1|^6.0",
|
||||||
|
"symfony/property-info": "^4.4|^5.1|^6.0",
|
||||||
|
"symfony/serializer": "^5.4.35|~6.3.12|^6.4.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Component\\Mime\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Allows manipulating MIME messages",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"mime",
|
||||||
|
"mime-type"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/symfony/mime/tree/v5.4.43"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://symfony.com/sponsor",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/fabpot",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2024-08-13T10:38:38+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/monolog-bridge",
|
"name": "symfony/monolog-bridge",
|
||||||
"version": "v5.2.12",
|
"version": "v5.2.12",
|
||||||
|
|
@ -7971,6 +8204,6 @@
|
||||||
"php": "^7.1.3",
|
"php": "^7.1.3",
|
||||||
"ext-iconv": "*"
|
"ext-iconv": "*"
|
||||||
},
|
},
|
||||||
"platform-dev": [],
|
"platform-dev": {},
|
||||||
"plugin-api-version": "2.6.0"
|
"plugin-api-version": "2.6.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
config/packages/mailer.yaml
Normal file
3
config/packages/mailer.yaml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
framework:
|
||||||
|
mailer:
|
||||||
|
dsn: '%env(MAILER_DSN)%'
|
||||||
|
|
@ -33,6 +33,8 @@ services:
|
||||||
resource: '../src/*'
|
resource: '../src/*'
|
||||||
exclude: '../src/{Entity,Migrations,Tests,Menu,Access}'
|
exclude: '../src/{Entity,Migrations,Tests,Menu,Access}'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# controllers are imported separately to make sure services can be injected
|
# controllers are imported separately to make sure services can be injected
|
||||||
# as action arguments even if you don't extend any base controller class
|
# as action arguments even if you don't extend any base controller class
|
||||||
App\Controller\:
|
App\Controller\:
|
||||||
|
|
@ -170,6 +172,13 @@ services:
|
||||||
App\Service\GISManagerInterface: "@App\\Service\\GISManager\\OpenStreet"
|
App\Service\GISManagerInterface: "@App\\Service\\GISManager\\OpenStreet"
|
||||||
#App\Service\GISManagerInterface: "@App\\Service\\GISManager\\Google"
|
#App\Service\GISManagerInterface: "@App\\Service\\GISManager\\Google"
|
||||||
|
|
||||||
|
App\EventListener\ProductAddedListener:
|
||||||
|
arguments:
|
||||||
|
$mailer: '@mailer' # Autowire the mailer service
|
||||||
|
$entityManager: '@doctrine.orm.entity_manager' # Autowire the EntityManager
|
||||||
|
tags:
|
||||||
|
- { name: 'kernel.event_listener', event: 'App\Event\ProductAdded', method: 'onProductAdded' }
|
||||||
|
|
||||||
App\EventListener\JobOrderActiveCacheListener:
|
App\EventListener\JobOrderActiveCacheListener:
|
||||||
arguments:
|
arguments:
|
||||||
$jo_cache: "@App\\Service\\JobOrderCache"
|
$jo_cache: "@App\\Service\\JobOrderCache"
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Controller;
|
namespace App\Controller;
|
||||||
|
|
||||||
use App\Entity\Entity;
|
use App\Entity\Entity;
|
||||||
|
use App\Event\ProductAdded;
|
||||||
use Doctrine\ORM\Query;
|
use Doctrine\ORM\Query;
|
||||||
use Doctrine\ORM\QueryBuilder;
|
use Doctrine\ORM\QueryBuilder;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
|
@ -10,6 +11,8 @@ use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Symfony\Component\Validator\Validator\ValidatorInterface;
|
use Symfony\Component\Validator\Validator\ValidatorInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||||
|
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||||
|
|
||||||
|
|
||||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
||||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
|
||||||
|
|
@ -29,6 +32,13 @@ class EntityController extends Controller{
|
||||||
return $this->render('entity/list.html.twig');
|
return $this->render('entity/list.html.twig');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private $eventDispatcher;
|
||||||
|
|
||||||
|
public function __construct(EventDispatcherInterface $eventDispatcher)
|
||||||
|
{
|
||||||
|
$this->eventDispatcher = $eventDispatcher;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Menu(selected="entity_list")
|
* @Menu(selected="entity_list")
|
||||||
* @IsGranted("entity.add")
|
* @IsGranted("entity.add")
|
||||||
|
|
@ -78,10 +88,14 @@ class EntityController extends Controller{
|
||||||
$em->persist($test);
|
$em->persist($test);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
|
$this->eventDispatcher->dispatch(new ProductAdded($test));
|
||||||
|
|
||||||
// return successful response
|
// return successful response
|
||||||
return $this->json([
|
return $this->json([
|
||||||
'success' => 'Changes have been saved!'
|
'success' => 'Changes have been saved!'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -129,6 +143,8 @@ class EntityController extends Controller{
|
||||||
// validated! save the entity
|
// validated! save the entity
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
|
$this->eventDispatcher->dispatch(new ProductAdded($e));
|
||||||
|
|
||||||
// return successful response
|
// return successful response
|
||||||
return $this->json([
|
return $this->json([
|
||||||
'success' => 'Changes have been saved!'
|
'success' => 'Changes have been saved!'
|
||||||
|
|
|
||||||
21
src/Event/ProductAdded.php
Normal file
21
src/Event/ProductAdded.php
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
// src/Event/ProductAdded.php
|
||||||
|
namespace App\Event;
|
||||||
|
use Symfony\Contracts\EventDispatcher\Event;
|
||||||
|
|
||||||
|
use App\Entity\Entity;
|
||||||
|
|
||||||
|
class ProductAdded
|
||||||
|
{
|
||||||
|
private $product;
|
||||||
|
|
||||||
|
public function __construct(Entity $product)
|
||||||
|
{
|
||||||
|
$this->product = $product;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getProduct(): Entity
|
||||||
|
{
|
||||||
|
return $this->product;
|
||||||
|
}
|
||||||
|
}
|
||||||
48
src/EventListener/ProductAddedListener.php
Normal file
48
src/EventListener/ProductAddedListener.php
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\EventListener;
|
||||||
|
|
||||||
|
use App\Event\ProductAdded;
|
||||||
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
use Symfony\Component\Mailer\MailerInterface;
|
||||||
|
use Symfony\Component\Mime\Email;
|
||||||
|
|
||||||
|
class ProductAddedListener
|
||||||
|
{
|
||||||
|
private $mailer;
|
||||||
|
private $entityManager;
|
||||||
|
|
||||||
|
public function __construct(MailerInterface $mailer, EntityManagerInterface $entityManager)
|
||||||
|
{
|
||||||
|
$this->mailer = $mailer;
|
||||||
|
$this->entityManager = $entityManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onProductAdded(ProductAdded $event)
|
||||||
|
{
|
||||||
|
// Get all products in the database
|
||||||
|
$items = $this->entityManager->getRepository('App:Entity')->findAll();
|
||||||
|
|
||||||
|
// Convert to JSON format
|
||||||
|
$itemData = [];
|
||||||
|
foreach ($items as $item) {
|
||||||
|
$itemData[] = [
|
||||||
|
'id' => $item->getId(),
|
||||||
|
'item' => $item->getItem(),
|
||||||
|
'price' => $item->getPrice(),
|
||||||
|
'description' => $item->getDescription(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$jsonItems = json_encode($itemData, JSON_PRETTY_PRINT);
|
||||||
|
|
||||||
|
// Send an email with the JSON data
|
||||||
|
$email = (new Email())
|
||||||
|
->from('ansleytheking@gmail.coml')
|
||||||
|
->to('ansley.sze@foodgroup.ph')
|
||||||
|
->subject('New Product Added - Item List in JSON')
|
||||||
|
->text('A new product has been added. Here is the complete list of items in JSON format.')
|
||||||
|
->attach($jsonItems, 'items.json', 'application/json');
|
||||||
|
|
||||||
|
$this->mailer->send($email);
|
||||||
|
}
|
||||||
|
}
|
||||||
12
symfony.lock
12
symfony.lock
|
|
@ -242,6 +242,18 @@
|
||||||
"symfony/inflector": {
|
"symfony/inflector": {
|
||||||
"version": "v4.0.2"
|
"version": "v4.0.2"
|
||||||
},
|
},
|
||||||
|
"symfony/mailer": {
|
||||||
|
"version": "4.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "4.3",
|
||||||
|
"ref": "df66ee1f226c46f01e85c29c2f7acce0596ba35a"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/mailer.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
"symfony/maker-bundle": {
|
"symfony/maker-bundle": {
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue