/// <summary>
        /// Forwards the email to the relay email address.
        /// </summary>
        /// <param name="mimeMessage">The MIME message.</param>
        public void ForwardEmail(MimeMessage mimeMessage)
        {
            Metadata metadata = MetadataFactory.GenerateFrom(mimeMessage);
            // Add tags to the subject
            string      subject    = mimeMessage.Subject;
            IEmailEntry emailEntry = emailEntryCache.Get(toCache.Get(mimeMessage));

            if (!string.IsNullOrEmpty(emailEntry?.Tag))
            {
                metadata.Tag = emailEntry.Tag;
                subject      = $"[{emailEntry.Tag}] {subject}";
            }

            Email email = new Email(
                new System.Net.Mail.MailAddress(_options.GetSender()),
                new System.Net.Mail.MailAddress(_options.RelayEmail))
            {
                Subject = subject,
            };

            foreach (MimeEntity mimeEntity in mimeMessage.BodyParts)
            {
                if (mimeEntity.IsAttachment)
                {
                    if (!(mimeEntity is MimePart mimePart))
                    {
                        continue;
                    }

                    Attachment temporaryAttachment;
                    using (MemoryStream memoryStream = new MemoryStream())
                    {
                        mimePart.Content.DecodeTo(memoryStream);
                        memoryStream.Seek(0, SeekOrigin.Begin);

                        temporaryAttachment = new TemporaryAttachment(memoryStream)
                        {
                            DisplayFileName = mimePart.FileName,
                            ContentType     = mimePart.ContentType.MimeType,
                            Encoding        = mimePart.ContentTransferEncoding.GetRaw(),
                        };
                    }

                    email.Attachments.Add(temporaryAttachment);
                }
                else if (mimeEntity is TextPart textPart)
                {
                    string text = textPart.Text;
                    if (textPart.ContentType.MimeType == Constants.TextMimeType)
                    {
                        text = MetadataSerializer.SerializeForText(metadata, text);
                    }
                    else if (textPart.ContentType.MimeType == Constants.HtmlMimeType)
                    {
                        text = MetadataSerializer.SerializeForHtml(metadata, text);
                    }

                    email.TextContents.Add(
                        new Text()
                    {
                        RawText  = text,
                        MimeType = textPart.ContentType.MimeType,
                        Charset  = textPart.ContentType.Charset,
                    });
                }
            }

            _sender.SendEmail(email);

            emailEntryCache.Clear();
            toCache.Clear();
        }