Outlook 使用来自传真和扫描的EWS API向exchage contanct添加传真号码

Outlook 使用来自传真和扫描的EWS API向exchage contanct添加传真号码,outlook,exchangewebservices,contacts,Outlook,Exchangewebservices,Contacts,我尝试使用Windows fax and Scan(wfs.exe)尝试使用传真号码发送时,使用EWS创建并与exchange服务器联系,并将其标记为无效 那么,有人知道我应该如何在EWS中设置传真号码,以便在传真和扫描中发送传真吗?在使用大量的测试和入侵后,我发现我应该添加一个@before号码,以便Windows传真和扫描能够识别。这是我的最终代码 public static ExchangeService GetService(string emailUser = defaultUser,

我尝试使用Windows fax and Scan(wfs.exe)尝试使用传真号码发送时,使用EWS创建并与exchange服务器联系,并将其标记为无效


那么,有人知道我应该如何在EWS中设置传真号码,以便在传真和扫描中发送传真吗?

在使用大量的测试和入侵后,我发现我应该添加一个@before号码,以便Windows传真和扫描能够识别。这是我的最终代码

public static ExchangeService GetService(string emailUser = defaultUser, string pass = defaultPass)
{

    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
    //service.AutodiscoverUrl(emailUser, RedirectionUrlValidationCallback);
    service.Url = new Uri("https://xs3.domain.net/EWS/Exchange.asmx");
    service.Credentials = new WebCredentials(emailUser, pass);

    service.TraceEnabled = true;
    service.TraceFlags = TraceFlags.All;

    return service;
}

public static bool IsValidEmail(string email)
{
    try
    {
        var addr = new System.Net.Mail.MailAddress(email);
        return addr.Address == email;
    }
    catch
    {
        return false;
    }
}

public static void AddOrUpdateContact(ExchangeService service, string id, Dictionary<string, string> dataRecord, string targetFolder = defaultCotactsFolder, bool faxOnly = false)
{

    Folder parentFolder;

    FindFoldersResults folderItems = service.FindFolders(
        WellKnownFolderName.Contacts,//parent folder
        new SearchFilter.IsEqualTo(FolderSchema.DisplayName, targetFolder),
        new FolderView(1)// return first 1 records
     );

    if (folderItems != null && folderItems.Count() > 0)
    {//folder found!
        parentFolder = folderItems.First() as Folder;
    }
    else
    {//folder NOT found!
        return;
    }

    ExtendedPropertyDefinition CustomProperty = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "BusinessFax", MapiPropertyType.String);


    FindItemsResults<Item> contactItems = service.FindItems(
        parentFolder.Id,
        new SearchFilter.IsEqualTo(ContactSchema.NickName, id),
        new ItemView(1)
    );

    bool doesExist = contactItems != null && contactItems.Count() > 0;
    Contact contact;


    if (doesExist)
    {//contact found!
        contact = contactItems.First() as Contact;
    }
    else
    {
        // Create the contact.
        contact = new Contact(service);
    }



    // Specify the name and how the contact should be filled.
    contact.CompanyName = name;
    contact.NickName = id;
    contact.PhoneNumbers[PhoneNumberKey.BusinessFax] = "@"+dataRecord["COD_FAX_SUPID"];
    contact.FileAsMapping = FileAsMapping.Company;

    if (!faxOnly)
    {
        // Specify the business, home, and car phone numbers.
        contact.PhoneNumbers[PhoneNumberKey.BusinessPhone] = dataRecord["COD_TEL_SUPID"];


        if (IsValidEmail(dataRecord["EMAIL_SUPID"]))
        {
            // Specify two email addresses.
            contact.EmailAddresses[EmailAddressKey.EmailAddress1] = new EmailAddress(dataRecord["EMAIL_SUPID"]);
        }

        contact.PhysicalAddresses[PhysicalAddressKey.Home] = new PhysicalAddressEntry()
        {
            Street = dataRecord["DES_STREET_SUPID"],
            City = dataRecord["DES_TOWN_SUPID"],
            CountryOrRegion = dataRecord["DES_COUNTRY_SUPID"],
            PostalCode = dataRecord["COD_POST_SUPID"] + (String.IsNullOrWhiteSpace(dataRecord["NUM_BOX_SUPID"]) ? "" : $", PostBox: {dataRecord["NUM_BOX_SUPID"]}"),
        }
    }


    if (doesExist)
    {  //contact found!
        contact.Update(ConflictResolutionMode.AlwaysOverwrite);
    }
    else
    {
        //save new!
        contact.Save(parentFolder.Id);
    }

}
publicstaticExchangeService GetService(字符串emailUser=defaultUser,字符串pass=defaultPass)
{
ExchangeService服务=新的ExchangeService(ExchangeVersion.Exchange2010_SP2);
//自动发现URL(emailUser、RedirectionUrlValidationCallback);
service.Url=新的Uri(“https://xs3.domain.net/EWS/Exchange.asmx");
service.Credentials=新的WebCredentials(emailUser,pass);
service.TraceEnabled=true;
service.TraceFlags=TraceFlags.All;
回程服务;
}
公共静态bool IsValidEmail(字符串电子邮件)
{
尝试
{
var addr=新系统.Net.Mail.MailAddress(电子邮件);
返回地址==电子邮件;
}
抓住
{
返回false;
}
}
公共静态void AddOrUpdateContact(ExchangeService服务,字符串id,字典数据记录,字符串targetFolder=DefaultCoActsFolder,bool faxOnly=false)
{
文件夹父文件夹;
FindFoldersResults folderItems=service.FindFolders(
WellKnownFolderName.Contacts,//父文件夹
新的SearchFilter.IsEqualTo(FolderSchema.DisplayName,targetFolder),
new FolderView(1)//返回前1条记录
);
if(folderItems!=null&&folderItems.Count()>0)
{//找到文件夹!
parentFolder=folderItems.First()作为文件夹;
}
其他的
{//找不到文件夹!
返回;
}
ExtendedPropertyDefinition CustomProperty=新的ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicString,“BusinessFax”,MapPropertyType.String);
FindItemsResults contactItems=service.FindItems(
parentFolder.Id,
新的SearchFilter.IsEqualTo(ContactSchema.昵称,id),
新项目视图(1)
);
bool doesExist=contactItems!=null&&contactItems.Count()>0;
接触;
如果(性别歧视)
{//找到联系人!
contact=contactItems.First()作为联系人;
}
其他的
{
//创建联系人。
联系人=新联系人(服务);
}
//指定姓名以及联系人的填写方式。
contact.CompanyName=名称;
contact.NickName=id;
contact.PhoneNumbers[PhoneNumberKey.BusinessFax]=“@”+dataRecord[“COD_FAX_SUPID”];
contact.FileAsMapping=FileAsMapping.Company;
如果(!仅限传真)
{
//指定公司、家庭和汽车电话号码。
contact.PhoneNumbers[PhoneNumberKey.BusinessPhone]=dataRecord[“COD_TEL_SUPID”];
如果(iValidEmail(数据记录[“电子邮件”])
{
//指定两个电子邮件地址。
contact.EmailAddresses[EmailAddressKey.EmailAddress1]=新的电子邮件地址(dataRecord[“emailsupid]”);
}
contact.PhysicalAddresses[PhysicalAddressKey.Home]=新physicalAddressEssentry()
{
街道=数据记录[“DES_Street_SUPID”],
City=数据记录[“DES_TOWN_SUPID”],
CountryOrRegion=dataRecord[“DES_COUNTRY_SUPID”],
PostalCode=dataRecord[“COD\u POST\u SUPID”]+(String.IsNullOrWhiteSpace(dataRecord[“NUM\u BOX\u SUPID”])?:$,PostBox:{dataRecord[“NUM\u BOX\u SUPID”]}),
}
}
如果(性别歧视)
{//找到联系人!
contact.Update(ConflictResolutionMode.AlwaysOverwrite);
}
其他的
{
//保存新的!
contact.Save(parentFolder.Id);
}
}
用法示例:

ExchangeService service = ContatctUpdaterLib.ContatcUpdater.GetService("USER@DONAMAIN.COM","123456");

//GetUserData return user data record as a Dictionary<string,string>
var data = GetUserData();

AddOrUpdateContact(service, dataRecord["COD_SUP_SUPID"], dataRecord, "Contacts(Fax Only)" ,true);
ExchangeService service=contatctupaterlib.ContatcUpdater.GetService(“USER@DONAMAIN.COM","123456");
//GetUserData将用户数据记录作为字典返回
var data=GetUserData();
AddOrUpdateContact(服务,数据记录[“COD\u SUP\u SUPID”],数据记录,“联系人(仅传真)”,true);