我正在使用 Node.js 编写 O365 发送邮件 API。我的 Node 充当服务器,Angular 和 Xamarin 充当客户端(Web 和移动)。我已经浏览过documentation 。据此,我已包含 Microsoft SDK
并在 Microsoft Azure
中注册我的应用程序以获取客户端 ID
。接下来是邮件 API 代码。
代码
const options = {
authProvider,
};
const client = Client.init(options);
const sendMail = {
message: {
subject: "Meet for lunch?",
body: {
contentType: "Text",
content: "The new cafeteria is open."
},
toRecipients: [
{
emailAddress: {
address: "fannyd@contoso.onmicrosoft.com"
}
}
],
ccRecipients: [
{
emailAddress: {
address: "danas@contoso.onmicrosoft.com"
}
}
]
},
saveToSentItems: "false"
};
let res = await client.api('/me/sendMail')
.post(sendMail);
要创建authProvider
,我必须在此处进行场景
- 调用 Web API 的 Web 应用
- 调用网络 API 的移动应用
我不知道如何创建authProvider
。文档很困惑。有人可以帮我吗
最佳答案
您需要将该代码放入后端 (node.js
)。只需创建一个动态辅助函数来发送这样的邮件
utils.js
const options = {
authProvider,
};
const client = Client.init(options);
const utils = {};
utils.sendMail = async (to, subject, body, cc, isSave) => {
const mailOptions = {
message: {
subject: subject || '',
body: { ...body },
toRecipients: to,
},
saveToSentItems: `${isSave}`,
};
if (cc) {
mailOptions.message.ccRecipients = cc;
}
const result = await client.api('/me/sendMail').post(mailOptions);
return result;
};
module.exports = utils;
并像这样调用该函数
const test = async () => {
try {
const to = [
{
emailAddress: {
address: 'fannyd@contoso.onmicrosoft.com',
},
},
];
const cc = [
{
emailAddress: {
address: 'danas@contoso.onmicrosoft.com',
},
},
];
const subject = 'Test';
const body = {
contentType: 'Text',
content: 'The new cafeteria is open.',
};
const saveToSentItems = true;
const result = await utils.sendMail(to, subject, body, cc, saveToSentItems);
return result;
} catch (err) {
console.log(err);
throw err;
}
};
test();
我建议你把你的逻辑放在后端当你有多个客户端,例如android
,iOs
,PWA
那么你需要重写您的代码适用于所有 3 个平台,如果您将通用业务逻辑放在后端,那么单个代码可以服务于所有 3 个平台。
关于javascript - 使用 Node 作为服务器的 O365 邮件 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57669321/