1

**別のスタック オーバーフローの投稿にある例を実行しても、いくつかのことを試しましたが、同じエラー メッセージが表示され続けます。メッセージから直接バイト配列を使用してみました。そして、取得して ASCCII に変換し、バイトに戻します。<> ブラケットを使用したメッセージ ID があります。

以下は私のコードのほとんどです。

using Google.Apis.Admin.Directory.directory_v1;
using Google.Apis.Auth.OAuth2;
using Google.Apis.GroupsMigration.v1;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace GoogleEmailMigration
{
 class Program
 {
    [STAThread]
    static void Main(string[] args)
    {
        /*
         * The purpose of this tool is to migrate users into groups in the google business panel
         */
        Console.WriteLine("Group Migration Tool Using Google Client");
        Console.WriteLine("====================");
        try
        {
            UserCredential credential;
            var one =FillCredential();
            one.Wait();
            credential = one.Result;

            MigrationDetails detail = new MigrationDetails()
            {
                EmailUserName = "***",
                Domain = "****",
                GroupName = "***",
                Password = "***"
            };
            
            detail.LoadGroupId(credential);

            var service = new GroupsMigrationService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "Switched On migration tool",
            });
   
                /*Download all emails messages */
                GmailMessageProxy proxy = new GmailMessageProxy(){UserName = detail.EmailUserName+"@"+detail.Domain, Password=detail.Password};
                proxy.ActOnMessagesText((message) =>
                {
                    using (var mem = new MemoryStream(ASCIIEncoding.ASCII.GetBytes(message)))
                    {
                       mem.Seek(0, SeekOrigin.Begin);

                       var uploadObject = service.Archive.Insert(detail.GroupId,mem,"message/rfc822");
                       var result = uploadObject.Upload();
                       Console.WriteLine("Status:");
                       Console.WriteLine(result.Status);
                       Console.WriteLine("Bytes:");
                       Console.WriteLine(result.BytesSent);
                       Console.WriteLine("Exception");
                       Console.WriteLine(result.Exception.Message);
                    }
                }
                    , (ex) => Console.WriteLine(ex));          
            
        }
        catch (AggregateException ex)
        {
            foreach (var e in ex.InnerExceptions)
            {
                Console.WriteLine("ERROR: " + e.Message);
            }
        }
        Console.WriteLine("Press any key to continue...");
        Console.ReadKey();
    }

    private static async Task<UserCredential> FillCredential()
    {
        UserCredential credential;
        using (var stream = new FileStream(@"***", FileMode.Open, FileAccess.Read))
        {
            credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                new[] { @"https://www.googleapis.com/auth/apps.groups.migration", DirectoryService.Scope.AdminDirectoryGroupReadonly, DirectoryService.Scope.AdminDirectoryUserReadonly, DirectoryService.Scope.AdminDirectoryUserschemaReadonly },
                "user", CancellationToken.None, new FileDataStore("GroupsMigration"));
        }
        return credential;
    }

}

}

4

1 に答える 1

1

上記のコードのこの行が間違っていることをなんとか解決しました

var uploadObject = service.Archive.Insert(detail.GroupId,mem,"message/rfc822");

groupid を送信する代わりにグループ メールを使用すると、Google ページで提供されている例で API の説明が間違っていました。

エラー 500 は問題を説明するものではありませんが、多くの試行錯誤の結果、これらが私の発見でした。

于 2014-10-28T21:09:16.300 に答える