如何使用Google-Contacts

时间:2015-05-24 15:08:02

标签: c# gdata-api google-contacts

我有以下标准: -

1.使用sql db中的查询执行创建gmail组。此查询将根据区域过滤联系人。

2.对于每个发送请求,这些联系人可能有所不同,也可能没有。这取决于发送时活跃的用户。

3.我能够向群组发送邮件。

主要问题与每次如何在向不包括非活动成员的群组成员发送邮件之前更新群组有关。

如果您需要更多解释,请告诉我。我会尽力。

更新

我从控制台应用程序中完成了以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Google.Contacts;
using Google.GData.Contacts;
using Google.GData.Client;
using Google.GData.Extensions;

namespace IMAPCommands
{
class Program
{

    static void Main(string[] args)
    {   GoogleContactService.InitializeService("mailid", "password");
        List<ContactDetail> test = GoogleContactService.GetContacts("System Group: My Contacts");
//Use break point here
            Console.ReadLine();
        }



public class GoogleContactService
    {
    #region Properties
    public static ContactsService GContactService = null;
    #endregion

    #region Methods

    public static void InitializeService(string username, string password)
    {
        GContactService = new ContactsService("Contact Infomation");
        GContactService.setUserCredentials(username, password);
    }

    public static List<ContactDetail> GetContacts(string GroupName = null)
    {

        List<ContactDetail> contactDetails = new List<ContactDetail>();
        ContactsQuery contactQuery = new ContactsQuery(ContactsQuery.CreateContactsUri("default"));
        contactQuery.NumberToRetrieve = 1000;

        if (!String.IsNullOrEmpty(GroupName))
        {
            GroupEntry ge = GetGroup(GroupName);
            if (ge != null)
                contactQuery.Group = ge.Id.AbsoluteUri;
        }
        else
        {
            string groupName = "";
            GroupEntry ge = GetGroup(groupName);
            if (ge != null)
                contactQuery.Group = ge.Id.AbsoluteUri;
        }

        ContactsFeed feed = GContactService.Query(contactQuery);
        foreach (ContactEntry entry in feed.Entries)
        {
            if (entry.Title.Text == "TechnicalBulletinName")
            {
                int test = entry.Emails.Count;
                ContactDetail contact = new ContactDetail
                {
                    Name = entry.Title.Text,
                    EmailAddress1 = entry.Emails.Count >= 1 ? entry.Emails[0].Address : "",
                    EmailAddress2 = entry.Emails.Count >= 2 ? entry.Emails[1].Address : "",
                    Phone1 = entry.Phonenumbers.Count >= 1 ? entry.Phonenumbers[0].Value : "",
                    Phone2 = entry.Phonenumbers.Count >= 2 ? entry.Phonenumbers[1].Value : "",
                    Address = entry.PostalAddresses.Count >= 1 ? entry.PostalAddresses[0].FormattedAddress : "",
                    Details = entry.Content.Content
                };

                contact.UserDefinedFields = new List<UDT>();
                foreach (var udt in entry.UserDefinedFields)
                {
                    contact.UserDefinedFields.Add(new UDT { Key = udt.Key, Value = udt.Value });
                }

                contactDetails.Add(contact);
            }
        }

        return contactDetails;
    }
    #endregion

    #region Helpers
    public static GroupEntry GetGroup(string GroupName)
    {
        GroupEntry groupEntry = null;
        GroupsQuery groupQuery = new GroupsQuery(GroupsQuery.CreateGroupsUri("default"));
        groupQuery.NumberToRetrieve = 100;
        GroupsFeed groupFeed = GContactService.Query(groupQuery);
        foreach (GroupEntry entry in groupFeed.Entries)
        {
            if (entry.Title.Text.Equals(GroupName, StringComparison.CurrentCultureIgnoreCase))
            {
                groupEntry = entry;
                break;
            }
        }
        return groupEntry;
    }
    #endregion
}

public class ContactDetail
{
    public string Name { get; set; }
    public string EmailAddress1 { get; set; }
    public string EmailAddress2 { get; set; }
    public string Phone1 { get; set; }
    public string Phone2 { get; set; }
    public string Address { get; set; }
    public string Details { get; set; }
    public string Pipe { get; set; }
    public string Relationship { get; set; }
    public string Status { get; set; }
    public List<UDT> UserDefinedFields { get; set; }
}
public class UDT
{
    public string Key { get; set; }
    public string Value { get; set; }
}
}

仍然无法获取属于 TechnicalBulletinName 组成员的联系人列表。我只能获得该组的emailID而不是该组的成员。

0 个答案:

没有答案