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;
}
私は、添付ファイルのストリームをロードしようとしている
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メッセージから適切にデータ・ストリームを取得していない午前と信じて私をリードされ、エラーをスローします。
ご協力いただきありがとうございます。