如何将Outlook邮件附件作为输入流文件传递给AWS桶?

问题描述 投票:0回答:1

我想将我的Outlook电子邮件附件保存到AWS存储桶中。成功保存但无法查看,因为无法正确发送'Inputstream'。

我试图将电子邮件附件放入'HttpPostedFileBase'变量,但不是,因为它的对象将图像转换为inputstream

if (newEmail.Attachments.Count > 0)
                    {
                        for (int i = newEmail.Attachments.Count; i >= 1; i--)
                        {

                            HttpPostedFileBase postedFile = newEmail.Attachments;

                            newEmail.Attachments[i].SaveAsFile(@"E:\TestFileSave\" + newEmail.Attachments[i].FileName);

                            using (IAmazonS3 s3client = new AmazonS3Client(_awsAccessKey, _awsSecretKey, RegionEndpoint.USEast1))
                            {
                                PutObjectRequest putObjectRequest = new PutObjectRequest
                                {
                                    BucketName = _bucketName,
                                    CannedACL = S3CannedACL.PublicRead,//PERMISSION TO FILE PUBLIC ACCESIBLE
                                    Key = string.Format("Task/{0}", newEmail.Attachments[i].FileName),
                                    InputStream = postedFile.InputStream
                                };
                                s3client.PutObject(putObjectRequest);
                            }
                        }
                    }

如果只是那个电子邮件附件将转换为AWS需要的inputstream,那么图像将正确查看。

c# amazon-s3 outlook-addin
1个回答
0
投票

System.Net.AttachmentBase具有ContentStream属性,其类型为System.IO.Stream。这与PutObjectRequest上的InputStream属性类型相同,因此您应该能够使用各个附件的该属性来上载文件内容。

我目前没有办法验证这一点,但我认为你可以直接分配(putObjectRequest.InputStream = attachment.ContentStream)。

如果这不起作用,您应该能够将附件的内容,以及内容读入您自己的本地Stream,然后将其分配给PutObjectRequest。

© www.soinside.com 2019 - 2024. All rights reserved.