mirror of
https://github.com/wallabag/wallabag.git
synced 2025-01-09 16:35:27 +00:00
Replace SwiftMailer by Symfony Mailer
This commit is contained in:
parent
9c16dd7bd1
commit
32661f380c
13 changed files with 148 additions and 334 deletions
|
@ -13,7 +13,6 @@ class AppKernel extends Kernel
|
||||||
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
|
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
|
||||||
new Symfony\Bundle\TwigBundle\TwigBundle(),
|
new Symfony\Bundle\TwigBundle\TwigBundle(),
|
||||||
new Symfony\Bundle\MonologBundle\MonologBundle(),
|
new Symfony\Bundle\MonologBundle\MonologBundle(),
|
||||||
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
|
|
||||||
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
|
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
|
||||||
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
|
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
|
||||||
new FOS\RestBundle\FOSRestBundle(),
|
new FOS\RestBundle\FOSRestBundle(),
|
||||||
|
|
|
@ -34,6 +34,8 @@ framework:
|
||||||
fragments: ~
|
fragments: ~
|
||||||
http_method_override: true
|
http_method_override: true
|
||||||
assets: ~
|
assets: ~
|
||||||
|
mailer:
|
||||||
|
dsn: "%mailer_dsn%"
|
||||||
|
|
||||||
# Twig Configuration
|
# Twig Configuration
|
||||||
twig:
|
twig:
|
||||||
|
@ -78,18 +80,6 @@ doctrine_migrations:
|
||||||
table_name: migration_versions
|
table_name: migration_versions
|
||||||
name: Application Migrations
|
name: Application Migrations
|
||||||
|
|
||||||
# Swiftmailer Configuration
|
|
||||||
swiftmailer:
|
|
||||||
transport: "%mailer_transport%"
|
|
||||||
username: "%mailer_user%"
|
|
||||||
password: "%mailer_password%"
|
|
||||||
host: "%mailer_host%"
|
|
||||||
port: "%mailer_port%"
|
|
||||||
encryption: "%mailer_encryption%"
|
|
||||||
auth_mode: "%mailer_auth_mode%"
|
|
||||||
spool:
|
|
||||||
type: memory
|
|
||||||
|
|
||||||
fos_rest:
|
fos_rest:
|
||||||
param_fetcher_listener: true
|
param_fetcher_listener: true
|
||||||
body_listener: true
|
body_listener: true
|
||||||
|
@ -183,7 +173,7 @@ fos_user:
|
||||||
address: "%from_email%"
|
address: "%from_email%"
|
||||||
sender_name: wallabag
|
sender_name: wallabag
|
||||||
service:
|
service:
|
||||||
mailer: fos_user.mailer.twig_swift
|
mailer: Wallabag\UserBundle\Mailer\UserMailer
|
||||||
|
|
||||||
fos_oauth_server:
|
fos_oauth_server:
|
||||||
db_driver: orm
|
db_driver: orm
|
||||||
|
|
|
@ -8,6 +8,10 @@ framework:
|
||||||
profiler:
|
profiler:
|
||||||
only_exceptions: false
|
only_exceptions: false
|
||||||
|
|
||||||
|
mailer:
|
||||||
|
# see https://mailcatcher.me/
|
||||||
|
dsn: smtp://127.0.0.1:1025
|
||||||
|
|
||||||
web_profiler:
|
web_profiler:
|
||||||
toolbar: true
|
toolbar: true
|
||||||
intercept_redirects: false
|
intercept_redirects: false
|
||||||
|
@ -35,12 +39,6 @@ monolog:
|
||||||
VERBOSITY_DEBUG: DEBUG
|
VERBOSITY_DEBUG: DEBUG
|
||||||
channels: [doctrine]
|
channels: [doctrine]
|
||||||
|
|
||||||
swiftmailer:
|
|
||||||
# see https://mailcatcher.me/
|
|
||||||
transport: smtp
|
|
||||||
host: 'localhost'
|
|
||||||
port: 1025
|
|
||||||
|
|
||||||
# If you want to use cache for queries used in WallabagExtension
|
# If you want to use cache for queries used in WallabagExtension
|
||||||
# Uncomment the following lines
|
# Uncomment the following lines
|
||||||
#doctrine:
|
#doctrine:
|
||||||
|
|
|
@ -11,16 +11,13 @@ framework:
|
||||||
collect: false
|
collect: false
|
||||||
translator:
|
translator:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
mailer:
|
||||||
|
dsn: 'null://null'
|
||||||
|
|
||||||
web_profiler:
|
web_profiler:
|
||||||
toolbar: false
|
toolbar: false
|
||||||
intercept_redirects: false
|
intercept_redirects: false
|
||||||
|
|
||||||
swiftmailer:
|
|
||||||
# to be able to read emails sent
|
|
||||||
spool:
|
|
||||||
type: file
|
|
||||||
|
|
||||||
doctrine:
|
doctrine:
|
||||||
dbal:
|
dbal:
|
||||||
driver: "%test_database_driver%"
|
driver: "%test_database_driver%"
|
||||||
|
|
|
@ -26,13 +26,7 @@ parameters:
|
||||||
domain_name: https://your-wallabag-url-instance.com
|
domain_name: https://your-wallabag-url-instance.com
|
||||||
server_name: "Your wallabag instance"
|
server_name: "Your wallabag instance"
|
||||||
|
|
||||||
mailer_transport: smtp
|
mailer_dsn: smtp://127.0.0.1
|
||||||
mailer_user: ~
|
|
||||||
mailer_password: ~
|
|
||||||
mailer_host: 127.0.0.1
|
|
||||||
mailer_port: false
|
|
||||||
mailer_encryption: ~
|
|
||||||
mailer_auth_mode: ~
|
|
||||||
|
|
||||||
locale: en
|
locale: en
|
||||||
|
|
||||||
|
|
|
@ -200,6 +200,16 @@ services:
|
||||||
wallabag_core.entry.download_images.client:
|
wallabag_core.entry.download_images.client:
|
||||||
alias: 'httplug.client.wallabag_core.entry.download_images'
|
alias: 'httplug.client.wallabag_core.entry.download_images'
|
||||||
|
|
||||||
|
Wallabag\UserBundle\Mailer\UserMailer:
|
||||||
|
arguments:
|
||||||
|
$parameters:
|
||||||
|
template:
|
||||||
|
confirmation: '%fos_user.registration.confirmation.template%'
|
||||||
|
resetting: '%fos_user.resetting.email.template%'
|
||||||
|
from_email:
|
||||||
|
confirmation: '%fos_user.registration.confirmation.from_email%'
|
||||||
|
resetting: '%fos_user.resetting.email.from_email%'
|
||||||
|
|
||||||
Wallabag\UserBundle\EventListener\CreateConfigListener:
|
Wallabag\UserBundle\EventListener\CreateConfigListener:
|
||||||
arguments:
|
arguments:
|
||||||
$itemsOnPage: "%wallabag_core.items_on_page%"
|
$itemsOnPage: "%wallabag_core.items_on_page%"
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
"doctrine/migrations": "^1.8",
|
"doctrine/migrations": "^1.8",
|
||||||
"doctrine/orm": "^2.6",
|
"doctrine/orm": "^2.6",
|
||||||
"doctrine/persistence": "^1.3",
|
"doctrine/persistence": "^1.3",
|
||||||
|
"egulias/email-validator": "^3.2",
|
||||||
"enshrined/svg-sanitize": "^0.15.4",
|
"enshrined/svg-sanitize": "^0.15.4",
|
||||||
"friendsofsymfony/jsrouting-bundle": "^2.2",
|
"friendsofsymfony/jsrouting-bundle": "^2.2",
|
||||||
"friendsofsymfony/oauth-server-bundle": "^1.5",
|
"friendsofsymfony/oauth-server-bundle": "^1.5",
|
||||||
|
@ -112,10 +113,9 @@
|
||||||
"sensio/framework-extra-bundle": "^6.2",
|
"sensio/framework-extra-bundle": "^6.2",
|
||||||
"sentry/sentry-symfony": "3.5.3",
|
"sentry/sentry-symfony": "3.5.3",
|
||||||
"stof/doctrine-extensions-bundle": "^1.2",
|
"stof/doctrine-extensions-bundle": "^1.2",
|
||||||
"swiftmailer/swiftmailer": "^6.3",
|
|
||||||
"symfony/dom-crawler": "^4.0",
|
"symfony/dom-crawler": "^4.0",
|
||||||
|
"symfony/mailer": "^4.0",
|
||||||
"symfony/monolog-bundle": "^3.1",
|
"symfony/monolog-bundle": "^3.1",
|
||||||
"symfony/swiftmailer-bundle": "^3.2",
|
|
||||||
"symfony/symfony": "^4.0",
|
"symfony/symfony": "^4.0",
|
||||||
"tecnickcom/tcpdf": "^6.3.0",
|
"tecnickcom/tcpdf": "^6.3.0",
|
||||||
"twig/extra-bundle": "^3.4",
|
"twig/extra-bundle": "^3.4",
|
||||||
|
|
254
composer.lock
generated
254
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": "7cd556e18e7d5c08e61d78d21acddb09",
|
"content-hash": "1bdf0355a12843194f046a6ac0b87338",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "babdev/pagerfanta-bundle",
|
"name": "babdev/pagerfanta-bundle",
|
||||||
|
@ -7788,16 +7788,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpdoc-parser",
|
"name": "phpstan/phpdoc-parser",
|
||||||
"version": "1.15.0",
|
"version": "1.15.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||||
"reference": "6ff970a7101acfe99b3048e4bbfbc094e55c5b04"
|
"reference": "5941477f100993652218928039d530b75a13a9ca"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6ff970a7101acfe99b3048e4bbfbc094e55c5b04",
|
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/5941477f100993652218928039d530b75a13a9ca",
|
||||||
"reference": "6ff970a7101acfe99b3048e4bbfbc094e55c5b04",
|
"reference": "5941477f100993652218928039d530b75a13a9ca",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -7827,9 +7827,9 @@
|
||||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.15.0"
|
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.15.2"
|
||||||
},
|
},
|
||||||
"time": "2022-12-07T16:12:39+00:00"
|
"time": "2022-12-16T06:42:48+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpzip/phpzip",
|
"name": "phpzip/phpzip",
|
||||||
|
@ -9552,82 +9552,6 @@
|
||||||
},
|
},
|
||||||
"time": "2022-09-30T11:52:24+00:00"
|
"time": "2022-09-30T11:52:24+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "swiftmailer/swiftmailer",
|
|
||||||
"version": "v6.3.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/swiftmailer/swiftmailer.git",
|
|
||||||
"reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c",
|
|
||||||
"reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"egulias/email-validator": "^2.0|^3.1",
|
|
||||||
"php": ">=7.0.0",
|
|
||||||
"symfony/polyfill-iconv": "^1.0",
|
|
||||||
"symfony/polyfill-intl-idn": "^1.10",
|
|
||||||
"symfony/polyfill-mbstring": "^1.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"mockery/mockery": "^1.0",
|
|
||||||
"symfony/phpunit-bridge": "^4.4|^5.4"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"ext-intl": "Needed to support internationalized email addresses"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "6.2-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"lib/swift_required.php"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Chris Corbyn"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Fabien Potencier",
|
|
||||||
"email": "fabien@symfony.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Swiftmailer, free feature-rich PHP mailer",
|
|
||||||
"homepage": "https://swiftmailer.symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"email",
|
|
||||||
"mail",
|
|
||||||
"mailer"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/swiftmailer/swiftmailer/issues",
|
|
||||||
"source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/fabpot",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"abandoned": "symfony/mailer",
|
|
||||||
"time": "2021-10-18T15:26:12+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "symfony/contracts",
|
"name": "symfony/contracts",
|
||||||
"version": "v1.1.13",
|
"version": "v1.1.13",
|
||||||
|
@ -9952,89 +9876,6 @@
|
||||||
],
|
],
|
||||||
"time": "2022-11-03T14:55:06+00:00"
|
"time": "2022-11-03T14:55:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "symfony/polyfill-iconv",
|
|
||||||
"version": "v1.27.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/symfony/polyfill-iconv.git",
|
|
||||||
"reference": "927013f3aac555983a5059aada98e1907d842695"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695",
|
|
||||||
"reference": "927013f3aac555983a5059aada98e1907d842695",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=7.1"
|
|
||||||
},
|
|
||||||
"provide": {
|
|
||||||
"ext-iconv": "*"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"ext-iconv": "For best performance"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-main": "1.27-dev"
|
|
||||||
},
|
|
||||||
"thanks": {
|
|
||||||
"name": "symfony/polyfill",
|
|
||||||
"url": "https://github.com/symfony/polyfill"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"bootstrap.php"
|
|
||||||
],
|
|
||||||
"psr-4": {
|
|
||||||
"Symfony\\Polyfill\\Iconv\\": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Nicolas Grekas",
|
|
||||||
"email": "p@tchwork.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Symfony Community",
|
|
||||||
"homepage": "https://symfony.com/contributors"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Symfony polyfill for the Iconv extension",
|
|
||||||
"homepage": "https://symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"compatibility",
|
|
||||||
"iconv",
|
|
||||||
"polyfill",
|
|
||||||
"portable",
|
|
||||||
"shim"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0"
|
|
||||||
},
|
|
||||||
"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-03T14:55:06+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-intl-grapheme",
|
"name": "symfony/polyfill-intl-grapheme",
|
||||||
"version": "v1.27.0",
|
"version": "v1.27.0",
|
||||||
|
@ -10942,87 +10783,6 @@
|
||||||
],
|
],
|
||||||
"time": "2022-10-05T15:16:54+00:00"
|
"time": "2022-10-05T15:16:54+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "symfony/swiftmailer-bundle",
|
|
||||||
"version": "v3.5.4",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/symfony/swiftmailer-bundle.git",
|
|
||||||
"reference": "9daab339f226ac958192bf89836cb3378cc0e652"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/9daab339f226ac958192bf89836cb3378cc0e652",
|
|
||||||
"reference": "9daab339f226ac958192bf89836cb3378cc0e652",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=7.1",
|
|
||||||
"swiftmailer/swiftmailer": "^6.1.3",
|
|
||||||
"symfony/config": "^4.4|^5.0",
|
|
||||||
"symfony/dependency-injection": "^4.4|^5.0",
|
|
||||||
"symfony/http-kernel": "^4.4|^5.0"
|
|
||||||
},
|
|
||||||
"conflict": {
|
|
||||||
"twig/twig": "<1.41|>=2.0,<2.10"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"symfony/console": "^4.4|^5.0",
|
|
||||||
"symfony/framework-bundle": "^4.4|^5.0",
|
|
||||||
"symfony/phpunit-bridge": "^4.4|^5.0",
|
|
||||||
"symfony/yaml": "^4.4|^5.0"
|
|
||||||
},
|
|
||||||
"type": "symfony-bundle",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-main": "3.5-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Symfony\\Bundle\\SwiftmailerBundle\\": ""
|
|
||||||
},
|
|
||||||
"exclude-from-classmap": [
|
|
||||||
"/Tests/"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Fabien Potencier",
|
|
||||||
"email": "fabien@symfony.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Symfony Community",
|
|
||||||
"homepage": "http://symfony.com/contributors"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Symfony SwiftmailerBundle",
|
|
||||||
"homepage": "http://symfony.com",
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/symfony/swiftmailer-bundle/issues",
|
|
||||||
"source": "https://github.com/symfony/swiftmailer-bundle/tree/v3.5.4"
|
|
||||||
},
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"abandoned": "symfony/mailer",
|
|
||||||
"time": "2022-02-06T08:03:40+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "symfony/symfony",
|
"name": "symfony/symfony",
|
||||||
"version": "v4.4.49",
|
"version": "v4.4.49",
|
||||||
|
|
|
@ -140,7 +140,6 @@
|
||||||
<tr><td>smalot/pdfparser</td><td>GPL-3.0</td></tr>
|
<tr><td>smalot/pdfparser</td><td>GPL-3.0</td></tr>
|
||||||
<tr><td>sonata-project/google-authenticator</td><td>MIT</td></tr>
|
<tr><td>sonata-project/google-authenticator</td><td>MIT</td></tr>
|
||||||
<tr><td>stof/doctrine-extensions-bundle</td><td>MIT</td></tr>
|
<tr><td>stof/doctrine-extensions-bundle</td><td>MIT</td></tr>
|
||||||
<tr><td>swiftmailer/swiftmailer</td><td>MIT</td></tr>
|
|
||||||
<tr><td>symfony/assetic-bundle</td><td>MIT</td></tr>
|
<tr><td>symfony/assetic-bundle</td><td>MIT</td></tr>
|
||||||
<tr><td>symfony/monolog-bundle</td><td>MIT</td></tr>
|
<tr><td>symfony/monolog-bundle</td><td>MIT</td></tr>
|
||||||
<tr><td>All of Symfony</td><td>MIT-licenced</td></tr>
|
<tr><td>All of Symfony</td><td>MIT-licenced</td></tr>
|
||||||
|
|
|
@ -4,6 +4,9 @@ namespace Wallabag\UserBundle\Mailer;
|
||||||
|
|
||||||
use Scheb\TwoFactorBundle\Mailer\AuthCodeMailerInterface;
|
use Scheb\TwoFactorBundle\Mailer\AuthCodeMailerInterface;
|
||||||
use Scheb\TwoFactorBundle\Model\Email\TwoFactorInterface;
|
use Scheb\TwoFactorBundle\Model\Email\TwoFactorInterface;
|
||||||
|
use Symfony\Component\Mailer\MailerInterface;
|
||||||
|
use Symfony\Component\Mime\Address;
|
||||||
|
use Symfony\Component\Mime\Email;
|
||||||
use Twig\Environment;
|
use Twig\Environment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,9 +16,9 @@ use Twig\Environment;
|
||||||
class AuthCodeMailer implements AuthCodeMailerInterface
|
class AuthCodeMailer implements AuthCodeMailerInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* SwiftMailer.
|
* Mailer.
|
||||||
*
|
*
|
||||||
* @var \Swift_Mailer
|
* @var MailerInterface
|
||||||
*/
|
*/
|
||||||
private $mailer;
|
private $mailer;
|
||||||
|
|
||||||
|
@ -55,14 +58,12 @@ class AuthCodeMailer implements AuthCodeMailerInterface
|
||||||
private $wallabagUrl;
|
private $wallabagUrl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the auth code mailer with the SwiftMailer object.
|
|
||||||
*
|
|
||||||
* @param string $senderEmail
|
* @param string $senderEmail
|
||||||
* @param string $senderName
|
* @param string $senderName
|
||||||
* @param string $supportUrl wallabag support url
|
* @param string $supportUrl wallabag support url
|
||||||
* @param string $wallabagUrl wallabag instance url
|
* @param string $wallabagUrl wallabag instance url
|
||||||
*/
|
*/
|
||||||
public function __construct(\Swift_Mailer $mailer, Environment $twig, $senderEmail, $senderName, $supportUrl, $wallabagUrl)
|
public function __construct(MailerInterface $mailer, Environment $twig, $senderEmail, $senderName, $supportUrl, $wallabagUrl)
|
||||||
{
|
{
|
||||||
$this->mailer = $mailer;
|
$this->mailer = $mailer;
|
||||||
$this->twig = $twig;
|
$this->twig = $twig;
|
||||||
|
@ -92,15 +93,13 @@ class AuthCodeMailer implements AuthCodeMailerInterface
|
||||||
'support_url' => $this->supportUrl,
|
'support_url' => $this->supportUrl,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$message = new \Swift_Message();
|
$email = (new Email())
|
||||||
$message
|
->from(new Address($this->senderEmail, $this->senderName ?? $this->senderEmail))
|
||||||
->setTo($user->getEmailAuthRecipient())
|
->to($user->getEmailAuthRecipient())
|
||||||
->setFrom($this->senderEmail, $this->senderName)
|
->subject($subject)
|
||||||
->setSubject($subject)
|
->text($bodyText)
|
||||||
->setBody($bodyText, 'text/plain')
|
->html($bodyHtml);
|
||||||
->addPart($bodyHtml, 'text/html')
|
|
||||||
;
|
|
||||||
|
|
||||||
$this->mailer->send($message);
|
$this->mailer->send($email);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
78
src/Wallabag/UserBundle/Mailer/UserMailer.php
Normal file
78
src/Wallabag/UserBundle/Mailer/UserMailer.php
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Wallabag\UserBundle\Mailer;
|
||||||
|
|
||||||
|
use FOS\UserBundle\Mailer\TwigSwiftMailer;
|
||||||
|
use Symfony\Component\Mailer\MailerInterface;
|
||||||
|
use Symfony\Component\Mime\Address;
|
||||||
|
use Symfony\Component\Mime\Email;
|
||||||
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||||
|
use Twig\Environment;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This replace the default mailer from TwigSwiftMailer by symfony/mailer instead of swiftmailer.
|
||||||
|
*/
|
||||||
|
class UserMailer extends TwigSwiftMailer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var MailerInterface
|
||||||
|
*/
|
||||||
|
protected $mailer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var UrlGeneratorInterface
|
||||||
|
*/
|
||||||
|
protected $router;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Environment
|
||||||
|
*/
|
||||||
|
protected $twig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $parameters;
|
||||||
|
|
||||||
|
public function __construct(MailerInterface $mailer, UrlGeneratorInterface $router, Environment $twig, array $parameters)
|
||||||
|
{
|
||||||
|
$this->mailer = $mailer;
|
||||||
|
$this->router = $router;
|
||||||
|
$this->twig = $twig;
|
||||||
|
$this->parameters = $parameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $templateName
|
||||||
|
* @param array $context
|
||||||
|
* @param array $fromEmail
|
||||||
|
* @param string $toEmail
|
||||||
|
*/
|
||||||
|
protected function sendMessage($templateName, $context, $fromEmail, $toEmail)
|
||||||
|
{
|
||||||
|
$template = $this->twig->load($templateName);
|
||||||
|
$subject = $template->renderBlock('subject', $context);
|
||||||
|
$textBody = $template->renderBlock('body_text', $context);
|
||||||
|
|
||||||
|
$htmlBody = '';
|
||||||
|
|
||||||
|
if ($template->hasBlock('body_html', $context)) {
|
||||||
|
$htmlBody = $template->renderBlock('body_html', $context);
|
||||||
|
}
|
||||||
|
|
||||||
|
$email = (new Email())
|
||||||
|
->from(new Address(key($fromEmail), current($fromEmail)))
|
||||||
|
->to($toEmail)
|
||||||
|
->subject($subject);
|
||||||
|
|
||||||
|
if (!empty($htmlBody)) {
|
||||||
|
$email
|
||||||
|
->text($textBody)
|
||||||
|
->html($htmlBody);
|
||||||
|
} else {
|
||||||
|
$email->text($textBody);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->mailer->send($email);
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,6 +3,8 @@
|
||||||
namespace Tests\Wallabag\UserBundle\Mailer;
|
namespace Tests\Wallabag\UserBundle\Mailer;
|
||||||
|
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Symfony\Component\Mailer\MailerInterface;
|
||||||
|
use Symfony\Component\Mime\Address;
|
||||||
use Twig\Environment;
|
use Twig\Environment;
|
||||||
use Twig\Loader\ArrayLoader;
|
use Twig\Loader\ArrayLoader;
|
||||||
use Wallabag\UserBundle\Entity\User;
|
use Wallabag\UserBundle\Entity\User;
|
||||||
|
@ -10,19 +12,10 @@ use Wallabag\UserBundle\Mailer\AuthCodeMailer;
|
||||||
|
|
||||||
class AuthCodeMailerTest extends TestCase
|
class AuthCodeMailerTest extends TestCase
|
||||||
{
|
{
|
||||||
protected $mailer;
|
|
||||||
protected $spool;
|
|
||||||
protected $twig;
|
protected $twig;
|
||||||
|
|
||||||
protected function setUp(): void
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
$this->spool = new CountableMemorySpool();
|
|
||||||
$transport = new \Swift_Transport_SpoolTransport(
|
|
||||||
new \Swift_Events_SimpleEventDispatcher(),
|
|
||||||
$this->spool
|
|
||||||
);
|
|
||||||
$this->mailer = new \Swift_Mailer($transport);
|
|
||||||
|
|
||||||
$twigTemplate = <<<'TWIG'
|
$twigTemplate = <<<'TWIG'
|
||||||
{% block subject %}subject{% endblock %}
|
{% block subject %}subject{% endblock %}
|
||||||
{% block body_html %}html body {{ code }}{% endblock %}
|
{% block body_html %}html body {{ code }}{% endblock %}
|
||||||
|
@ -34,6 +27,31 @@ TWIG;
|
||||||
|
|
||||||
public function testSendEmail()
|
public function testSendEmail()
|
||||||
{
|
{
|
||||||
|
$mailer = $this->createMock(MailerInterface::class);
|
||||||
|
$mailer->expects($this->once())
|
||||||
|
->method('send')
|
||||||
|
->with($this->callback(function ($email) {
|
||||||
|
$this->assertSame('subject', $email->getSubject());
|
||||||
|
$this->assertSame('text body http://0.0.0.0/support', $email->getTextBody());
|
||||||
|
$this->assertSame('html body 666666', $email->getHtmlBody());
|
||||||
|
|
||||||
|
$this->assertCount(1, $email->getTo());
|
||||||
|
/** @var Address[] $addresses */
|
||||||
|
$addresses = $email->getTo();
|
||||||
|
$this->assertInstanceOf(Address::class, $addresses[0]);
|
||||||
|
$this->assertSame('', $addresses[0]->getName());
|
||||||
|
$this->assertSame('test@wallabag.io', $addresses[0]->getAddress());
|
||||||
|
|
||||||
|
$this->assertCount(1, $email->getFrom());
|
||||||
|
/** @var Address[] $addresses */
|
||||||
|
$addresses = $email->getFrom();
|
||||||
|
$this->assertInstanceOf(Address::class, $addresses[0]);
|
||||||
|
$this->assertSame('wallabag test', $addresses[0]->getName());
|
||||||
|
$this->assertSame('nobody@test.io', $addresses[0]->getAddress());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}));
|
||||||
|
|
||||||
$user = new User();
|
$user = new User();
|
||||||
$user->setEmailTwoFactor(true);
|
$user->setEmailTwoFactor(true);
|
||||||
$user->setEmailAuthCode(666666);
|
$user->setEmailAuthCode(666666);
|
||||||
|
@ -41,7 +59,7 @@ TWIG;
|
||||||
$user->setName('Bob');
|
$user->setName('Bob');
|
||||||
|
|
||||||
$authCodeMailer = new AuthCodeMailer(
|
$authCodeMailer = new AuthCodeMailer(
|
||||||
$this->mailer,
|
$mailer,
|
||||||
$this->twig,
|
$this->twig,
|
||||||
'nobody@test.io',
|
'nobody@test.io',
|
||||||
'wallabag test',
|
'wallabag test',
|
||||||
|
@ -50,14 +68,5 @@ TWIG;
|
||||||
);
|
);
|
||||||
|
|
||||||
$authCodeMailer->sendAuthCode($user);
|
$authCodeMailer->sendAuthCode($user);
|
||||||
|
|
||||||
$this->assertCount(1, $this->spool);
|
|
||||||
|
|
||||||
$msg = $this->spool->getMessages()[0];
|
|
||||||
$this->assertArrayHasKey('test@wallabag.io', $msg->getTo());
|
|
||||||
$this->assertSame(['nobody@test.io' => 'wallabag test'], $msg->getFrom());
|
|
||||||
$this->assertSame('subject', $msg->getSubject());
|
|
||||||
$this->assertStringContainsString('text body http://0.0.0.0/support', $msg->toString());
|
|
||||||
$this->assertStringContainsString('html body 666666', $msg->toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Tests\Wallabag\UserBundle\Mailer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see https://www.pmg.com/blog/integration-testing-swift-mailer/
|
|
||||||
*/
|
|
||||||
final class CountableMemorySpool extends \Swift_MemorySpool implements \Countable
|
|
||||||
{
|
|
||||||
public function count()
|
|
||||||
{
|
|
||||||
return \count($this->messages);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getMessages()
|
|
||||||
{
|
|
||||||
return $this->messages;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue