从 Outlook Web 插件获取当前邮箱
Get current mailbox from Outlook web addin
我刚找到这个:https://docs.microsoft.com/en-us/office/dev/add-ins/reference/manifest/supportssharedfolders。这告诉我有一种方法可以将插件加载到另一个用户的邮箱中。我已经通过清单激活了该功能,效果很好。
为了让服务器知道在哪里可以找到我目前正在使用的邮件,我需要我当前所在的邮箱名称。所以我检查了我在 Office.context
中获得的属性。似乎没有对当前邮箱的引用。只是 Office.context.mailbox.userProfile.emailAddress
指的是我的登录用户。
由于我需要当前邮箱才能通过Graph/EWS 访问邮件,因此必须有一种读取方式,否则SupportsSharedFolders
将毫无意义。我如何获得当前邮箱 name/ID?
您可以通过调用当前提供用户权限的 item.getSharedPropertiesAsync method. This returns a SharedProperties 对象、所有者的电子邮件地址、REST API 的基础 URL,以及目标邮箱。
以下示例显示如何获取消息或约会的共享属性,检查委托或共享邮箱用户是否具有写入权限,并进行 REST 调用。
function performOperation() {
Office.context.mailbox.getCallbackTokenAsync({
isRest: true
},
function (asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Succeeded && asyncResult.value !== "") {
Office.context.mailbox.item.getSharedPropertiesAsync({
// Pass auth token along.
asyncContext: asyncResult.value
},
function (asyncResult1) {
let sharedProperties = asyncResult1.value;
let delegatePermissions = sharedProperties.delegatePermissions;
// Determine if user can do the expected operation.
// E.g., do they have Write permission?
if ((delegatePermissions & Office.MailboxEnums.DelegatePermissions.Write) != 0) {
// Construct REST URL for your operation.
// Update <version> placeholder with actual Outlook REST API version e.g. "v2.0".
// Update <operation> placeholder with actual operation.
let rest_url = sharedProperties.targetRestUrl + "/<version>/users/" + sharedProperties.targetMailbox + "/<operation>";
$.ajax({
url: rest_url,
dataType: 'json',
headers:
{
"Authorization": "Bearer " + asyncResult1.asyncContext
}
}
).done(
function (response) {
console.log("success");
}
).fail(
function (error) {
console.log("error message");
}
);
}
}
);
}
}
);
}
我刚找到这个:https://docs.microsoft.com/en-us/office/dev/add-ins/reference/manifest/supportssharedfolders。这告诉我有一种方法可以将插件加载到另一个用户的邮箱中。我已经通过清单激活了该功能,效果很好。
为了让服务器知道在哪里可以找到我目前正在使用的邮件,我需要我当前所在的邮箱名称。所以我检查了我在 Office.context
中获得的属性。似乎没有对当前邮箱的引用。只是 Office.context.mailbox.userProfile.emailAddress
指的是我的登录用户。
由于我需要当前邮箱才能通过Graph/EWS 访问邮件,因此必须有一种读取方式,否则SupportsSharedFolders
将毫无意义。我如何获得当前邮箱 name/ID?
您可以通过调用当前提供用户权限的 item.getSharedPropertiesAsync method. This returns a SharedProperties 对象、所有者的电子邮件地址、REST API 的基础 URL,以及目标邮箱。
以下示例显示如何获取消息或约会的共享属性,检查委托或共享邮箱用户是否具有写入权限,并进行 REST 调用。
function performOperation() {
Office.context.mailbox.getCallbackTokenAsync({
isRest: true
},
function (asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Succeeded && asyncResult.value !== "") {
Office.context.mailbox.item.getSharedPropertiesAsync({
// Pass auth token along.
asyncContext: asyncResult.value
},
function (asyncResult1) {
let sharedProperties = asyncResult1.value;
let delegatePermissions = sharedProperties.delegatePermissions;
// Determine if user can do the expected operation.
// E.g., do they have Write permission?
if ((delegatePermissions & Office.MailboxEnums.DelegatePermissions.Write) != 0) {
// Construct REST URL for your operation.
// Update <version> placeholder with actual Outlook REST API version e.g. "v2.0".
// Update <operation> placeholder with actual operation.
let rest_url = sharedProperties.targetRestUrl + "/<version>/users/" + sharedProperties.targetMailbox + "/<operation>";
$.ajax({
url: rest_url,
dataType: 'json',
headers:
{
"Authorization": "Bearer " + asyncResult1.asyncContext
}
}
).done(
function (response) {
console.log("success");
}
).fail(
function (error) {
console.log("error message");
}
);
}
}
);
}
}
);
}