diff --git a/src/ShvetsGroup/LaravelEmailDatabaseLog/EmailLogger.php b/src/ShvetsGroup/LaravelEmailDatabaseLog/EmailLogger.php index f5b8e0b..4beae79 100644 --- a/src/ShvetsGroup/LaravelEmailDatabaseLog/EmailLogger.php +++ b/src/ShvetsGroup/LaravelEmailDatabaseLog/EmailLogger.php @@ -30,6 +30,7 @@ public function handle(MessageSending $event): void 'body' => $message->getBody()->bodyToString(), 'headers' => $message->getHeaders()->toString(), 'attachments' => $this->saveAttachments($message), + 'message_id' => substr($this->getMessageId($message), 0, 255) ]); } @@ -44,7 +45,8 @@ function formatAddressField(Email $message, string $field): ?string { $headers = $message->getHeaders(); - return $headers->get($field)?->getBodyAsString(); + $field = $headers->get($field)?->getBodyAsString(); + return $field ? substr($field, 0, 255) : null; } /** @@ -63,4 +65,9 @@ protected function saveAttachments(Email $message): ?string ->map(fn(DataPart $part) => $part->toString()) ->implode("\n\n"); } + + function getMessageId($message) { + $header = $message->getHeaders()->get('Message-ID'); + return $header ? $header->getId() : null; + } } diff --git a/src/database/migrations/2021_04_04_120015_add_message_id_email_log.php b/src/database/migrations/2021_04_04_120015_add_message_id_email_log.php new file mode 100644 index 0000000..97e9371 --- /dev/null +++ b/src/database/migrations/2021_04_04_120015_add_message_id_email_log.php @@ -0,0 +1,32 @@ +string('message_id')->nullable(); + $table->index(['message_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('email_log', function (Blueprint $table) { + $table->dropColumn('message_id'); + }); + } +} diff --git a/src/database/migrations/2021_07_12_120000_change_body_longtext.php b/src/database/migrations/2021_07_12_120000_change_body_longtext.php new file mode 100644 index 0000000..5312be1 --- /dev/null +++ b/src/database/migrations/2021_07_12_120000_change_body_longtext.php @@ -0,0 +1,31 @@ +longtext('body')->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('email_log', function (Blueprint $table) { + $table->dropColumn('message_id'); + }); + } +}