要求: 通过 Outlook 插件 API 从 Outlook 收件箱获取电子邮件主题。
环境:
代码:
async function ReadEmailSubject() {
document.getElementById("email-subject").innerText = "";
Office.context.mailbox.item.subject.getAsync(function (result) {
var emailSubjectDiv = document.getElementById("email-subject");
if (result.status === Office.AsyncResultStatus.Succeeded) {
var emailSubject = result.value;
emailSubjectDiv.innerText = emailSubject;
} else {
console.error("Failed to get email subject: " + result.error.message);
emailSubjectDiv.innerText = "Failed to get email body: " + result.error.message;
}
});
}
调试控制台:
TypeError: Office.context.mailbox.item.subject.getAsync is not a function
at _callee2$ (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:28:39)
at tryCatch (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
at Generator.<anonymous> (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
at Generator.next (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
at asyncGeneratorStep (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
at _next (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
at e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1
at new Promise (<anonymous>)
at e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1
at _ReadEmailSubject (https://localhost:3000/taskpane.js:266:28) {stack: 'TypeError: Office.context.mailbox.item.subjec…t (https://localhost:3000/taskpane.js:266:28)', message: 'Office.context.mailbox.item.subject.getAsync is not a function'}
我尝试过的:
尚不清楚加载项中何时何地调用
ReadEmailSubject
。但以下代码在我的计算机上的 Outlook for Desktop 中运行良好:
let item;
Office.initialize = function () {
item = Office.context.mailbox.item;
// Checks for the DOM to load using the jQuery ready method.
$(document).ready(function () {
// After the DOM is loaded, app-specific code can run.
// Get the subject of the item being composed.
getSubject();
});
}
// Get the subject of the item that the user is composing.
function getSubject() {
item.subject.getAsync(
function (asyncResult) {
if (asyncResult.status == Office.AsyncResultStatus.Failed){
write(asyncResult.error.message);
}
else {
// Successfully got the subject, display it.
write ('The subject is: ' + asyncResult.value);
}
});
}
// Write to a div with id='message' on the page.
function write(message){
document.getElementById('message').innerText += message;
}
您可以找到一堆示例 Outlook 加载项来验证您的代码有什么问题,例如,请参阅 https://github.com/OfficeDev/Office-Add-in-samples/tree/main/Samples/outlook-verify-sensitivity-label .
该接口仅在组合场景下可用。如果您尝试在读取场景中使用此 API,您将收到此错误。