สร้าง อัปเดต และลบผู้ติดต่อใน Gmail โดยใช้ C#

Gmail เป็นหนึ่งในแอปพลิเคชันอีเมลที่ได้รับความนิยมและใช้กันอย่างแพร่หลายทั่วโลก นอกเหนือจากการจัดการอีเมลแล้ว ยังอนุญาตให้ทำงานกับปฏิทิน ผู้ติดต่อ แชท ฯลฯ และให้บริการการทำงานร่วมกันอื่นๆ ใน บทความก่อนหน้า คุณได้เห็นวิธีการนำเข้าผู้ติดต่อจากบัญชี Gmail ภายในแอปพลิเคชัน .NET ในบทความนี้ เราจะกล่าวถึงวิธีการสร้าง อัปเดต และลบผู้ติดต่อในบัญชี Gmail โดยใช้ C# .NET

C# .NET API เพื่อสร้าง อัปเดต และลบผู้ติดต่อ Gmail

ในการสร้างและจัดการผู้ติดต่อในบัญชี Gmail เราจะใช้ Aspose.Email for .NET เป็น API การประมวลผลอีเมลที่ให้คุณจัดการอีเมลและทำงานกับไคลเอนต์อีเมลยอดนิยม คุณสามารถ ดาวน์โหลด DLL ของ API หรือติดตั้งจาก NuGet โดยใช้คำสั่งต่อไปนี้

PM> Install-Package Aspose.Email

ก่อนที่คุณจะเริ่มทำงาน คุณต้องสร้างโครงการบน Google Developer Console ซึ่งจะช่วยให้คุณสามารถสื่อสารกับ Gmail หากต้องการสร้าง คุณสามารถทำตาม คู่มือนี้

ในการเข้าถึงและจัดการผู้ติดต่อในบัญชี Gmail เราจำเป็นต้องเขียนโค้ดเพื่อจัดการข้อมูลของผู้ใช้และดำเนินการตรวจสอบสิทธิ์ สำหรับผู้ใช้ Gmail ก่อนอื่นเราจะสร้างคลาสชื่อ TestUser แล้วจึงสืบทอดจากคลาส GoogleUser ต่อไปนี้คือการใช้งานทั้งสองคลาสอย่างสมบูรณ์

using System;

namespace Aspose.Email
{
    internal enum GrantTypes
    {
        authorization_code,
        refresh_token
    }

    public class TestUser
    {
        internal TestUser(string name, string eMail, string password, string domain)
        {
            Name = name;
            EMail = eMail;
            Password = password;
            Domain = domain;
        }

        public readonly string Name;
        public readonly string EMail;
        public readonly string Password;
        public readonly string Domain;

        public static bool operator ==(TestUser x, TestUser y)
        {
            if ((object)x != null)
                return x.Equals(y);
            if ((object)y != null)
                return y.Equals(x);
            return true;
        }

        public static bool operator !=(TestUser x, TestUser y)
        {
            return !(x == y);
        }

        public static implicit operator string(TestUser user)
        {
            return user == null ? null : user.Name;
        }

        public override int GetHashCode()
        {
            return ToString().GetHashCode();
        }

        public override bool Equals(object obj)
        {
            return obj != null && obj is TestUser && this.ToString().Equals(obj.ToString(), StringComparison.OrdinalIgnoreCase);
        }

        public override string ToString()
        {
            return string.IsNullOrEmpty(Domain) ? Name : string.Format("{0}/{1}", Domain, Name);
        }
    }
    public class GoogleUser : TestUser
    {
        public GoogleUser(string name, string eMail, string password)
            : this(name, eMail, password, null, null, null)
        { }

        public GoogleUser(string name, string eMail, string password, string clientId, string clientSecret)
            : this(name, eMail, password, clientId, clientSecret, null)
        { }

        public GoogleUser(string name, string eMail, string password, string clientId, string clientSecret, string refreshToken)
            : base(name, eMail, password, "gmail.com")
        {
            ClientId = clientId;
            ClientSecret = clientSecret;
            RefreshToken = refreshToken;
        }
        public readonly string ClientId;
        public readonly string ClientSecret;
        public readonly string RefreshToken;
    }
}

ตอนนี้ เราต้องสร้างคลาสผู้ช่วยเหลือที่จะดูแลการยืนยันตัวตนของบัญชี Gmail เราจะตั้งชื่อคลาสนี้ว่า GoogleOAuthHelper ต่อไปนี้คือการใช้งานคลาสนี้อย่างสมบูรณ์

using System; 
using System.Diagnostics;
using System.IO; 
using System.Net;
using System.Text;
using System.Threading; 
using System.Windows.Forms;

namespace Aspose.Email
{
    internal class GoogleOAuthHelper
    {
        public const string TOKEN_REQUEST_URL = "https://accounts.google.com/o/oauth2/token";
        public const string SCOPE = "https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar" + "+" + "https%3A%2F%2Fwww.google.com%2Fm8%2Ffeeds%2F" + "+" + "https%3A%2F%2Fmail.google.com%2F"; // IMAP & SMTP
        public const string REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob";
        public const string REDIRECT_TYPE = "code";

        internal static string GetAccessToken(TestUser user)
        {
            return GetAccessToken((GoogleUser)user);
        }

        internal static string GetAccessToken(GoogleUser user)
        {
            string access_token;
            string token_type;
            int expires_in;
            GetAccessToken(user, out access_token, out token_type, out expires_in);
            return access_token;
        }

        internal static void GetAccessToken(GoogleUser user, out string access_token, out string token_type, out int expires_in)
        {
            access_token = null;
            token_type = null;
            expires_in = 0;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(TOKEN_REQUEST_URL);
            request.CookieContainer = new CookieContainer();
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            string encodedParameters = string.Format("client_id={0}&client_secret={1}&refresh_token={2}&grant_type={3}",
            System.Web.HttpUtility.UrlEncode(user.ClientId), System.Web.HttpUtility.UrlEncode(user.ClientSecret), System.Web.HttpUtility.UrlEncode(user.RefreshToken), System.Web.HttpUtility.UrlEncode(GrantTypes.refresh_token.ToString()));
            byte[] requestData = Encoding.UTF8.GetBytes(encodedParameters);
            request.ContentLength = requestData.Length;
            if (requestData.Length > 0)
                using (Stream stream = request.GetRequestStream())
                    stream.Write(requestData, 0, requestData.Length);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string responseText = null;
            using (TextReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII))
                responseText = reader.ReadToEnd();
            foreach (string sPair in responseText.Replace("{", "").Replace("}", "").Replace("\"", "").Split(new string[] { ",\n" }, StringSplitOptions.None))
            {
                string[] pair = sPair.Split(':');
                string name = pair[0].Trim().ToLower();
                string value = System.Web.HttpUtility.UrlDecode(pair[1].Trim());
                switch (name)
                {
                    case "access_token":
                        access_token = value;
                        break;
                    case "token_type":
                        token_type = value;
                        break;

                    case "expires_in":
                        expires_in = Convert.ToInt32(value);
                        break;
                }
            }
            Debug.WriteLine("");
            Debug.WriteLine("---------------------------------------------------------");
            Debug.WriteLine("-----------OAuth 2.0 authorization information-----------");
            Debug.WriteLine("---------------------------------------------------------");
            Debug.WriteLine(string.Format("Login: '{0}'", user.EMail));
            Debug.WriteLine(string.Format("Access token: '{0}'", access_token));
            Debug.WriteLine(string.Format("Token type: '{0}'", token_type));
            Debug.WriteLine(string.Format("Expires in: '{0}'", expires_in));
            Debug.WriteLine("---------------------------------------------------------");
            Debug.WriteLine("");
        }

        internal static void GetAccessToken(TestUser user, out string access_token, out string refresh_token)
        {
            GetAccessToken((GoogleUser)user, out access_token, out refresh_token);
        }

        internal static void GetAccessToken(GoogleUser user, out string access_token, out string refresh_token)
        {
            string token_type;
            int expires_in;
            GoogleOAuthHelper.GetAccessToken(user, out access_token, out refresh_token, out token_type, out expires_in);
        }

        internal static void GetAccessToken(TestUser user, out string access_token, out string refresh_token, out string token_type, out int expires_in)
        {
            GetAccessToken((GoogleUser)user, out access_token, out refresh_token, out token_type, out expires_in);
        }

