2016-09-08 3 views
1

私はSendGrid私のC#APIに生のMIMEメッセージとして投稿メールを投稿しています。 Here is an example of the raw payload入ってくるMIMEメッセージからExcel添付ファイルを開き、行と列のデータを読むことができるようにします。ReadはSendGridによって送信された生のMIMEメッセージからC#の添付ファイルデータを拝受します

APIはポストを受信すると、私は(私たちはここでしか.xlsx形式の添付ファイルを扱っていると仮定)、次のように添付ファイルを処理するためにMimeKitを使用します。

GenerateStreamFromStringは次のように定義されて
using (var emailSream = GenerateStreamFromString(emailString)) 
{ 
    var msg = MimeMessage.Load(emailSream); 

    foreach (var attachment in msg.Attachments) 
    { 
     // I want to be able to read the columns and rows of the excel sheet here. 
     // I am already able to skip over any non-excel type attachments without issue. 
    } 
} 

private Stream GenerateStreamFromString(string s) 
{ 
    MemoryStream stream = new MemoryStream(); 
    StreamWriter writer = new StreamWriter(stream); 
    writer.Write(s); 
    writer.Flush(); 
    stream.Position = 0; 
    return stream; 
} 
私は、添付ファイルのストリームをロードしようとしている

Excel Data Readerへ:

using (var attachmentStream = ((MimePart)attachment).ContentObject.Stream) 
{ 
    IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(attachmentStream); 
    // Reader has "Cannot Find Central Directory" error. 
} 

var attachmentStream = ((MimePart)attachment).ContentObject.Stream 
using (ExcelPackage package = new ExcelPackage(attachmentStream)) 
{ 
    // Errors are thrown before we get here. 
} 

としてだけでなく、しかし、両方のパッケージは、私はMIMEメッセージから適切にデータ・ストリームを取得していない午前と信じて私をリードされ、エラーをスローします。

ご協力いただきありがとうございます。

答えて

2

Doh!添付ファイルをデコードする必要があります(SendGridは私のエンコード情報を提供しただけで、うまく聞きませんでした)。

問題が解決しました。

関連する問題