Как передать почтовое вложение outlook как файлы inputtream в корзину AWS? - PullRequest
0 голосов
/ 10 апреля 2019

Я хотел бы сохранить вложения электронной почты 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);
                            }
                        }
                    }

, если только те вложения электронной почты преобразуются в inputstream, что необходимо AWS, тогда изображения будут отображаться правильно.

1 Ответ

0 голосов
/ 10 апреля 2019

System.Net.AttachmentBase имеет свойство ContentStream, которое имеет тип System.IO.Stream.Это тот же тип, что и у свойства InputStream в PutObjectRequest, поэтому вы должны иметь возможность использовать это свойство отдельных вложений для загрузки содержимого файла.

У меня нет средств для проверки этого на данный момент, но я думаю, что вы могли бы просто выполнить прямое назначение (putObjectRequest.InputStream = attachment.ContentStream).

Если это не такне работает, вы должны быть в состоянии прочитать содержимое вложений, ну, в общем, содержимое в свой локальный поток, а затем назначить его для PutObjectRequest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...