Outlook 使用来自传真和扫描的EWS API向exchage contanct添加传真号码
我尝试使用Windows fax and Scan(wfs.exe)尝试使用传真号码发送时,使用EWS创建并与exchange服务器联系,并将其标记为无效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,
那么,有人知道我应该如何在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);