2017-12-28 4 views
1

Azure Timer 트리거 기능이 있는데이 기능은 Excel 파일을 생성하며 전자 메일을 통해 첨부 파일로 보내야합니다. 내가 수행 한 성공적으로 다음 -Azure Blob에있는 파일에 액세스 Azure 타이머 트리거 기능

  1. 파일을 생성하고

(려면 SmtpClient 및은 MailMessage 사용) 첨부 파일없이 푸른 덩어리로

  • 보낸 이메일을 그것을 업로드 어떻게 할 수 Azure BLOB에서 파일을 가져 와서 첨부 파일로 보냅니 까?

    P. 파일을 Azure의 로컬 저장소에 저장할 때 파일을 첨부 파일로 보낼 수있었습니다. 그러나 파일 저장 공간을 Azure BLOB로 이동하고 싶습니다.

  • +0

    제대로 이해하면 함수에서 로컬로 파일을 만든 다음 해당 파일을 BLOB 저장소에 업로드하는 것입니다. 옳은? 그렇다면 왜 로컬 파일을 이메일에 첨부 할 수 없습니까? –

    +0

    @GauravMantri 아니요, BLOB에 업로드하기 전에 파일을 로컬에 저장하지 않습니다. 바이트 배열을 BLOB에 직접 업로드하고 있습니다. – Raj

    +0

    이 답변을 참조하십시오 : https://stackoverflow.com/questions/5336239/attach-a-file-from-memorystream-to-a-mailmessage-in-c-sharp. 본질적으로 바이트 배열에서 메모리 스트림을 생성합니다. –

    답변

    1

    Azure BLOB에서 파일을 가져 와서 첨부 파일로 보내려면 어떻게해야합니까?

    // Save blob contents to a file. 
    using (var fileStream = System.IO.File.OpenWrite(@"path\myfile")) 
    { 
        blockBlob.DownloadToStream(fileStream); 
    } 
    

    를 그런 다음 당신은 당신의 Attachment을 만들 수 : 다음과 같이 나의 이해 당

    , 당신은 당신의 기능에 임시 로컬 파일로 덩어리를 다운로드 할 수

    System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment("{file-path}"); 
    

    또는 BLOB를 MemoryStream에 다음과 같이 직접 다운로드 할 수 있습니다.

    using (var memoryStream = new MemoryStream()) 
    { 
        blockBlob2.DownloadToStream(memoryStream); 
        memoryStream.Position = 0; 
        System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(memoryStream , "{contentType}"); 
    } 
    

    자세한 내용은 Download blobs을 참조하십시오.