diff --git a/README.md b/README.md
index cac7f998b849e8952edfeac66af62f9309d88dcb..073dc0a80797be11c7ec1549e1324430164db9e2 100644
--- a/README.md
+++ b/README.md
@@ -149,6 +149,12 @@ You can even use the send from feature to create an alias on the fly that does n
You must generate aliases that use shared domains (e.g. circus.waltz449@anonaddy.me) beforehand in order to be able to send from them.
+If you need to send an email to an address with an extension e.g. **hello+whatever@example.com** then it's exactly the same method:
+
+
+
+Just enter the extension too!
+
#### **Will people see my real email if I reply to a forwarded one?**
No, your real email will not be shown, the email will look as if it has come from us instead. Just make sure not to include anything that might identify you when composing the reply, i.e. your full name.
diff --git a/app/EmailData.php b/app/EmailData.php
index ecc42c8ab2640babb30affb5dd749becbac1bbd1..c1ade590236508feba014e2b93d0eae555ce9068 100644
--- a/app/EmailData.php
+++ b/app/EmailData.php
@@ -18,12 +18,16 @@ class EmailData
$this->html = base64_encode($parser->getMessageBody('html'));
$this->attachments = [];
- foreach ($parser->getAttachments() as $attachment) {
- $this->attachments[] = [
- 'stream' => base64_encode(stream_get_contents($attachment->getStream())),
- 'file_name' => base64_encode($attachment->getFileName()),
- 'mime' => base64_encode($attachment->getContentType())
- ];
+ if ($parser->getParts()[1]['content-type'] === 'multipart/encrypted') {
+ $this->encryptedParts = $parser->getAttachments();
+ } else {
+ foreach ($parser->getAttachments() as $attachment) {
+ $this->attachments[] = [
+ 'stream' => base64_encode(stream_get_contents($attachment->getStream())),
+ 'file_name' => base64_encode($attachment->getFileName()),
+ 'mime' => base64_encode($attachment->getContentType())
+ ];
+ }
}
}
}
diff --git a/app/Helpers/AlreadyEncryptedSigner.php b/app/Helpers/AlreadyEncryptedSigner.php
new file mode 100644
index 0000000000000000000000000000000000000000..837576ace0794c1e4bacdeaeca943a71dd2d7dae
--- /dev/null
+++ b/app/Helpers/AlreadyEncryptedSigner.php
@@ -0,0 +1,74 @@
+attachments = $attachments;
+ }
+
+ /**
+ * @param Swift_Message $message
+ *
+ * @return $this
+ *
+ * @throws Swift_DependencyException
+ * @throws Swift_SwiftException
+ */
+ public function signMessage(Swift_Message $message)
+ {
+ $message->setChildren([]);
+
+ $message->setEncoder(Swift_DependencyContainer::getInstance()->lookup('mime.rawcontentencoder'));
+
+ $type = $message->getHeaders()->get('Content-Type');
+
+ $type->setValue('multipart/encrypted');
+
+ $type->setParameters([
+ 'protocol' => 'application/pgp-encrypted',
+ 'boundary' => $message->getBoundary()
+ ]);
+
+ $body = 'This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)' . PHP_EOL;
+
+ foreach ($this->attachments as $attachment) {
+ $body .= '--' . $message->getBoundary() . PHP_EOL;
+ $body .= $attachment->getMimePartStr() . PHP_EOL;
+ }
+
+ $body .= '--'. $message->getBoundary() . '--';
+
+ $message->setBody($body);
+
+ $messageHeaders = $message->getHeaders();
+ $messageHeaders->removeAll('Content-Transfer-Encoding');
+
+ return $this;
+ }
+
+ /**
+ * @return array
+ */
+ public function getAlteredHeaders()
+ {
+ return ['Content-Type', 'Content-Transfer-Encoding', 'Content-Disposition', 'Content-Description'];
+ }
+
+ /**
+ * @return $this
+ */
+ public function reset()
+ {
+ return $this;
+ }
+}
diff --git a/app/Helpers/CustomMailer.php b/app/Helpers/CustomMailer.php
deleted file mode 100644
index 5a1cfedcec56fd55e2ab540f8a57e55e1566902b..0000000000000000000000000000000000000000
--- a/app/Helpers/CustomMailer.php
+++ /dev/null
@@ -1,59 +0,0 @@
-sendMailable($view);
- }
-
- // First we need to parse the view, which could either be a string or an array
- // containing both an HTML and plain text versions of the view which should
- // be used when sending an e-mail. We will extract both of them out here.
- if ($view) {
- [$view, $plain, $raw] = $this->parseView($view);
- }
-
- $data['message'] = $message = $this->createMessage();
-
- // Once we have retrieved the view content for the e-mail we will set the body
- // of this message using the HTML type, which will provide a simple wrapper
- // to creating view based emails that are able to receive arrays of data.
- $callback($message);
-
- if ($view) {
- $this->addContent($message, $view, $plain, $raw, $data);
- }
-
- // If a global "to" address has been set, we will set that address on the mail
- // message. This is primarily useful during local development in which each
- // message should be delivered into a single mail address for inspection.
- if (isset($this->to['address'])) {
- $this->setGlobalToAndRemoveCcAndBcc($message);
- }
-
- // Next we will determine if the message should be sent. We give the developer
- // one final chance to stop this message and then we will send it to all of
- // its recipients. We will then fire the sent event for the sent message.
- $swiftMessage = $message->getSwiftMessage();
-
- if ($this->shouldSendMessage($swiftMessage, $data)) {
- $this->sendSwiftMessage($swiftMessage);
-
- $this->dispatchSentEvent($message, $data);
- }
- }
-}
diff --git a/app/Mail/ForwardEmail.php b/app/Mail/ForwardEmail.php
index 7941d76dead930fc764bc09fbfd8650302f9ab77..6fa53dc6fb9bd47c2f2d4fafe8bb196047f55370 100644
--- a/app/Mail/ForwardEmail.php
+++ b/app/Mail/ForwardEmail.php
@@ -4,6 +4,7 @@ namespace App\Mail;
use App\Alias;
use App\EmailData;
+use App\Helpers\AlreadyEncryptedSigner;
use App\Helpers\OpenPGPSigner;
use App\Notifications\GpgKeyExpired;
use App\Recipient;
@@ -34,6 +35,7 @@ class ForwardEmail extends Mailable implements ShouldQueue
protected $fingerprint;
protected $openpgpsigner;
protected $dkimSigner;
+ protected $encryptedParts;
/**
* Create a new message instance.
@@ -42,7 +44,8 @@ class ForwardEmail extends Mailable implements ShouldQueue
*/
public function __construct(Alias $alias, EmailData $emailData, Recipient $recipient)
{
- $fingerprint = $recipient->should_encrypt ? $recipient->fingerprint : null;
+ $this->encryptedParts = $emailData->encryptedParts ?? null;
+ $fingerprint = $recipient->should_encrypt && !$this->encryptedParts ? $recipient->fingerprint : null;
$this->user = $alias->user;
$this->alias = $alias;
@@ -120,6 +123,12 @@ class ForwardEmail extends Mailable implements ShouldQueue
$message->setId(bin2hex(random_bytes(16)).'@'.$this->alias->domain);
+ if ($this->encryptedParts) {
+ $alreadyEncryptedSigner = new AlreadyEncryptedSigner($this->encryptedParts);
+
+ $message->attachSigner($alreadyEncryptedSigner);
+ }
+
if ($this->openpgpsigner) {
$message->attachSigner($this->openpgpsigner);
} elseif ($this->dkimSigner) { // TODO fix issue with failing DKIM signature if message is encrypted
diff --git a/app/Mail/ReplyToEmail.php b/app/Mail/ReplyToEmail.php
index a54626471f25f920dc981460e7c9096c6ccacd20..156e65d52146003c367e498886ad60ca000bc199 100644
--- a/app/Mail/ReplyToEmail.php
+++ b/app/Mail/ReplyToEmail.php
@@ -22,6 +22,7 @@ class ReplyToEmail extends Mailable implements ShouldQueue
protected $emailHtml;
protected $emailAttachments;
protected $dkimSigner;
+ protected $encryptedParts;
/**
* Create a new message instance.
@@ -36,6 +37,7 @@ class ReplyToEmail extends Mailable implements ShouldQueue
$this->emailText = $emailData->text;
$this->emailHtml = $emailData->html;
$this->emailAttachments = $emailData->attachments;
+ $this->encryptedParts = $emailData->encryptedParts ?? null;
}
/**
@@ -75,6 +77,12 @@ class ReplyToEmail extends Mailable implements ShouldQueue
$message->setId(bin2hex(random_bytes(16)).'@'.$this->alias->domain);
+ if ($this->encryptedParts) {
+ $alreadyEncryptedSigner = new AlreadyEncryptedSigner($this->encryptedParts);
+
+ $message->attachSigner($alreadyEncryptedSigner);
+ }
+
if ($this->dkimSigner) {
$message->attachSigner($this->dkimSigner);
}
@@ -84,13 +92,6 @@ class ReplyToEmail extends Mailable implements ShouldQueue
$email->replyTo($this->alias->email, $fromName);
}
- // TODO fix issue with replies that are already encrypted.
- /* if ($this->emailText) {
- $email->text('emails.reply.text')->with([
- 'text' => base64_decode($this->emailText)
- ]);
- } */
-
if ($this->emailHtml) {
$email->view('emails.reply.html')->with([
'html' => base64_decode($this->emailHtml)
diff --git a/app/Mail/SendFromEmail.php b/app/Mail/SendFromEmail.php
index 589a06e25de04ad93abd7225baac7b0ae0fd7b99..838f9d884c253c814ef3dc1300c812ae640be71a 100644
--- a/app/Mail/SendFromEmail.php
+++ b/app/Mail/SendFromEmail.php
@@ -4,6 +4,7 @@ namespace App\Mail;
use App\Alias;
use App\EmailData;
+use App\Helpers\AlreadyEncryptedSigner;
use App\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
@@ -22,6 +23,7 @@ class SendFromEmail extends Mailable implements ShouldQueue
protected $emailHtml;
protected $emailAttachments;
protected $dkimSigner;
+ protected $encryptedParts;
/**
* Create a new message instance.
@@ -36,6 +38,7 @@ class SendFromEmail extends Mailable implements ShouldQueue
$this->emailText = $emailData->text;
$this->emailHtml = $emailData->html;
$this->emailAttachments = $emailData->attachments;
+ $this->encryptedParts = $emailData->encryptedParts ?? null;
}
/**
@@ -75,6 +78,12 @@ class SendFromEmail extends Mailable implements ShouldQueue
$message->setId(bin2hex(random_bytes(16)).'@'.$this->alias->domain);
+ if ($this->encryptedParts) {
+ $alreadyEncryptedSigner = new AlreadyEncryptedSigner($this->encryptedParts);
+
+ $message->attachSigner($alreadyEncryptedSigner);
+ }
+
if ($this->dkimSigner) {
$message->attachSigner($this->dkimSigner);
}
diff --git a/app/Providers/CustomMailServiceProvider.php b/app/Providers/CustomMailServiceProvider.php
deleted file mode 100644
index 6dbcdc56e1b65791f772d25af90100ecf716db73..0000000000000000000000000000000000000000
--- a/app/Providers/CustomMailServiceProvider.php
+++ /dev/null
@@ -1,43 +0,0 @@
-app->singleton('mailer', function ($app) {
- $config = $app->make('config')->get('mail');
-
- // Once we have create the mailer instance, we will set a container instance
- // on the mailer. This allows us to resolve mailer classes via containers
- // for maximum testability on said classes instead of passing Closures.
- $mailer = new CustomMailer(
- $app['view'],
- $app['swift.mailer'],
- $app['events']
- );
-
- if ($app->bound('queue')) {
- $mailer->setQueue($app['queue']);
- }
-
- // Next we will set all of the global addresses on this mailer, which allows
- // for easy unification of all "from" addresses as well as easy debugging
- // of sent messages since they get be sent into a single email address.
- foreach (['from', 'reply_to', 'to'] as $type) {
- $this->setGlobalAddress($mailer, $config, $type);
- }
-
- return $mailer;
- });
- }
-}
diff --git a/composer.lock b/composer.lock
index d78870d5ec43157d3790e84ee90138d6eed48253..04d413bcfe18029c50f27c327f0ca178e81f7bf2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -628,16 +628,16 @@
},
{
"name": "egulias/email-validator",
- "version": "2.1.15",
+ "version": "2.1.17",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
- "reference": "e834eea5306d85d67de5a05db5882911d5b29357"
+ "reference": "ade6887fd9bd74177769645ab5c474824f8a418a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e834eea5306d85d67de5a05db5882911d5b29357",
- "reference": "e834eea5306d85d67de5a05db5882911d5b29357",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a",
+ "reference": "ade6887fd9bd74177769645ab5c474824f8a418a",
"shasum": ""
},
"require": {
@@ -682,7 +682,7 @@
"validation",
"validator"
],
- "time": "2020-01-20T21:40:59+00:00"
+ "time": "2020-02-13T22:36:52+00:00"
},
{
"name": "fideloper/proxy",
@@ -1269,16 +1269,16 @@
},
{
"name": "laravel/framework",
- "version": "v6.14.0",
+ "version": "v6.15.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "9e78f1aeb2c60bd7badcbafc352a9a2c5863c60c"
+ "reference": "b7c152e3327c03428fb68d5abb63ca8b3eca8422"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/9e78f1aeb2c60bd7badcbafc352a9a2c5863c60c",
- "reference": "9e78f1aeb2c60bd7badcbafc352a9a2c5863c60c",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/b7c152e3327c03428fb68d5abb63ca8b3eca8422",
+ "reference": "b7c152e3327c03428fb68d5abb63ca8b3eca8422",
"shasum": ""
},
"require": {
@@ -1288,8 +1288,7 @@
"ext-json": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
- "league/commonmark": "^1.1",
- "league/commonmark-ext-table": "^2.1",
+ "league/commonmark": "^1.3",
"league/flysystem": "^1.0.8",
"monolog/monolog": "^1.12|^2.0",
"nesbot/carbon": "^2.0",
@@ -1412,20 +1411,20 @@
"framework",
"laravel"
],
- "time": "2020-02-04T14:38:06+00:00"
+ "time": "2020-02-12T21:56:14+00:00"
},
{
"name": "laravel/passport",
- "version": "v8.3.1",
+ "version": "v8.4.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/passport.git",
- "reference": "98456cb16efd2ef7b41797e0a8559c9d8b4112f8"
+ "reference": "c1be259ff85109416e9e81c80fa4d3d611d6398a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/passport/zipball/98456cb16efd2ef7b41797e0a8559c9d8b4112f8",
- "reference": "98456cb16efd2ef7b41797e0a8559c9d8b4112f8",
+ "url": "https://api.github.com/repos/laravel/passport/zipball/c1be259ff85109416e9e81c80fa4d3d611d6398a",
+ "reference": "c1be259ff85109416e9e81c80fa4d3d611d6398a",
"shasum": ""
},
"require": {
@@ -1484,7 +1483,7 @@
"oauth",
"passport"
],
- "time": "2020-01-29T13:25:24+00:00"
+ "time": "2020-02-12T14:34:02+00:00"
},
{
"name": "laravel/tinker",
@@ -1678,71 +1677,6 @@
],
"time": "2020-02-08T23:42:03+00:00"
},
- {
- "name": "league/commonmark-ext-table",
- "version": "v2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/commonmark-ext-table.git",
- "reference": "3228888ea69636e855efcf6636ff8e6316933fe7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark-ext-table/zipball/3228888ea69636e855efcf6636ff8e6316933fe7",
- "reference": "3228888ea69636e855efcf6636ff8e6316933fe7",
- "shasum": ""
- },
- "require": {
- "league/commonmark": "~0.19.3|^1.0",
- "php": "^7.1"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.14",
- "phpstan/phpstan": "~0.11",
- "phpunit/phpunit": "^7.0|^8.0",
- "symfony/var-dumper": "^4.0",
- "vimeo/psalm": "^3.0"
- },
- "type": "commonmark-extension",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\CommonMark\\Ext\\Table\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Martin HasoĊ",
- "email": "martin.hason@gmail.com"
- },
- {
- "name": "Webuni s.r.o.",
- "homepage": "https://www.webuni.cz"
- },
- {
- "name": "Colin O'Dell",
- "email": "colinodell@gmail.com",
- "homepage": "https://www.colinodell.com"
- }
- ],
- "description": "Table extension for league/commonmark",
- "homepage": "https://github.com/thephpleague/commonmark-ext-table",
- "keywords": [
- "commonmark",
- "extension",
- "markdown",
- "table"
- ],
- "time": "2019-09-26T13:28:33+00:00"
- },
{
"name": "league/event",
"version": "2.2.0",
@@ -2106,16 +2040,16 @@
},
{
"name": "nesbot/carbon",
- "version": "2.29.1",
+ "version": "2.30.0",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "e509be5bf2d703390e69e14496d9a1168452b0a2"
+ "reference": "912dff66d2690ca66abddb9b291a1df5f371d3b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e509be5bf2d703390e69e14496d9a1168452b0a2",
- "reference": "e509be5bf2d703390e69e14496d9a1168452b0a2",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/912dff66d2690ca66abddb9b291a1df5f371d3b4",
+ "reference": "912dff66d2690ca66abddb9b291a1df5f371d3b4",
"shasum": ""
},
"require": {
@@ -2172,7 +2106,7 @@
"datetime",
"time"
],
- "time": "2020-01-21T09:36:43+00:00"
+ "time": "2020-02-07T15:25:46+00:00"
},
{
"name": "nikic/php-parser",
@@ -3994,16 +3928,16 @@
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.13.1",
+ "version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3"
+ "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
- "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
+ "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
"shasum": ""
},
"require": {
@@ -4015,7 +3949,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.14-dev"
}
},
"autoload": {
@@ -4048,20 +3982,20 @@
"polyfill",
"portable"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-iconv",
- "version": "v1.13.1",
+ "version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
- "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36"
+ "reference": "926832ce51059bb58211b7b2080a88e0c3b5328e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/a019efccc03f1a335af6b4f20c30f5ea8060be36",
- "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36",
+ "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/926832ce51059bb58211b7b2080a88e0c3b5328e",
+ "reference": "926832ce51059bb58211b7b2080a88e0c3b5328e",
"shasum": ""
},
"require": {
@@ -4073,7 +4007,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.14-dev"
}
},
"autoload": {
@@ -4107,26 +4041,26 @@
"portable",
"shim"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.13.1",
+ "version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46"
+ "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46",
- "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6842f1a39cf7d580655688069a03dd7cd83d244a",
+ "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-mbstring": "^1.3",
- "symfony/polyfill-php72": "^1.9"
+ "symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
@@ -4134,7 +4068,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.14-dev"
}
},
"autoload": {
@@ -4169,20 +4103,20 @@
"portable",
"shim"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "time": "2020-01-17T12:01:36+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.13.1",
+ "version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f"
+ "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f",
- "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2",
+ "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2",
"shasum": ""
},
"require": {
@@ -4194,7 +4128,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.14-dev"
}
},
"autoload": {
@@ -4228,20 +4162,20 @@
"portable",
"shim"
],
- "time": "2019-11-27T14:18:11+00:00"
+ "time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-php56",
- "version": "v1.13.1",
+ "version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
- "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4"
+ "reference": "16ec91cb06998b609501b55b7177b7d7c02badb3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
- "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
+ "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/16ec91cb06998b609501b55b7177b7d7c02badb3",
+ "reference": "16ec91cb06998b609501b55b7177b7d7c02badb3",
"shasum": ""
},
"require": {
@@ -4251,7 +4185,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.14-dev"
}
},
"autoload": {
@@ -4284,20 +4218,20 @@
"portable",
"shim"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.13.1",
+ "version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038"
+ "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038",
- "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf",
+ "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf",
"shasum": ""
},
"require": {
@@ -4306,7 +4240,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.14-dev"
}
},
"autoload": {
@@ -4339,20 +4273,20 @@
"portable",
"shim"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.13.1",
+ "version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f"
+ "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f",
- "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675",
+ "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675",
"shasum": ""
},
"require": {
@@ -4361,7 +4295,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.14-dev"
}
},
"autoload": {
@@ -4397,20 +4331,20 @@
"portable",
"shim"
],
- "time": "2019-11-27T16:25:15+00:00"
+ "time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-util",
- "version": "v1.13.1",
+ "version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
- "reference": "964a67f293b66b95883a5ed918a65354fcd2258f"
+ "reference": "ba3cfcea6d0192cae46c62041f61cbb704b526d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/964a67f293b66b95883a5ed918a65354fcd2258f",
- "reference": "964a67f293b66b95883a5ed918a65354fcd2258f",
+ "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ba3cfcea6d0192cae46c62041f61cbb704b526d3",
+ "reference": "ba3cfcea6d0192cae46c62041f61cbb704b526d3",
"shasum": ""
},
"require": {
@@ -4419,7 +4353,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.14-dev"
}
},
"autoload": {
@@ -4449,7 +4383,7 @@
"polyfill",
"shim"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/process",
@@ -7392,16 +7326,16 @@
},
{
"name": "symfony/polyfill-php70",
- "version": "v1.13.1",
+ "version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php70.git",
- "reference": "af23c7bb26a73b850840823662dda371484926c4"
+ "reference": "419c4940024c30ccc033650373a1fe13890d3255"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/af23c7bb26a73b850840823662dda371484926c4",
- "reference": "af23c7bb26a73b850840823662dda371484926c4",
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/419c4940024c30ccc033650373a1fe13890d3255",
+ "reference": "419c4940024c30ccc033650373a1fe13890d3255",
"shasum": ""
},
"require": {
@@ -7411,7 +7345,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.14-dev"
}
},
"autoload": {
@@ -7447,7 +7381,7 @@
"portable",
"shim"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/stopwatch",
@@ -7541,16 +7475,16 @@
},
{
"name": "webmozart/assert",
- "version": "1.6.0",
+ "version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
- "reference": "573381c0a64f155a0d9a23f4b0c797194805b925"
+ "reference": "aed98a490f9a8f78468232db345ab9cf606cf598"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925",
- "reference": "573381c0a64f155a0d9a23f4b0c797194805b925",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598",
+ "reference": "aed98a490f9a8f78468232db345ab9cf606cf598",
"shasum": ""
},
"require": {
@@ -7585,7 +7519,7 @@
"check",
"validate"
],
- "time": "2019-11-24T13:36:37+00:00"
+ "time": "2020-02-14T12:15:55+00:00"
}
],
"aliases": [],
diff --git a/config/app.php b/config/app.php
index 0e654337133093bd8dfb8e1fe3c5293b8966a376..0e2576760af4e13e4eed5191165e9278f5075346 100644
--- a/config/app.php
+++ b/config/app.php
@@ -175,7 +175,6 @@ return [
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\Providers\HelperServiceProvider::class,
- App\Providers\CustomMailServiceProvider::class,
],
diff --git a/tests/emails/email_reply_encrypted.eml b/tests/emails/email_reply_encrypted.eml
index 80051b3525d245838cf5b25ab1b8b8eb1f9e636a..ffda0eccc639bf068c3154e7b871419b6c291e48 100644
--- a/tests/emails/email_reply_encrypted.eml
+++ b/tests/emails/email_reply_encrypted.eml
@@ -1,6 +1,6 @@
Date: Wed, 20 Feb 2019 15:00:00 +0100 (CET)
From: Will
-To: contact@ebay.com
+To:
Subject: RE: Test Email
In-Reply-To: <9f2ada5308f1a3f88515a370504a66b3@swift.generated>
Content-Type: multipart/encrypted; protocol="application/pgp-encrypted"; boundary="----=_Part_10031_1199410393.1550677940425"
@@ -19,39 +19,39 @@ Content-Disposition: inline; filename="encrypted.asc"
-----BEGIN PGP MESSAGE-----
-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
-=ldnW
+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
+z/x1RGWQTcq5LANBKBUoYQqiScidMstiSX0=
+=3dtw
-----END PGP MESSAGE-----
------=_Part_10031_1199410393.1550677940425--