Accept() public method

Dispatches to the specific visit method for this MIME message.
This default implementation for MimeKit.MimeMessage nodes calls MimeKit.MimeVisitor.VisitMimeMessage. Override this method to call into a more specific method on a derived visitor class of the MimeKit.MimeVisitor class. However, it should still support unknown visitors by calling MimeKit.MimeVisitor.VisitMimeMessage.
/// is null. ///
public Accept ( MimeKit.MimeVisitor visitor ) : void
visitor MimeKit.MimeVisitor The visitor.
return void
        /// <summary>
        /// detects whether a message is a standard bounce message.
        /// </summary>
        ///
        /// essentially this finds the `multipart/report; report-type=delivery-status` part and
        /// its `message/delivery-status` sub-part to decide whether a message is a bounce.
        ///
        /// the message/delivery-status mime part looks something like:
        ///
        ///      Content-Type: message/delivery-status
        ///
        ///      Reporting-MTA: dns; PTPEDGE02.test.local
        ///
        ///      Final-recipient: RFC822;
        ///       [email protected]
        ///      Action: failed
        ///      Status: 5.1.1
        ///      Remote-MTA: dns; mx.google.com
        ///      X-Supplementary-Info: &lt;mx.google.com #5.1.1 smtp;550-5.1.1 The email account
        ///       that you tried to reach does not exist.Please try 550-5.1.1 double-checking
        ///      the recipient's email address for typos or 550-5.1.1 unnecessary spaces.
        ///       Learn more at 550 5.1.1  https://support.google.com/mail/answer/6596
        ///       om11si19081667wic.29 - gsmtp>
        ///
        /// See the multipart/report format RFC:
        ///      The Multipart/Report Media Type for the Reporting of Mail System Administrative Messages
        ///      https://tools.ietf.org/html/rfc6522
        /// See the message/delivery-status RFC:
        ///      An Extensible Message Format for Delivery Status Notifications
        ///      https://tools.ietf.org/html/rfc3464
        public static BounceDetectResult Detect(MimeMessage message)
        {
            var visitor = new Visitor();

            message.Accept(visitor);

            var result = visitor.Result;

            return new BounceDetectResult(
                message,
                result.DeliveryNotificationPart,
                result.DeliveryStatus,
                result.UndeliveredMessagePart
            );
        }
示例#2
0
        public string CreateFile(MimeMessage mailMessageEx)
        {
            if (mailMessageEx == null) throw new ArgumentNullException(nameof(mailMessageEx));

            var tempDir = CreateUniqueTempDirectory();
            var visitor = new HtmlPreviewVisitor(tempDir);
            mailMessageEx.Accept(visitor);

            string htmlFile = Path.Combine(tempDir, "index.html");

            _logger.Verbose("Writing HTML Preview file {HtmlFile}", htmlFile);

            File.WriteAllText(htmlFile, visitor.HtmlBody, Encoding.Unicode);

            return htmlFile;
        }
示例#3
0
		/// <summary>
		/// Dispatches the message to one of the more specialized visit methods in this class.
		/// </summary>
		/// <remarks>
		/// Dispatches the message to one of the more specialized visit methods in this class.
		/// </remarks>
		/// <param name="message">The MIME message.</param>
		public virtual void Visit (MimeMessage message)
		{
			if (message != null)
				message.Accept (this);
		}
示例#4
0
		void Render (MimeMessage message)
		{
			var tmpDir = Path.Combine (Path.GetTempPath (), message.MessageId);
			var visitor = new HtmlPreviewVisitor (tmpDir);

			Directory.CreateDirectory (tmpDir);

			message.Accept (visitor);

			DisplayHtml (visitor.HtmlBody);
			DisplayAttachments (visitor.Attachments);
		}
		void Render (WebBrowser browser, MimeMessage message)
		{
			var tmpDir = Path.Combine (Path.GetTempPath (), message.MessageId);
			var visitor = new HtmlPreviewVisitor (tmpDir);

			Directory.CreateDirectory (tmpDir);

			message.Accept (visitor);

			browser.DocumentText = visitor.HtmlBody;
		}