        internal static void GetAccessToken(GoogleUser user, out string access_token, out string refresh_token, out string token_type, out int expires_in)
        {
            string authorizationCode = GoogleOAuthHelper.GetAuthorizationCode(user, GoogleOAuthHelper.SCOPE, GoogleOAuthHelper.REDIRECT_URI, GoogleOAuthHelper.REDIRECT_TYPE);
            GoogleOAuthHelper.GetAccessToken(authorizationCode, user, out access_token, out token_type, out expires_in, out refresh_token);
        }

        internal static void GetAccessToken(string authorizationCode, TestUser user, out string access_token, out string token_type, out int expires_in, out string refresh_token)
        {
            GetAccessToken(authorizationCode, (GoogleUser)user, out access_token, out token_type, out expires_in, out refresh_token);
        }

        internal static void GetAccessToken(string authorizationCode, GoogleUser user, out string access_token, out string token_type, out int expires_in, out string refresh_token)
        {
            access_token = null;
            token_type = null;
            expires_in = 0;
            refresh_token = null;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(TOKEN_REQUEST_URL);
            request.CookieContainer = new CookieContainer();
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            string encodedParameters = string.Format("client_id={0}&code={1}&client_secret={2}&redirect_uri={3}&grant_type={4}", System.Web.HttpUtility.UrlEncode(user.ClientId), System.Web.HttpUtility.UrlEncode(authorizationCode), System.Web.HttpUtility.UrlEncode(user.ClientSecret), System.Web.HttpUtility.UrlEncode(REDIRECT_URI), System.Web.HttpUtility.UrlEncode(GrantTypes.authorization_code.ToString()));
            byte[] requestData = Encoding.UTF8.GetBytes(encodedParameters);
            request.ContentLength = requestData.Length;
            if (requestData.Length > 0)
                using (Stream stream = request.GetRequestStream())
                    stream.Write(requestData, 0, requestData.Length);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string responseText = null;
            using (TextReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII))
                responseText = reader.ReadToEnd();
            foreach (string sPair in responseText.Replace("{", "").Replace("}", "").Replace("\"", "").Split(new string[] { ",\n" }, StringSplitOptions.None))
            {
                string[] pair = sPair.Split(':');
                string name = pair[0].Trim().ToLower();
                string value = System.Web.HttpUtility.UrlDecode(pair[1].Trim());
                switch (name)
                {
                    case "access_token":
                        access_token = value;
                        break;
                    case "token_type":
                        token_type = value;
                        break;

                    case "expires_in":
                        expires_in = Convert.ToInt32(value);
                        break;

                    case "refresh_token":
                        refresh_token = value;
                        break;
                }
            }

