問題タブ [google-email-migration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-email-migration - Google Email Migration API で直面している問題
Google Email Migration API を使用して、メールを Yahoo メールボックスから Gmail に移行しています。
Google Email Migration API を使用して、特定のユーザーのアクセス トークンを取得し、以下の API を使用してメールを移行しています。
https://www.googleapis.com/upload/email/v2/users/somemailid@gmail.com/mail?uploadType=multipart
上記の API にマルチパート リクエストを送信すると、次のような応答が返されます。
MIME パーツが 0 の無効なマルチパート リクエストです。
これを解決する方法を教えてください。
google-api - Google.Apis.Email_Migration_v2
すべての UploadAsync メソッド呼び出しから HttpStatusCode を取得しようとしています。指数バックオフ アルゴリズムを適切に実行して失敗したアップロードを再試行し、アップロードを再試行しないときにユーザーにエラー メッセージを表示し、アップロードの成功を報告するには、ステータス コードが必要です。以下のリンクで提案されている Tor Jonsson のように、それがクリーンで Exception.Message (文字列) プロパティから解析されていない限り、どのように受信されるかは気にしません。
「Bad Request Error [400]」を強制するために、MailResource.InsertMediaUpload のコンストラクターで無効なユーザーキー (電子メール) を提供しただけです。
例: MailResource.InsertMediaUpload(mailItem, "invalidEmail@domain.com" , stream, "message/rfc822")
問題
1) GoogleApiException.HttpStatusCode は常に 0 (使用不可) です。Exception.Message に括弧内のステータス コードが含まれているように見える場合でも。例[400]
2) GoogleApiRequestException が見つかりません。
質問
1) 指数バックオフ アルゴリズムを実行する最良の方法は何ですか?
2) この場合、これはこのプロパティの予想される動作ですか?
3) GoogleApiRequestException はまだ存在しますか?
補足:
GoogleApiRequestException クラスが GoogleApiException クラスと同じファイルに含まれていないことにも気付きました。別の名前空間に移動または削除されましたか? GoogleApiRequestException オブジェクトをキャッチして、その RequestError オブジェクトを取得したいからです。
私が何を意味するかについて、2 つの diff へのリンクを追加し
ました
。 : http://code.google.com/p/google-api-dotnet-client/source/browse/Src/GoogleApis/GoogleApiException.cs?r=d6f06e92d90b635c179013e2c287b42b82909c09
ソース
NuGet (1.6.0.8-beta) の最新のバイナリを使用しています
私の問題に関連して見つけた唯一の質問:(2つのリンクしか投稿できません...ここに生のものがあります )
コード: (カスタム ロガーを使用して debugview に書き込む)
出力スニペット
[5224] (T101) VSLLC: 例外!!! タイプ: Google.GoogleApiException
[5224] (T101) VSLLC: GoogleApiException-> メッセージ: Google.Apis.Requests.RequestError
[5224] Bad Request [400]
[5224] Errors [
[5224] Message[Bad Request] Location[ - ] Reason[badRequest] Domain[global]
[5224] ]
[5224] (T101) VSLLC: GoogleApiException-> Status Code: 0
[5224] (T101) VSLLC: Upload Completed... Status: Failed Exception?: サービス管理者が例外がスローされました: Google.GoogleApiException: Google.Apis.Requests.RequestError
[5224] Bad Request [400]
[5224] Errors [
[5224] Message[Bad Request] Location[ - ] Reason[badRequest] Domain[global]
[5224 ] ] ]
[5224]
[5224] Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (タスク タスク)
で [5224] Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess (タスク タスク)
で [5224] Microsoft.Runtime.CompilerServices.TaskAwaiter.ValidateEnd で(Task task)
[5224] at Google.Apis.Upload.ResumableUpload`1.d__0.MoveNext() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release \bin\Debug\output\default\Src\GoogleApis\Apis[Media]\Upload\ResumableUpload.cs:373行目
長文投稿失礼します!御時間ありがとうございます!
google-apps-script - Google Apps Script と Google 移行 API
私は初心者ですが、Google Apps Script で次のことを行うコードを作成したいと考えています。
までやったstep 3
。4th part
スルーコーディングの方法がわかりません。誰でも提案できますか
google-apps-script - Google Apps Script を使用した Google Apps アカウントでのメールの移行
Google Apps スクリプトを使用して、ある Google Apps アカウントから別の Google Apps アカウントにメールを移行したいのですが、これを実現する方法を知っている人がいたら教えてください。
google-admin-sdk - 現在のアカウント以外のドメイン名で送信者メール (リクエスト) を追加する
合併により、ある Google Apps アカウントの下にドメイン A があり、別のアカウントの下にドメイン B があります。ドメイン B のすべてのユーザーのアカウントをドメイン A に作成して、後で移行を開始できます。アカウント A のドメインにエイリアスを追加することは問題ありません。
ただし、ドメイン B のアカウントとして電子メールを送信する (ユーザーは自分のアカウントで手動で要求できます。ドメイン B のアカウントには、許可するかどうかの質問がメールで送信されます) は、 Admin SDKでは可能ではないようです:
ホストされているドメインにユーザーまたはエイリアスとして存在する任意の電子メール アドレス。
他のユーザー/電子メール アドレスとしてメールを送信できるように手動で要求するときに、ユーザーが入力するプロセスを開始する方法はありますか?
ドメインを別の Google Apps アカウントに追加できるようにするには、ドメインを完全にシャットダウンする必要があるようです。
c# - Google.Apis.Admin.Email_Migration_v2 [HTTP ステータス コード 412 – 制限に達しました]
編集2:
クライアント ライブラリ:確認したところ、これが .NET クライアント ライブラリ用であるとは簡単には言えません。
DLL: Google.Apis.Admin.email_migration_v2.dll
問題を再現する手順は何ですか?
メッセージが送信される一意の Google Apps Gmail メールボックスごとに、Google.Apis.Admin.email_migration_v2.AdminService インスタンスを含むプロセスを生成します。生成されたすべての AdminService オブジェクトは、同じ OAuth2.0 資格情報とアプリケーション名を使用します。生成された各 AdminService オブジェクトは、1 人の Google Apps ユーザーのメールボックスにのみメッセージを送信します。たとえば、5 つの異なる Google Apps Gmail メールボックスにメッセージを送信する場合、メッセージを送信するために 5 つの AdminService オブジェクトを生成します。各ユーザーのメールボックスに 1 つ。
最も注意すべき点は、作成される各 AdminService オブジェクトが個別のプロセスで作成されることです。
AdminService オブジェクトには、リフレッシュ トークンが保存される場所を変更するための FileDataStore オブジェクトが与えられました。C:\ProgramData\SomeFile\SomeFile.
資格情報に適切なスコープを提供しました。
各プロセスでメール メッセージの送信を開始します。各プロセスで 1 つのスレッドを使用してメッセージを送信するため、一度に 1 つのメッセージのみが各ユーザーのメールボックスに送信されます。
送信された各メッセージは、MailItem と MailResource.InsetMedia の独自のインスタンスを取得します。
MailResource.InsertMedia オブジェクトは、AdminService.Mail.Insert(MailItem, string, Stream, string) メソッドを呼び出すことによって、アイテムごとに生成されます。
コードが MailResource.InsertMediaUpload.UploadAsync(CancellationTokenSource).Result を呼び出すと、エラーを受け取ることができます。
- エラーは、前述の呼び出しの戻り値の型からキャッチされ、処理 (ログに記録) されます。タイプは Google.Apis.Upload.IUploadProgress です。例外は、IUploadProgress.Exception プロパティを使用して処理されます。
期待される出力は何ですか?代わりに何が見えますか?
予想される出力は、成功メッセージの応答、またはタスクのリターン後に IUploadProgress の例外プロパティが null になることです。代わりに、次のエラー メッセージが表示されます。
サービス管理者が例外をスローしました: Google.GoogleApiException:Google.Api.Requests.RequestError
限界に達しました。[412] エラー [メッセージ[制限に達しました。] 場所[If-Match - ヘッダー] 理由[条件が満たされていない] ドメイン[グローバル]]
Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (タスク タスク) で
Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess (タスク タスク) で
Google.Api.Upload.ResumableUpload`1.d__e.MoveNext() で
使用している製品のバージョンは何ですか?
- Google.Apis.Admin.Email_Migration_v2 (1.8.1.20)
お使いのオペレーティング システムは何ですか?
- Windows Server 2008 R2 エンタープライズ (SP1)
あなたのIDEは何ですか?
- Visual Studio 2013 プレミアム
.NET フレームワークのバージョンは?
- 4.0.30319
以下の追加情報を提供してください。
連続していないメッセージは、メッセージの送信プロセス中に (上記の 412 http ステータス コードで) 失敗する可能性があります。このエラーを受け取ると、失敗したメッセージの後に送信された他のメッセージは成功する可能性があります。(アイテムは、プロセスの開始、中間、または終了のどの時点でも失敗する可能性があります。)
送信される各メッセージの内容はほぼ同じです。メッセージのサイズは、関連するすべての添付ファイルのサイズを含めて 1KB から 100KB の範囲であり、すべてのメッセージに添付ファイルがあるわけではありません。
失敗したアイテムを後で再処理すると、メッセージの応答が成功し、適切なアイテムがユーザーの Google Apps Gmail 受信トレイに送信されます。
一度に送信される Google Apps ユーザーのメールボックスの最大数は 10 でした。
Google Developers Console プロジェクトのクォータを確認した後:
Email Migration API で指定された 1 秒あたり 20 リクエストの制限にはほど遠いものでした。1 秒間に 7 回のリクエストを送信することで最大になりました。
1 日の最大リクエスト数の 2% にしか達していませんでした。
送信されたすべてのメッセージには同じラベルが付いていました。ラベルは 225 文字の制限を大幅に下回っていました。実際には、一緒に適用されたすべてのラベル/サブラベルは 40 文字に過ぎませんでした。
このエラー メッセージは、1 人の Google Apps ユーザーのメールボックスにのみ送信した場合でも受信されることがあります。1 つのプロセスと 1 つのスレッドのみを使用します。
通常、各プロセスは 1000 ~ 5000 のメッセージを送信しています。
この特定のエラーを詳細に説明して、目前の問題を解決するための特定のドキュメントはあまり見つかりませんでした。
質問:
- では、この 412 http ステータス コードは正確には何を意味するのでしょうか? このメッセージが参照している制限は何ですか?
- 制限に達している場合、サーバーから何らかの形式の 5XX エラーを受け取るべきではありませんか? どのような場合に、組み込みの指数バックオフ ポリシーが適用されないのでしょうか?
- を。サーバーがサーバー側の制限に関する前提条件について POST 要求をチェックしていない限り、412 エラーが通常示しているように、クライアントにバックオフするように指示します。その場合、質問 1 についてできるだけ詳しく説明してください。
長文投稿失礼します!御時間ありがとうございます!また、Google の .NET イシュー トラッカーで欠陥/問題を作成し、リンクを提供します。
編集1:
この問題を追跡することに関心のある方は、Google の .NET 用イシュー トラッカーに送信された項目へのリンクを以下に示します。 提出された問題
参考までに492号です。