public MimePartResponseMessage(HttpRequestMessage requestMessage, IMimeContent contentObject)
        {
            _tempFilePath = Path.GetTempFileName();

            RequestMessage = requestMessage;

            using (var tempFile = File.OpenWrite(_tempFilePath))
            {
                contentObject.DecodeTo(tempFile);
            }
            Content = new StreamContent(File.OpenRead(_tempFilePath));
        }
Beispiel #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MimeKit.MimePart"/> class
        /// with the specified media type and subtype.
        /// </summary>
        /// <remarks>
        /// Creates a new <see cref="MimePart"/> with the specified media type and subtype.
        /// </remarks>
        /// <param name="mediaType">The media type.</param>
        /// <param name="mediaSubtype">The media subtype.</param>
        /// <param name="args">An array of initialization parameters: headers and part content.</param>
        /// <exception cref="System.ArgumentNullException">
        /// <para><paramref name="mediaType"/> is <c>null</c>.</para>
        /// <para>-or-</para>
        /// <para><paramref name="mediaSubtype"/> is <c>null</c>.</para>
        /// <para>-or-</para>
        /// <para><paramref name="args"/> is <c>null</c>.</para>
        /// </exception>
        /// <exception cref="System.ArgumentException">
        /// <para><paramref name="args"/> contains more than one <see cref="MimeKit.IMimeContent"/> or
        /// <see cref="System.IO.Stream"/>.</para>
        /// <para>-or-</para>
        /// <para><paramref name="args"/> contains one or more arguments of an unknown type.</para>
        /// </exception>
        public MimePart(string mediaType, string mediaSubtype, params object[] args) : this(mediaType, mediaSubtype)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            IMimeContent content = null;

            foreach (object obj in args)
            {
                if (obj == null || TryInit(obj))
                {
                    continue;
                }

                var co = obj as IMimeContent;
                if (co != null)
                {
                    if (content != null)
                    {
                        throw new ArgumentException("ContentObject should not be specified more than once.");
                    }

                    content = co;
                    continue;
                }

                var stream = obj as Stream;
                if (stream != null)
                {
                    if (content != null)
                    {
                        throw new ArgumentException("Stream (used as content) should not be specified more than once.");
                    }

                    // Use default as specified by ContentObject ctor when building a new MimePart.
                    content = new MimeContent(stream);
                    continue;
                }

                throw new ArgumentException("Unknown initialization parameter: " + obj.GetType());
            }

            if (content != null)
            {
                Content = content;
            }
        }
Beispiel #3
0
        public static void SavePvReport(string reportFileName, IMimeContent reportMimeContent)
        {
            var subDirectory = CheckPvReportType(reportFileName);
            var directory    = Path.Combine(PvReportRepositoryPath, subDirectory);

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            using (var fs = new FileStream(Path.Combine(directory, reportFileName), FileMode.Create))
            {
                reportMimeContent.DecodeTo(fs);
            }
        }
        public SaveResult downloadAttachment(IMimeContent content, string fileName)
        {
            FileStream stream = null;
            var        log    = log0(fileName, content);
            var        logE   = logE0(fileName, content);

            var absoluteFileName = Path.Combine(
                assertDirectoryExists(Path.Combine(this.downloadFolder)),
                fileName);

            try
            {
                stream = File.Open(absoluteFileName, FileMode.Create);
                content.DecodeTo(stream);
                log("+");
                return(SaveResult.Ok);
            }
            catch (NullReferenceException nre)
            {
                log("-");
                logE("Failed to write attachment to file. (filename = {0}) {2}", nre);
            }
            catch (NotSupportedException nse)
            {
                log("-");
                logE("The specified filename ({0}) is not valid on this filesystem. {2}", nse);
            }
            catch (IOException)
            {
                log("="); // file already exists
            }
            finally
            {
                try
                {
                    if (stream != null)
                    {
                        stream.Close();
                    }
                }
                catch (Exception)
                {
                    //ignore
                }
            }

            return(SaveResult.Error);
        }
Beispiel #5
0
        private MimePart CreateMimePart(string mediaType, string mediaSubtype, string filename, params Header[] headers)
        {
            var contentType = new MimeKit.ContentType(mediaType, mediaSubtype);

            IMimeContent contentObject = A.Fake <IMimeContent>();

            A.CallTo(() => contentObject.Stream).Returns(new MemoryStream());

            MimePart mimePart = new MimePart(contentType)
            {
                FileName = filename,
                Content  = contentObject
            };

            foreach (Header header in headers)
            {
                mimePart.Headers.Add(header);
            }

            return(mimePart);
        }
Beispiel #6
0
        private void ParseBodyParts(IEnumerable <MimeEntity> bodys, string imgFolder, ref List <string> imgList, ref List <string> imgSourceList)
        {
            int flag = 0;

            try
            {
                foreach (MimeEntity entity in bodys)
                {
                    flag++;
                    ContentType type      = entity.ContentType;
                    string      mediaType = type.MediaType;
                    string      mimeType  = type.MimeType;
                    if (mediaType != "image")
                    {
                        continue;
                    }

                    MimePart     part     = entity as MimePart;
                    string       fileName = part.FileName;
                    IMimeContent content  = part.Content;
                    string       postfix  = "";
                    MemoryStream stream   = new MemoryStream();
                    content.WriteTo(stream);
                    stream.Position = 0;
                    StreamReader reader     = new StreamReader(stream, Encoding.UTF8);
                    string       Base64Text = reader.ReadToEnd();
                    imgSourceList.Add(Base64Text);

                    if (imgFolder != null && imgFolder != "")
                    {
                        byte[] arr2 = Convert.FromBase64String(Base64Text);
                        using (MemoryStream ms2 = new MemoryStream(arr2))
                        {
                            ImageFormat format = ImageFormat.Jpeg;
                            Bitmap      bmp2   = new Bitmap(ms2);
                            switch (mimeType)
                            {
                            case "image/gif":
                            {
                                format  = ImageFormat.Gif;
                                postfix = ".gif";
                                break;
                            }

                            case "image/x-ms-bmp":
                            {
                                format  = ImageFormat.Bmp;
                                postfix = ".bmp";
                                break;
                            }

                            case "image/x-png":
                            {
                                format  = ImageFormat.Png;
                                postfix = ".png";
                                break;
                            }

                            case "image/jpeg":
                            {
                                format  = ImageFormat.Jpeg;
                                postfix = ".jpeg";
                                break;
                            }

                            default:
                            {
                                break;
                            }
                            }
                            DateTime time     = DateTime.Now;
                            string   filename = time.ToString("yyyyMMddHHmmssms");
                            string   filepath = imgFolder + "\\" + filename + flag + postfix;
                            bmp2.Save(filepath, format);
                            imgList.Add(filepath);
                            bmp2.Dispose();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }