I\'m using Microsoft-Graph API version 1.4 and trying to send mail with multiple attachments (with size greater then 4MB) using following code..
val address = Ema
In order to add multiple attachments at once when their total size exceeds 4MB, you need:
Here is a code sample that does something along those lines
String draftSubject = "Draft Test Message " + Double.toString(Math.random()*1000);
User me = graphClient.me().buildRequest().get();
Recipient r = new Recipient();
EmailAddress address = new EmailAddress();
address.address = me.mail;
r.emailAddress = address;
Message message = new Message();
message.subject = draftSubject;
ArrayList<Recipient> recipients = new ArrayList<Recipient>();
recipients.add(r);
message.toRecipients = recipients;
message.isDraft = true;
//Save the message as a draft
Message newMessage = graphClient.me().messages().buildRequest().post(message);
File file = new File("src/test/resources/largefile10M.blob");
AttachmentItem attachmentItem = new AttachmentItem();
attachmentItem.attachmentType = AttachmentType.FILE;
attachmentItem.name = file.getName();
attachmentItem.size = file.length();
attachmentItem.contentType = "application/octet-stream";
InputStream fileStream = OutlookTests.class.getClassLoader().getResourceAsStream("largefile10M.blob");
long streamSize = attachmentItem.size;
UploadSession uploadSession = graphClient.me()
.messages(newMessage.id)
.attachments()
.createUploadSession(attachmentItem)
.buildRequest()
.post();
ChunkedUploadProvider<AttachmentItem> chunkedUploadProvider = new ChunkedUploadProvider<>(uploadSession, testBase.graphClient, fileStream,
streamSize, AttachmentItem.class);
// Do the upload
chunkedUploadProvider.upload(callback);
//Send the drafted message
graphClient.me().mailFolders("Drafts").messages(newMessage.id).send().buildRequest().post();
Here is a sample implementation for the callback.
IProgressCallback<AttachmentItem> callback = new IProgressCallback<AttachmentItem> () {
@Override
public void progress(final long current, final long max) {
//Check progress
}
@Override
public void success(final AttachmentItem result) {
//Handle the successful response
}
@Override
public void failure(final ClientException ex) {
//Handle the failed upload
}
};