/// <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); } } }
/// <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); } }
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); } }
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; } }