            Debug.WriteLine(string.Format("Authorization code: '{0}'", authorizationCode));
            Debug.WriteLine(string.Format("Access token: '{0}'", access_token));
            Debug.WriteLine(string.Format("Refresh token: '{0}'", refresh_token));
            Debug.WriteLine(string.Format("Token type: '{0}'", token_type));
            Debug.WriteLine(string.Format("Expires in: '{0}'", expires_in));
            Debug.WriteLine("---------------------------------------------------------");
            Debug.WriteLine("");
        }

        internal static string GetAuthorizationCode(TestUser acc, string scope, string redirectUri, string responseType)
        {
            return GetAuthorizationCode((GoogleUser)acc, scope, redirectUri, responseType);
        }

        internal static string GetAuthorizationCode(GoogleUser acc, string scope, string redirectUri, string responseType)
        {
            Debug.WriteLine("");
            Debug.WriteLine("---------------------------------------------------------");
            Debug.WriteLine("-----------OAuth 2.0 authorization information-----------");
            Debug.WriteLine("---------------------------------------------------------");
            Debug.WriteLine(string.Format("Login: '{0}'", acc.EMail));
            string authorizationCode = null;
            string error = null;
            string approveUrl = string.Format("https://accounts.google.com/o/oauth2/auth?redirect_uri={0}&response_type={1}&client_id={2}&scope={3}", redirectUri, responseType, acc.ClientId, scope);

            AutoResetEvent are0 = new AutoResetEvent(false);
            Thread t = new Thread(delegate ()
            {
                bool doEvents = true;
                WebBrowser browser = new WebBrowser();
                browser.AllowNavigation = true;
                browser.DocumentCompleted += delegate (object sender, WebBrowserDocumentCompletedEventArgs e) { doEvents = false; };
                Form f = new Form();
                f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
                f.ShowInTaskbar = false;
                f.StartPosition = FormStartPosition.Manual;
                f.Location = new System.Drawing.Point(-2000, -2000);
                f.Size = new System.Drawing.Size(1, 1);
                f.Controls.Add(browser);
                f.Load += delegate (object sender, EventArgs e)
                {
                    try
                    {
                        browser.Navigate("https://accounts.google.com/Logout");
                        doEvents = true;
                        while (doEvents) Application.DoEvents();
                        browser.Navigate("https://accounts.google.com/ServiceLogin?sacu=1");
                        doEvents = true;
                        while (doEvents) Application.DoEvents();
                        HtmlElement loginForm = browser.Document.Forms["gaia_loginform"];
                        if (loginForm != null)
                        {
                            HtmlElement userName = browser.Document.All["Email"];

                            userName.SetAttribute("value", acc.EMail);
                            loginForm.InvokeMember("submit");
                            doEvents = true;
                            while (doEvents)
                                Application.DoEvents();

                            loginForm = browser.Document.Forms["gaia_loginform"];
                            HtmlElement passwd = browser.Document.All["Passwd"];
                            passwd.SetAttribute("value", acc.Password);

                            loginForm.InvokeMember("submit");
                            doEvents = true;
                            while (doEvents)
                                Application.DoEvents();
                        }
                        else
                        {
                            error = "Login form is not found in \n" + browser.Document.Body.InnerHtml;
                            return;
                        }
                        browser.Navigate(approveUrl);
                        doEvents = true;
                        while (doEvents) Application.DoEvents();
                        HtmlElement approveForm = browser.Document.Forms["connect-approve"];
                        if (approveForm != null)
                        {
                            HtmlElement submitAccess = browser.Document.All["submit_access"];
                            submitAccess.SetAttribute("value", "true");
                            approveForm.InvokeMember("submit");
                            doEvents = true;
                            while (doEvents)
                                Application.DoEvents();
                        }
                        else
                        {
                            error = "Approve form is not found in \n" + browser.Document.Body.InnerHtml;
                            return;
                        }
                        HtmlElement code = browser.Document.All["code"];
                        if (code != null)
                            authorizationCode = code.GetAttribute("value");
                        else
                            error = "Authorization code is not found in \n" + browser.Document.Body.InnerHtml;
                    }
                    catch (Exception ex)
                    {
                        error = ex.Message;
                    }
                    finally
                    {
                        f.Close();
                    }
                };
                Application.Run(f);
                are0.Set();
            });
            t.SetApartmentState(ApartmentState.STA);
            t.Start();
            are0.WaitOne();
            if (error != null)
                throw new Exception(error);
            return authorizationCode;
        }
    }
}

สร้างผู้ติดต่อบน Gmail ใน C#

ต่อไปนี้เป็นขั้นตอนในการสร้างผู้ติดต่อบน Gmail ใน C#

  • ขั้นแรก สร้างผู้ใช้ Google รับโทเค็นการเข้าถึง และเริ่มต้นวัตถุ IGmailClient
  • จากนั้น สร้างวัตถุของคลาส Contact
  • กำหนดคุณสมบัติของผู้ติดต่อ เช่น ชื่อ คำนำหน้า อาชีพ ฯลฯ
  • ในการตั้งค่าที่อยู่ทางไปรษณีย์ ให้สร้างอินสแตนซ์ของ PostalAddress และตั้งค่าคุณสมบัติ
  • เพิ่มที่อยู่ที่สร้างขึ้นใหม่ในคอลเลกชันโดยใช้เมธอด Contact.PhysicalAddresses.Add(PostalAddress)
  • กำหนดรายละเอียดหมายเลขโทรศัพท์โดยใช้คลาส PhoneNumber
  • เพิ่มรายละเอียดหมายเลขโทรศัพท์ไปยังคอลเลกชันโดยใช้เมธอด Contact.PhoneNumbers.Add(PhoneNumber)
  • สร้างอินสแตนซ์ของคลาส EmailAddress ตั้งค่าที่อยู่อีเมล และกำหนดให้กับผู้ติดต่อ
  • สุดท้าย เรียกเมธอด IGmailClient.CreateContact(Contact) เพื่อสร้างผู้ติดต่อ Gmail

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างผู้ติดต่อบน Gmail ใน C#

