Gmail APIを使用して添付ファイル付きのメッセージドラフトを作成し、GmailにアップロードするC#WinFormsアプリケーションを作成しました。これは数か月前までうまくいきました。そのコードは次のとおりです。C#デスクトップアプリケーションのDrafts用の再開可能なアップロード
上記のコードは、ドラフトメッセージのサイズが1 MB未満の場合にのみ機能します。
Google.GoogleApiException: Google.Apis.Requests.RequestError
Request payload size exceeds the limit: 1048576 bytes. [400]
私はそれが今1メガバイトを超える添付ファイル付きのドラフトをアップロードするためresumable upload protocolを使用する必要がありますように、GoogleはそのAPIを変更することを信じています。メッセージ/添付ファイルがこの制限を超えた場合、コードは次のエラーを発行します。
次に上記のコードの最後の行は、再開可能アップロードプロトコルをサポートアップロードを可能にするCreateMediaUpload Class Referenceを使用過
service.Users.Drafts.Create(draft, "me", stream, @"message/rfc822");
を有しています。しかし、ドラフト本体の作成方法やストリームのコード方法に関係なく、このオーバーロードを正しく使用して、任意のサイズのドラフトを作成してアップロードすることはできませんでした。このオーバーロードが機能するようにコードを構造化する正しい方法は何でしょうか?または、Gmail APIからの再開可能なアップロードプロトコルを使用して、C#デスクトップアプリケーションからの添付ファイル付きドラフトメッセージをアップロードする他の方法はありますか?すべての助けは非常に感謝しています。
更新
私は添付ファイルを追加する2行のコードを削除した場合、このコード行:
service.Users.Drafts.Create(draft, "me", stream, @"message/rfc822").Upload();
は、Gmailのそのボディテキストで草案が作成されます。しかし、私が考えることのできるものは、このオーバーロードを使用してドラフトの添付ファイルを作成および/またはストリーミングするものではありません。私はマルチパートのMIMEメッセージ、ファイルストリーム、メモリストリーム、および添付ファイルのbase64エンコーディングの有無にかかわらず試してみました。これまで読んでくれてありがとう。
最後に、@ message/rfc822をGetMimeType(_uploadFile)に変更してみてください。 – DaImTo
@DaImToの提案を歓迎しますが、これを動作させることはできません。 'stream.ReadTimeout'と' stream.WriteTimeout'に対する 'System.InvalidOperationException'です。私はストリームとドラフトのボディーがどう関係しているのだろうと思っています。ドラフト・ボディには何が流れているのか正確には何が流れているのですか?これはマルチパートのMIMEメッセージである必要がありますか?アップロードを再開可能と宣言する別の方法はありますか?これらの質問やその他の質問を引き続き検討します。 – joeschwa
私はtbhを覚えていません私はそれを把握しようとしているライブラリのコードを掘り下げています:) – DaImTo