Я пытаюсь отправить сообщение с вложением через 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.