Работа с контактами Gmail

Aspose.Email поддерживает работу с контактами Gmail. Используя интерфейс IGmailClient, пользователи могут извлекать контакты из учетной записи Gmail, создавать новые контакты, а также обновлять и удалять существующие контакты. Gmail позволяет разработчикам выполнять все это с помощью своего публичного API для разработчиков. Для работы с контактами Gmail необходима следующая информация о пользователе: Имя пользователя, адрес электронной почты, пароль, ID клиента, секрет клиента, токен обновления. В этой статье показано, как:

Доступ к контактам Gmail

Следующее является примером приложения, которое может быть использовано для доступа к деталям контактов во всех группах.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret");
string accessToken;
string refreshToken;
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken);
// Get IGmailclient
using (IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail))
{
Contact[] contacts = client.GetAllContacts();
foreach (Contact contact in contacts)
Console.WriteLine(contact.DisplayName + ", " + contact.EmailAddresses[0]);
// Fetch contacts from a specific group
ContactGroupCollection groups = client.GetAllGroups();
GoogleContactGroup group = null;
foreach (GoogleContactGroup g in groups)
switch (g.Title)
{
case "TestGroup": group = g;
break;
}
// Retrieve contacts from the Group
if (group != null)
{
Contact[] contacts2 = client.GetContactsFromGroup(group.Id);
foreach (Contact con in contacts2)
Console.WriteLine(con.DisplayName + "," + con.EmailAddresses[0].ToString());
}
}

Создание контакта

Следующий фрагмент кода показывает, как создать контакт.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret");
string accessToken;
string refreshToken;
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken);
// Gmail Client
IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail);
// Create a Contact
Contact contact = new Contact();
contact.Prefix = "Prefix";
contact.GivenName = "GivenName";
contact.Surname = "Surname";
contact.MiddleName = "MiddleName";
contact.DisplayName = "Test User 1";
contact.Suffix = "Suffix";
contact.JobTitle = "JobTitle";
contact.DepartmentName = "DepartmentName";
contact.CompanyName = "CompanyName";
contact.Profession = "Profession";
contact.Notes = "Notes";
PostalAddress address = new PostalAddress();
address.Category = PostalAddressCategory.Work;
address.Address = "Address";
address.Street = "Street";
address.PostOfficeBox = "PostOfficeBox";
address.City = "City";
address.StateOrProvince = "StateOrProvince";
address.PostalCode = "PostalCode";
address.Country = "Country";
contact.PhysicalAddresses.Add(address);
PhoneNumber pnWork = new PhoneNumber();
pnWork.Number = "323423423423";
pnWork.Category = PhoneNumberCategory.Work;
contact.PhoneNumbers.Add(pnWork);
PhoneNumber pnHome = new PhoneNumber();
pnHome.Number = "323423423423";
pnHome.Category = PhoneNumberCategory.Home;
contact.PhoneNumbers.Add(pnHome);
PhoneNumber pnMobile = new PhoneNumber();
pnMobile.Number = "323423423423";
pnMobile.Category = PhoneNumberCategory.Mobile;
contact.PhoneNumbers.Add(pnMobile);
contact.Urls.Blog = "Blog.ru";
contact.Urls.BusinessHomePage = "BusinessHomePage.ru";
contact.Urls.HomePage = "HomePage.ru";
contact.Urls.Profile = "Profile.ru";
contact.Events.Birthday = DateTime.Now.AddYears(-30);
contact.Events.Anniversary = DateTime.Now.AddYears(-10);
contact.InstantMessengers.AIM = "AIM";
contact.InstantMessengers.GoogleTalk = "GoogleTalk";
contact.InstantMessengers.ICQ = "ICQ";
contact.InstantMessengers.Jabber = "Jabber";
contact.InstantMessengers.MSN = "MSN";
contact.InstantMessengers.QQ = "QQ";
contact.InstantMessengers.Skype = "Skype";
contact.InstantMessengers.Yahoo = "Yahoo";
contact.AssociatedPersons.Spouse = "Spouse";
contact.AssociatedPersons.Sister = "Sister";
contact.AssociatedPersons.Relative = "Relative";
contact.AssociatedPersons.ReferredBy = "ReferredBy";
contact.AssociatedPersons.Partner = "Partner";
contact.AssociatedPersons.Parent = "Parent";
contact.AssociatedPersons.Mother = "Mother";
contact.AssociatedPersons.Manager = "Manager";
// Email Address
EmailAddress eAddress = new EmailAddress();
eAddress.Address = "email@gmail.com";
contact.EmailAddresses.Add(eAddress);
string contactUri = client.CreateContact(contact);

Обновление контакта

После того, как контакт будет извлечен, его атрибуты могут быть обновлены, и контакт может быть сохранен обратно в учетную запись Gmail. Следующий фрагмент кода показывает, как извлекать контакты из учетной записи Gmail и затем модифицировать один из них, после чего он сохраняется обратно.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret");
string accessToken;
string refreshToken;
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken);
// Get IGmailclient
using (IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail))
{
Contact[] contacts = client.GetAllContacts();
Contact contact = contacts[0];
contact.JobTitle = "Manager IT";
contact.DepartmentName = "Customer Support";
contact.CompanyName = "Aspose";
contact.Profession = "Software Developer";
client.UpdateContact(contact);
}

Удаление контакта

Для удаления контакта Gmail используется метод клиента Gmail DeleteContact, как показано в следующем образце кода.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
client.DeleteContact(contact.Id.GoogleId);

Сохранение контакта

Aspose.Email позволяет сохранять контакты в различные форматы вывода, такие как MSG и VCF. Метод Save предоставляет возможность достичь этого. Следующий фрагмент кода показывает, как сохранить контакт.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
contact.Save(dataDir + "contact_out.msg", ContactSaveFormat.Msg);
contact.Save(dataDir + "contact_out.vcf", ContactSaveFormat.VCard);