// เริ่มต้นผู้ใช้ Google
GoogleUser User = new GoogleUser("user", "email address", "password", "clientId", "client secret");
string accessToken;
string refreshToken;

// รับโทเค็นการเข้าถึง
GoogleOAuthHelper.GetAccessToken(User, out accessToken, out refreshToken);

// รับไคลเอนต์ Gmail
IGmailClient client = GmailClient.GetInstance(accessToken, User.EMail);

// สร้างผู้ติดต่อ
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";

// ตั้งค่าที่อยู่อีเมล
EmailAddress eAddress = new EmailAddress();
eAddress.Address = "email@gmail.com";
contact.EmailAddresses.Add(eAddress);

// สร้างผู้ติดต่อบน Gmail
string contactUri = client.CreateContact(contact);

อัปเดตผู้ติดต่อบน Gmail ใน C#

คุณยังสามารถอัปเดตรายละเอียดของผู้ติดต่อ Gmail หลังจากเข้าถึงได้ ต่อไปนี้เป็นขั้นตอนในการอัปเดตผู้ติดต่อในบัญชี Gmail ใน C#

  • ขั้นแรก สร้างผู้ใช้ Google รับโทเค็นการเข้าถึง และเริ่มต้นวัตถุ IGmailClient
  • รับผู้ติดต่อในอาร์เรย์โดยใช้เมธอด IGmailClient.GetAllContacts()
  • ดึงข้อมูลผู้ติดต่อที่ต้องการจากอาร์เรย์ในวัตถุ Contact
  • อัปเดตรายละเอียดการติดต่อและโทร IGmailClient.UpdateContact(contact)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีอัปเดตผู้ติดต่อใน Gmail ใน C#

// เริ่มต้นผู้ใช้ Google
GoogleUser User = new GoogleUser("user", "email address", "password", "clientId", "client secret");
string accessToken;
string refreshToken;

// รับโทเค็นการเข้าถึง
GoogleOAuthHelper.GetAccessToken(User, out accessToken, out refreshToken);

// รับ IGmailClient
using (IGmailClient client = GmailClient.GetInstance(accessToken, User.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 ใน C#

สุดท้าย มาดูวิธีการลบผู้ติดต่อ Gmail โดยใช้ C# ต่อไปนี้เป็นขั้นตอนในการดำเนินการนี้

  • ขั้นแรก สร้างผู้ใช้ Google รับโทเค็นการเข้าถึง และเริ่มต้นวัตถุ IGmailClient
  • รับผู้ติดต่อในอาร์เรย์โดยใช้เมธอด IGmailClient.GetAllContacts()
  • กรองผู้ติดต่อที่ต้องการจากอาร์เรย์ในวัตถุ Contact
  • สุดท้าย เรียกเมธอด IGmailClient.DeleteContact(Contact.Id.GoogleId) เพื่อลบผู้ติดต่อ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบผู้ติดต่อใน Gmail ใน C#

// เริ่มต้นผู้ใช้ Google
GoogleUser User = new GoogleUser("user", "email address", "password", "clientId", "client secret");
string accessToken;
string refreshToken;

// รับโทเค็นการเข้าถึง
GoogleOAuthHelper.GetAccessToken(User, out accessToken, out refreshToken);

// รับ IGmailClient
using (IGmailClient client = GmailClient.GetInstance(accessToken, User.EMail))
{
    // รับรายชื่อทั้งหมด
    Contact[] contacts = client.GetAllContacts();
    Contact contact = contacts[0];
    
    // ลบผู้ติดต่อ
    client.DeleteContact(contact.Id.GoogleId);

}

รับใบอนุญาต API ฟรี

คุณสามารถใช้ Aspose.Email for .NET ได้โดยไม่มีข้อจำกัดในการประเมินโดยใช้ ใบอนุญาตชั่วคราวฟรี

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีสร้างและอัปเดตผู้ติดต่อในบัญชี Gmail ใน C# .NET นอกจากนี้ คุณได้เห็นวิธีการลบผู้ติดต่อ Gmail โดยทางโปรแกรม นอกจากนี้ คุณสามารถไปที่ เอกสารประกอบ เพื่อสำรวจคุณสมบัติอื่นๆ ของ Aspose.Email for .NET ในกรณีที่คุณมีคำถาม คุณสามารถโพสต์ได้ที่ ฟอรัม ของเรา

ดูสิ่งนี้ด้วย