示例#1
0
        /// <summary>
        /// 获取邮件的内容
        /// </summary>
        public static Result <EMail_DKIM_RAW_EML> ToRAW(MailMessage message)
        {
            var rtv = new Result <EMail_DKIM_RAW_EML>();

            if (MailWriterFactory == null || Close == null || Send2 == null && Send3 == null)
            {
                rtv.error("email内容获取器未初始化成功");
                return(rtv);
            }

            var headers = message.Headers;
            //备份hook head
            var hT  = headers[EMail_DKIM.DKIMTimeKeyT];
            var hTS = headers[EMail_DKIM.DKIMTimeKeyTS];

            try {
                using (var internalStream = new ClosableMemoryStream()) {
                    object mailWriter = MailWriterFactory(internalStream);

                    if (Send2 != null)
                    {
                        Send2(message, mailWriter, false);
                    }
                    else if (Send3 != null)
                    {
                        //由smtp.DeliveryFormat决定的allowUnicode为false
                        Send3(message, mailWriter, false, false);
                    }

                    Close(mailWriter);

                    internalStream.Position = 0;
                    string text;
                    using (var reader = new StreamReader(internalStream, Encoding.UTF8)) {
                        text = reader.ReadToEnd();
                    }

                    internalStream.ReallyClose();

                    var val = EMail_DKIM_RAW_EML.ParseOrNull(text);
                    if (val == null)
                    {
                        rtv.error("整个email内容获取后解析失败");
                        return(rtv);
                    }
                    rtv.Value = val;
                    return(rtv);
                }
            } catch (Exception e) {
                rtv.fail("无法获取整个email内容:" + e.Message, e.ToString());
                return(rtv);
            } finally {
                //还原hook head
                if (hTS != null)
                {
                    headers.Set(EMail_DKIM.DKIMTimeKeyT, hT);
                    headers.Set(EMail_DKIM.DKIMTimeKeyTS, hTS);
                }
            }
        }
示例#2
0
        /// <summary>
        /// 获取邮件的内容
        /// </summary>
        public static Result <EMail_DKIM_RAW_EML> ToRAW(MailMessage message)
        {
            var rtv = new Result <EMail_DKIM_RAW_EML>();

            if (MailWriterFactory == null || Close == null || Send2 == null && Send3 == null)
            {
                rtv.error("email内容获取器未初始化成功");
                return(rtv);
            }
            try {
                using (var internalStream = new ClosableMemoryStream()) {
                    object mailWriter = MailWriterFactory(internalStream);

                    if (Send2 != null)
                    {
                        Send2(message, mailWriter, false);
                    }
                    else if (Send3 != null)
                    {
                        Send3(message, mailWriter, false, false);
                    }

                    Close(mailWriter);

                    internalStream.Position = 0;
                    string text;
                    using (var reader = new StreamReader(internalStream, Encoding.UTF8)) {
                        text = reader.ReadToEnd();
                    }

                    internalStream.ReallyClose();

                    var val = EMail_DKIM_RAW_EML.ParseOrNull(text);
                    if (val == null)
                    {
                        rtv.error("整个email内容获取后解析失败");
                        return(rtv);
                    }
                    rtv.Value = val;
                    return(rtv);
                }
            } catch (Exception e) {
                rtv.fail("无法获取整个email内容:" + e.Message, e.ToString());
                return(rtv);
            }
        }
示例#3
0
        public static string GetText([NotNull] this MailMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            if (message.From == null)
            {
                throw new ArgumentException("From property cannot be null");
            }

            using (var internalStream = new ClosableMemoryStream())
            {
                object mailWriter = MailWriterFactory(internalStream);

                if (Send2 != null)
                {
                    Send2(message, mailWriter, false);
                }
                else
                {
                    Send3(message, mailWriter, false, true);
                }

                Close(mailWriter);

                internalStream.Position = 0;
                string text;
                using (var reader = new StreamReader(internalStream))
                {
                    text = reader.ReadToEnd();
                }

                internalStream.ReallyClose();

                return(text);
            }
        }
示例#4
0
        public static string GetText([NotNull]this MailMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            if (message.From == null)
            {
                throw new ArgumentException("From property cannot be null");
            }

            using (var internalStream = new ClosableMemoryStream())
            {

                object mailWriter = MailWriterFactory(internalStream);

                if (Send2 != null)
                {
                    Send2(message, mailWriter, false);
                }
                else
                {
                    Send3(message, mailWriter, false, true);
                }

                Close(mailWriter);

                internalStream.Position = 0;
                string text;
                using (var reader = new StreamReader(internalStream))
                {
                    text = reader.ReadToEnd();
                }

                internalStream.ReallyClose();

                return text;

            }
        }