-
Notifications
You must be signed in to change notification settings - Fork 3
Description
Describe the bug
I am trying to send a Mail with an Image-Attachment via the Graph SDK. This is what my Test-Code looks like:
import { ClientSecretCredential } from "@azure/identity";
import { AzureIdentityAuthenticationProvider } from "@microsoft/kiota-authentication-azure";
import {
createGraphServiceClient,
GraphRequestAdapter,
} from "@microsoft/msgraph-sdk";
import { SendMailPostRequestBody } from "@microsoft/msgraph-sdk-users/users/item/sendMail/index.js";
import "@microsoft/msgraph-sdk-users";
import { FileAttachment } from "@microsoft/msgraph-sdk/models/index.js";
import fs from "fs";
const fromRecipient = "<from@mail.com>";
const toRecipient = "<to@mail.com>";
const credential = new ClientSecretCredential(
<tenantId>,
<clientId>,
<clientSecret>
);
// @microsoft/kiota-authentication-azure
const authProvider = new AzureIdentityAuthenticationProvider(credential, [
"https://graph.microsoft.com/.default",
]);
const requestAdapter = new GraphRequestAdapter(authProvider);
const client = createGraphServiceClient(requestAdapter);
const fileBuffer = fs.readFileSync("test.jpeg");
const fileAttachment: FileAttachment = {
odataType: "#microsoft.graph.fileAttachment",
name: "test.jpg",
contentType: "image/jpeg",
contentBytes: fileBuffer,
size: fileBuffer.byteLength,
};
const body: SendMailPostRequestBody = {
message: {
subject: "Testmail",
body: {
content:
'<style type="text/css">html, p { font-size:14px !important; font-family: Arial, Helvetica, sans-serif !important; }</style><p>this is a test message</p>',
contentType: "html",
},
hasAttachments: true,
toRecipients: [
{
emailAddress: {
address: toRecipient,
},
},
],
attachments: [fileAttachment],
},
};
try {
const user = client.users.byUserId(fromRecipient);
const mail = user.sendMail;
await mail.post(body);
console.log("done");
} catch (error) {
console.log(error.message);
}
My dependencies are:
"dependencies": {
"@azure/identity": "^4.10.2",
"@microsoft/kiota-authentication-azure": "^1.0.0-preview.96",
"@microsoft/kiota-http-fetchlibrary": "^1.0.0-preview.96",
"@microsoft/msgraph-sdk": "^1.0.0-preview.64",
"@microsoft/msgraph-sdk-users": "^1.0.0-preview.64",
...
},
When I send this, I get an error with this message: 'Required property is missing.'
I debugged it and saw, that in https://github.com/microsoftgraph/msgraph-sdk-typescript/blob/main/packages/msgraph-sdk/models/index.ts the serializeFileAttachment Function only gets called with isSerializingDerivedType = true which leads to the state where "contentBytes" never gets written.
When i change isSerializingDerivedType to false in debug mode, the mail with the attachments got sent successfully!
Can you please fix that?
Thank you.
Expected behavior
The attachment's "contentBytes" gets written.
How to reproduce
Send a Mail with a File Attachment via Graph SDK - as shown above.
SDK Version
1.0.0-preview.64
Latest version known to work for scenario above?
No response
Known Workarounds
No response
Debug output
Click to expand log
```Required property is missing.
</details>
### Configuration
_No response_
### Other information
_No response_