Пример #1
0
        /// <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);
        }
Пример #2
0
        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());
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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();
        }