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