Не удалось найти сообщение rfc 822, которое работает с API миграции групп Google

Я пытаюсь использовать C# API Google Groups Migration, и мне не везет.

У меня есть следующий код:

var body =
@"Date: 16 Jul 07 10:12 GMT
From: samplesender@example.com
To: samplegroup@googlegroups.com


This is the body of the migrated email message.


";

var bytes = ASCIIEncoding.ASCII.GetBytes(body);

var messageStream = new MemoryStream(bytes);

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
    new ClientSecrets { ClientId = "<insert client id here>", ClientSecret = "<insert client secret here>" },
    new[] { "https://www.googleapis.com/auth/apps.groups.migration" },
    "user",
    CancellationToken.None,
    new FileDataStore("GroupsMigration.Auth.Store")).Result;

var service = new GroupsMigrationService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "group migration application"
});

var request = service.Archive.Insert("<insert valid group email here>", messageStream, "message/rfc822");

IUploadProgress uploadStatus = request.Upload();

if (uploadStatus.Exception != null)
{
    Console.WriteLine(uploadStatus.Exception.ToString());
}

Я продолжаю получать следующее исключение:

The service groupsmigration has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Unable to parse the raw message [400]
Errors [
   Message[Unable to parse the raw message] Location[ - ] Reason[invalid] Domain[global]
]

Согласно документации API миграции групп ( https://developers.google.com/admin-sdk/groups-migration/v1/reference/archive/insert см. Раздел responseCode в нижней части страницы), это означает, что сообщение Я пытаюсь мигрировать, отвергается как неправильно сформированный. Я пробовал много разных сообщений и всегда получаю одну и ту же ошибку -> Невозможно разобрать необработанное сообщение [400].

Кто-нибудь нашел сообщение, которое Миграция групп Google принимает и хочет поделиться? Что-то еще я делаю не так?

Любая помощь с благодарностью!

2 ответа

Решение

Нашел решение:

var body =
@"Date: 16 Jul 07 10:12 GMT
From: samplesender@example.com
To: samplegroup@googlegroups.com
Message-Id: <12345@acme.com>


This is the body of the migrated email message.


";

var bytes = ASCIIEncoding.ASCII.GetBytes(body);

var messageStream = new MemoryStream(bytes);

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
    new ClientSecrets { ClientId = "<insert client id here>", ClientSecret = "<insert client secret here>" },
    new[] { "https://www.googleapis.com/auth/apps.groups.migration" },
    "user",
    CancellationToken.None,
    new FileDataStore("GroupsMigration.Auth.Store")).Result;

var service = new GroupsMigrationService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "group migration application"
});

var request = service.Archive.Insert("<insert valid group email here>", messageStream, "message/rfc822");

IUploadProgress uploadStatus = request.Upload();

if (uploadStatus.Exception != null)
{
    Console.WriteLine(uploadStatus.Exception.ToString());
}

В итоге, если вы хотите, чтобы Google принял ваше сообщение, вы должны поместить заголовок идентификатора сообщения в следующем формате

Попробуйте добавить тему и идентификатор сообщения:

var body =
@"Date: 16 Jul 07 10:12 GMT
From: samplesender@example.com
To: samplegroup@googlegroups.com
Subject: test message
Message-Id: 1234@acme.com

This is the body of the migrated email message.

...
Другие вопросы по тегам