Java MS Graph SDK Опубликовать сообщение с приложением - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь отправить сообщение с вложением через Microsoft Graph Sdk для Java.

Это работает при первом создании черновика, а затем просто опубликовать вложение, но я не могу заставить его работать, чтобы опубликоватьсообщение напрямую с вложением.

Я использую MS Graph SDK Java в Версия 1.4.0

График Документация четко заявляет, что это должно быть возможно:

В одном и том же вызове действия sendMail вы можете:

  • Включить вложение

Это то, что я пробовал до сих пор:

(getClient() Возвращает действительный аутентифицированный объект IGraphServiceClient, код которого я пропустил, так как это добавило бы слишком много накладных расходов и не предоставило никакого значения для вопроса -см. страницу GitHub для примеров того, как выполнить процесс аутентификации)

<!-- language: Java -->
// New message object
Message message = new Message();

// User email address object
EmailAddress senderEmailAddress = new EmailAddress();
senderEmailAddress.address = this.getProfile().getEmail();
senderEmailAddress.name = this.getProfile().getDisplayName();

// Set sender, from
Recipient from = new Recipient();
from.emailAddress = senderEmailAddress;
message.from = from;
message.sender = from;

message.toRecipients = new ArrayList<Recipient>();
EmailAddress ea = new EmailAddress();
ea.address = e;
Recipient recipient = new Recipient();
recipient.emailAddress = ea;
message.toRecipients.add(recipient);

// Set subject
message.subject = email.getSubject();

// Set body
ItemBody itemBody = new ItemBody();
itemBody.content = email.getBody();
itemBody.contentType = BodyType.HTML;

//Critical part
File a = new File("test.txt");
FileAttachment fileAttachment = new FileAttachment();
fileAttachment.name = a.getFilename();
byte[] src = FileUtils.readFileToByteArray(a);
//Encode base64
fileAttachment.contentBytes = ByteArraySerializer.serialize(src).getBytes();
fileAttachment.oDataType = "#microsoft.graph.fileAttachment";
fileAttachment.id = a.getName();
fileAttachment.size = src.length;
fileAttachment.contentType = "text/plain";
fileAttachment.isInline = false;

message.hasAttachments = true;
AttachmentCollectionResponse response = new AttachmentCollectionResponse();
response.value = Arrays.asList(fileAttachment);
message.attachments = new AttachmentCollectionPage(response, null);

getClient().me().sendMail(message, true).buildRequest().post();

Я думаю, это связано с тем, как я его добавляю.AttachmentCollectionResponsePage кажется не правильным способом сделать это.В примере C # из здесь я могу видеть, что существует конструктор без параметров, где в Java его нет.

Сообщение успешно отправлено и сохранено в папке отправленных элементов, но естьНет привязанности к нему.

Буду признателен за любую помощь или идеи!

ОБНОВЛЕНИЕ: Тем временем я обнаружил связанную проблему GitHub для этого.На данный момент исправлено в ветви , но еще не включено в текущую версию 1.5.0.

...