/// <summary> /// Retrs the mail message ex. /// </summary> /// <param name="item">The item.</param> /// <returns></returns> public MailMessageEx RetrMailMessageEx(Pop3ListItem item) { MailMessageEx message = RetrMimeEntity(item).ToMailMessageEx(); message.MessageNumber = item.MessageId; return(message); }
public MailMessageEx Top(int messageId, int lineCount) { if (messageId < 1) { throw new ArgumentOutOfRangeException("messageId"); } if (lineCount < 0) { throw new ArgumentOutOfRangeException("lineCount"); } RetrResponse response; using (TopCommand command = new TopCommand(_clientStream, messageId, lineCount)) { response = ExecuteCommand <RetrResponse, TopCommand>(command); } MimeReader reader = new MimeReader(response.MessageLines); MimeEntity entity = reader.CreateMimeEntity(); MailMessageEx message = entity.ToMailMessageEx(); message.Octets = response.Octets; message.MessageNumber = messageId; return(entity.ToMailMessageEx()); }
/// <summary> /// Creates the mail message from entity. /// </summary> /// <param name="entity">The entity.</param> /// <returns></returns> public static MailMessageEx CreateMailMessageFromEntity(MimeEntity entity) { MailMessageEx message = new MailMessageEx(); string value; foreach (string key in entity.Headers.AllKeys) { value = entity.Headers[key]; if (value.Equals(string.Empty)) { value = " "; } HY.Common.Utility.Utils.Logger.Log.Debug("key=" + key + "\t\t\t(thread-topic在日立会有乱码,导致exception,目前只是简单skip)"); HY.Common.Utility.Utils.Logger.Log.Debug("value=" + value); if (key.ToLowerInvariant().IndexOf("thread-topic") == -1) //thread-topic的value如是中文,在日立出现了乱码,而不是编码后的东东。既然thread-topic在邮件审批中肯定用不到,所以先忽略之 { message.Headers.Add(key.ToLowerInvariant(), value); } switch (key.ToLowerInvariant()) { case MailHeaders.Bcc: MailMessageEx.PopulateAddressList(value, message.Bcc); break; case MailHeaders.Cc: MailMessageEx.PopulateAddressList(value, message.CC); break; case MailHeaders.From: message.From = MailMessageEx.CreateMailAddress(value); break; case MailHeaders.ReplyTo: message.ReplyTo = MailMessageEx.CreateMailAddress(value); break; case MailHeaders.Subject: message.Subject = value; break; case MailHeaders.To: MailMessageEx.PopulateAddressList(value, message.To); break; } } return(message); }
/// <summary> /// Creates the mail message from entity. /// </summary> /// <param name="entity">The entity.</param> /// <returns></returns> public static MailMessageEx CreateMailMessageFromEntity(MimeEntity entity) { MailMessageEx message = new MailMessageEx(); string value; foreach (string key in entity.Headers.AllKeys) { value = entity.Headers[key]; if (value.Equals(string.Empty)) { value = " "; } message.Headers.Add(key.ToLowerInvariant(), value); switch (key.ToLowerInvariant()) { case MailHeaders.Bcc: MailMessageEx.PopulateAddressList(value, message.Bcc); break; case MailHeaders.Cc: MailMessageEx.PopulateAddressList(value, message.CC); break; case MailHeaders.From: message.From = MailMessageEx.CreateMailAddress(value); break; case MailHeaders.ReplyTo: message.ReplyTo = MailMessageEx.CreateMailAddress(value); break; case MailHeaders.Subject: message.Subject = value; break; case MailHeaders.To: MailMessageEx.PopulateAddressList(value, message.To); break; } } return(message); }
/// <summary> /// Write the HTML to a temporary file and render it to the HTML view /// </summary> private void SetBrowserDocument(MailMessageEx mailMessageEx) { //double d = new Random().NextDouble(); string tempPath = Path.GetTempPath(); string htmlFile = Path.Combine(tempPath, "papercut.htm"); string htmlText = mailMessageEx.Body; foreach (var attachment in mailMessageEx.Attachments) { if ((!string.IsNullOrEmpty(attachment.ContentId)) && (attachment.ContentStream != null)) { string fileName = Path.Combine(tempPath, attachment.ContentId); using (var fs = File.OpenWrite(fileName)) { int Length = 256; Byte[] buffer = new Byte[Length]; int bytesRead = attachment.ContentStream.Read(buffer, 0, Length); // write the required bytes while (bytesRead > 0) { fs.Write(buffer, 0, bytesRead); bytesRead = attachment.ContentStream.Read(buffer, 0, Length); } fs.Close(); } htmlText = htmlText .Replace(String.Format("cid:{0}", attachment.ContentId), attachment.ContentId) .Replace(String.Format("cid:'{0}'", attachment.ContentId), attachment.ContentId) .Replace(String.Format("cid:\"{0}\"", attachment.ContentId), attachment.ContentId); } } using (TextWriter f = new StreamWriter(htmlFile, false, mailMessageEx.BodyEncoding)) f.Write(htmlText); htmlView.Navigate(new Uri(htmlFile)); htmlView.Refresh(); }