是否可以使用Office加载项以编程方式访问Outlook中的联系人列表

时间:2018-12-23 13:46:45

标签: outlook office-js outlook-web-addins

我正在构建一个Add In,除了帐户拥有的联系人列表之外,还应该获取当前项(消息)中使用的联系人(收件人,抄送和密件抄送)。

根据documentation,尽管我的通讯录中有联系人,但以下说明给了我零个联系人,并阅读了带有发件人电子邮件的消息。

var contacts = Office.context.mailbox.item.getEntities().contacts;

我需要获取我在帐户中管理的联系人列表: enter image description here

可以使用open graph APIs访问此列表,我想知道是否也可以使用Office加载项的Office对象在本地访问该列表

3 个答案:

答案 0 :(得分:1)

Office Js不提供API以获取帐户中的联系人列表。 但是您可以使用authentication APIs从Outlook获取身份验证令牌,然后使用此令牌获取Graph令牌与Graph APIs进行交互并获取list of contacts

var gulp = require('gulp');
var babel = require('gulp-babel');
var zip = require('gulp-zip');
var browserify = require('gulp-browserify')

gulp.task('copy-to-dist', function () {
    return gulp.src([
'shared/model/user.model.js', 
'Lambda/user/GET.user.lambda.js'
])
        .pipe(
            babel({
                "presets": [
                    ["env", {
                        "targets": {
                            "node": "8.10"
                        }
                    }]
                ],
                plugins: [
                    'babel-plugin-root-import',
                ]
            })
        ).pipe(gulp.dest('./dist'))
});

gulp.task('zip', function () {
    return gulp.src(['dist/**/*', 'dist/.*'])
        .pipe(zip('dist.zip'))
        .pipe(gulp.dest('dist-zip/'));
});

gulp.task('build', gulp.series(['copy-to-dist', 'zip']));

Create a Node.js Office Add-in that uses single sign-on

答案 1 :(得分:0)

您似乎误解了文档。

引号:

以下示例访问当前项目正文中的联系人实体

var contacts = Office.context.mailbox.item.getEntities().contacts;

答案 2 :(得分:0)

您可以使用以下链接获取所有联系人:

Microsoft.Office.Interop.Outlook.Items OutlookItems;
  Microsoft.Office.Interop.Outlook.Application outlookObj = new Microsoft.Office.Interop.Outlook.Application();
  MAPIFolder Folder_Contacts;
  Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
  OutlookItems = Folder_Contacts.Items;
  MessageBox.Show("Wykryto kontaktów: " + OutlookItems.Count.ToString());

  for (int i = 0; i < OutlookItems.Count; i++)
  {
    Microsoft.Office.Interop.Outlook.ContactItem contact = (Microsoft.Office.Interop.Outlook.ContactItem)OutlookItems[i+1];
    sNazwa = contact.FullName;
    sFirma = contact.CompanyName;
    sAdress = contact.BusinessAddressStreet;
    sMiejscowosc = contact.BusinessAddressPostalCode + " " + contact.BusinessAddressCity;
    sEmail = contact.Email1Address;
    dataGridView1.Rows.Add(sNazwa, sFirma, sAdress, sMiejscowosc, sEmail);

  }

有关更多信息,请参考以下链接:

Get Outlook contacts into C# form-based application