<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Documentation – Bài viết kỹ thuật</title>
    <link>/email/vi/net/technical-articles/</link>
    <description>Recent content in Bài viết kỹ thuật on Documentation</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>vi</language>
    
	  <atom:link href="/email/vi/net/technical-articles/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Net: Tại sao Aspose.Email</title>
      <link>/email/vi/net/why-aspose-email/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/why-aspose-email/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Net: So sánh Aspose.Email.Mail với các API của Microsoft</title>
      <link>/email/vi/net/comparison-of-aspose-email-mail-with-ms-apis/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/comparison-of-aspose-email-mail-with-ms-apis/</guid>
      <description>
        
        
        &lt;h2 id=&#34;so-sánh-aspose-email-mail-với-các-api-của-ms&#34;&gt;&lt;strong&gt;So sánh Aspose Email Mail với các API của MS&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;System.Web.Mail chỉ là một lớp bao quanh hai thư viện COM: CDONTS.NewMail (nằm trong cdonts.dll) và CDO.Message (nằm trong cdosys.dll). Bạn cũng cần chúng được cài đặt trên máy chủ của mình. Mặc định, cdonts.dll và cdosys.dll được cài đặt cùng với WindowsNT/2000/XP/2003.&lt;/p&gt;
&lt;h3 id=&#34;chi-tiết-smtpmail&#34;&gt;&lt;strong&gt;Chi tiết SmtpMail&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Nếu bạn theo dõi vào lớp System.Web.Mail.SmtpMail, bạn sẽ thấy một số hành vi lạ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nó chỉ hỗ trợ các hệ điều hành Win32NT, ví dụ, Windows 2000, Windows 2003, Windows XP.&lt;/li&gt;
&lt;li&gt;Khi lớp SmtpMail gửi một tin nhắn email, nó kiểm tra phiên bản OS. Nếu phiên bản &amp;lt;= 4, đối tượng CDONTS.Newmail được sử dụng; đối với tất cả các hệ điều hành có phiên bản lớn hơn 4, đối tượng CDO.Message được sử dụng.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Những điểm đặc biệt này làm cho việc khắc phục sự cố trở nên khó khăn hơn nhiều, đặc biệt khi chuyển mã sang các hệ điều hành khác nhau. Ứng dụng có thể nhận được kết quả không mong muốn trên các OS khác nhau. Aspose.Email.Mail là một thành phần .NET được viết hoàn toàn bằng mã quản lý thuần túy trong C#. Nó không phụ thuộc vào bất kỳ thư viện COM nào, bao gồm CDONTS.NewMail hoặc CDO.Message. Với Aspose.Email.Mail, bạn tránh việc gọi bất kỳ mã không quản lý nào trong ứng dụng của mình, tăng độ tin cậy và giải phóng mình khỏi việc gỡ lỗi COM nhàm chán. Aspose.Email.Mail có nhiều tính năng và cung cấp nhiều dịch vụ hơn so với kiến trúc System.Web.Mail. System.Net.Mail là một triển khai mới của khách hàng giao thức SMTP trong .NET 2.0. Nó cũng là một triển khai mã quản lý thuần túy trong C#.&lt;/p&gt;
&lt;h3 id=&#34;ma-trận-so-sánh&#34;&gt;&lt;strong&gt;Ma trận So sánh&lt;/strong&gt;&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Tính năng&lt;/strong&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Aspose.Email.Mail&lt;/strong&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;&lt;strong&gt;System.Web.Mail&lt;/strong&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;&lt;strong&gt;System.Net.Mail&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Các tính năng tương thích&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hỗ trợ .NET 2.0&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Các tính năng chung&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Phụ thuộc CDO/CDONTS&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mã quản lý thuần túy&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Xác thực&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Địa chỉ người gửi&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Địa chỉ người nhận&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Nội dung HTML&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Nội dung văn bản&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Bcc/Cc&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Gửi tệp đính kèm&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hình ảnh liên kết&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mã hóa nội dung (Unicode/ASCII)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mã hóa tiêu đề (Unicode/ASCII)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mô hình lập trình đồng bộ&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mô hình lập trình bất đồng bộ&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Các tính năng độc đáo&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tiêu đề thư tùy chỉnh&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tiêu đề mức quan trọng&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tiêu đề độ nhạy&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tiêu đề X-Mailer&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Trả lời tới&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Ngày gửi&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hợp nhất thư dựa trên mẫu&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hợp nhất thư từ DataSet&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hợp nhất thư từ DataTable&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hợp nhất thư từ DataReader&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Gửi hàng loạt với đa luồng&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Gửi lịch&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Gửi yêu cầu họp&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tải từ định dạng Microsoft Msg&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tải từ định dạng Microsoft Mht&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Lưu thành định dạng Microsoft Mht&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Lưu thành định dạng Eml&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tải từ định dạng Eml&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tải từ tệp tuân thủ RFC 822&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Các tính năng tương tác&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hoạt động với Aspose.Email.Pop3&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hoạt động với Aspose.Email.Imap&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hoạt động với Aspose.Email.Mime&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Sự khác biệt giữa POP3 và IMAP</title>
      <link>/email/vi/net/difference-between-pop3-and-imap/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/difference-between-pop3-and-imap/</guid>
      <description>
        
        
        &lt;h2 id=&#34;sự-khác-nhau-giữa-pop3-và-imap&#34;&gt;&lt;strong&gt;Sự khác nhau giữa POP3 và IMAP&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Dưới đây là giải thích về sự khác nhau chung giữa các giao thức email IMAP và POP3.&lt;/p&gt;
&lt;h3 id=&#34;pop3-và-imap&#34;&gt;&lt;strong&gt;POP3 và IMAP&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;POP3 và IMAP đều là các giao thức email hoạt động với hầu hết các khách hàng email hiện đại. Sự khác biệt chính của chúng là cách quản lý và lưu trữ email.&lt;/p&gt;
&lt;h4 id=&#34;pop3&#34;&gt;&lt;strong&gt;POP3&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Với tài khoản email POP3, bạn chỉ có một thư mục: thư mục Hộp đến. Khi mở hộp thư, thư mới được chuyển từ máy chủ và lưu trên máy tính của bạn. Nếu muốn đọc các email cũ, bạn phải vào máy tính nơi bạn lần cuối mở chúng. (Một số khách hàng email cho phép lưu email trên máy chủ để bạn có thể truy cập từ nhiều vị trí. Xem thêm bên dưới.)&lt;/p&gt;
&lt;p&gt;Với loại tài khoản này, bạn không cần luôn đăng nhập vào Internet. Bạn có thể đăng nhập khi muốn nhận và gửi tin nhắn mới. Khi các tin nhắn mới đã được tải xuống máy tính, bạn có thể đăng xuất để đọc chúng. Tài khoản POP3 phù hợp khi bạn kết nối bằng modem tới DAS và bị tính phí kết nối, hoặc có máy tính cũ.&lt;/p&gt;
&lt;h4 id=&#34;tài-khoản-imap&#34;&gt;&lt;strong&gt;Tài khoản IMAP&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Khi sử dụng giao thức này, tất cả email của bạn vẫn ở trên máy chủ trong nhiều thư mục, bao gồm cả những thư mục bạn tự tạo. Điều này cho phép bạn kết nối tới bất kỳ máy tính nào và xem toàn bộ email và thư mục email. Nói chung, IMAP rất phù hợp nếu bạn có kết nối Internet cố định hoặc kiểm tra email từ nhiều vị trí.&lt;/p&gt;
&lt;h4 id=&#34;giữ-mail-trên-máy-chủ-vs-xóa-mail-khỏi-máy-chủ&#34;&gt;&lt;strong&gt;Giữ mail trên máy chủ vs. Xóa mail khỏi máy chủ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Nếu bạn sử dụng giao thức POP3 và đọc email từ nhiều máy tính, bạn muốn để email trên máy chủ để chúng luôn có sẵn. Nếu bạn không để email trên máy chủ, tất cả thư trong Hộp đến sẽ được tải xuống máy tính bạn đang sử dụng. Nếu bạn chỉ đọc email từ một nơi duy nhất, thì không cần để email trên máy chủ. Bạn sẽ thấy hướng dẫn cách thiết lập tùy chọn này khi thực hiện các bước cấu hình chương trình email của mình.&lt;/p&gt;
&lt;p&gt;Tại sao nên chọn IMAP thay vì POP3 và để email trên máy chủ? Với POP3, chỉ có các tin nhắn email của bạn trên máy chủ, nhưng với IMAP, các thư mục email của bạn cũng nằm trên máy chủ.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Truy cập Gmail qua SSL</title>
      <link>/email/vi/net/accessing-gmail-on-ssl/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/accessing-gmail-on-ssl/</guid>
      <description>
        
        
        &lt;h2 id=&#34;smtp&#34;&gt;&lt;strong&gt;SMTP&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Bài viết này chỉ cách thực hiện &lt;a href=&#34;/email/vi/net/accessing-gmail-on-ssl/#connecting-to-gmail-smtp-server&#34;&gt;kết nối tới máy chủ Gmail&lt;/a&gt; và &lt;a href=&#34;/email/vi/net/accessing-gmail-on-ssl/#sending-an-email-message&#34;&gt;gửi một email&lt;/a&gt; sử dụng giao thức SMTP trên SSL.&lt;/p&gt;
&lt;h3 id=&#34;kết-nối-tới-máy-chủ-smtp-của-gmail&#34;&gt;&lt;strong&gt;Kết nối tới máy chủ SMTP của Gmail&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Đoạn mã dưới đây cho bạn thấy cách kết nối tới máy chủ SMTP hỗ trợ SSL.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-ConnectingGmailSMTPServer-ConnectingGmailSMTPServer.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;gửi-một-tin-nhắn-email&#34;&gt;&lt;strong&gt;Gửi một Tin Nhắn Email&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Mã trên đã thiết lập đối tượng SMTPClient để kết nối tới máy chủ Gmail. Để gửi một tin nhắn bằng cùng đối tượng client, tạo một &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; đối tượng lớp và gửi tin nhắn bằng đối tượng khách hàng SMTP. Đoạn mã dưới đây cho bạn thấy cách thiết lập các thuộc tính của tin nhắn, ví dụ như chủ đề, người nhận và nội dung:&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-SendEmailMessage-SendEmailMessage.cs&#34;&gt;&lt;/script&gt;

&lt;h2 id=&#34;imap&#34;&gt;&lt;strong&gt;IMAP&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Bài viết này chỉ cách thực hiện một số hoạt động trên máy chủ thư hỗ trợ SSL bằng giao thức IMAP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kết nối tới máy chủ thư.&lt;/li&gt;
&lt;li&gt;Lấy tổng số tin nhắn trong hộp đến.&lt;/li&gt;
&lt;li&gt;Lưu tin nhắn cục bộ.&lt;/li&gt;
&lt;li&gt;Tạo một tin nhắn và thêm nó vào thư mục.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;kết-nối-tới-máy-chủ-thư&#34;&gt;&lt;strong&gt;Kết nối tới Máy chủ Thư&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Sử dụng Aspose.Email&amp;rsquo;s &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.imap/imapclient&#34;&gt;ImapClient&lt;/a&gt; đối tượng lớp để kết nối tới máy chủ thư. Địa chỉ, cổng, tên người dùng và mật khẩu của máy chủ là bắt buộc để thiết lập kết nối. Gmail sử dụng cổng 993 cho giao thức IMAP, đoạn mã dưới đây cho bạn thấy cách kết nối tới Gmail bằng cổng đó.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-ConnectToGmailUsingIMAP-ConnectToGmailUsingIMAP.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;chọn-thư-mục-và-lấy-tổng-số-tin-nhắn&#34;&gt;&lt;strong&gt;Chọn Thư mục và Lấy Tổng số Tin nhắn&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Kiểm tra thư mục Inbox là nhiệm vụ thường xuyên nhất khi kiểm tra email. Sử dụng Aspose.Email, việc này có thể thực hiện chỉ bằng hai dòng mã đơn giản. Đoạn mã dưới đây cho bạn cách truy cập thư mục Inbox và lấy tổng số tin nhắn trong thư mục.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-GetGmailMessageCountUsingIMAP-GetGmailMessageCountUsingIMAP.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;lưu-tin-nhắn-vào-ổ-cứng-cục-bộ&#34;&gt;&lt;strong&gt;Lưu Tin nhắn vào Ổ Cứng Cục bộ&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Sau khi một thư mục được chọn bằng phương thức SelectFolder, sử dụng hàm ListMessages để lấy danh sách tất cả các tin nhắn trong thư mục dưới dạng đối tượng ImapMessagesInfoCollection. Duyệt qua bộ sưu tập này và lưu các tin nhắn email vào ổ đĩa cục bộ của máy tính như sau:&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-SaveGmailMessages-SaveGmailMessages.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;tạo-thư-mục-mới&#34;&gt;&lt;strong&gt;Tạo Thư mục Mới&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Giao thức IMAP cũng cho phép bạn tạo một thư mục mới trên máy chủ email. Điều này có thể thực hiện bằng một lời gọi hàm đơn giản.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-CreateNewGmailFolderUsingIMAP-CreateNewGmailFolderUsingIMAP.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;tạo-một-tin-nhắn-mới-trong-thư-mục&#34;&gt;&lt;strong&gt;Tạo một Tin nhắn Mới trong Thư mục&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Thêm một tin nhắn mới vào thư mục bằng cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; và &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.imap/imapclient&#34;&gt;ImapClient&lt;/a&gt; lớp. Các ví dụ dưới đây tạo một đối tượng MailMessage đầu tiên bằng cách cung cấp giá trị chủ đề, người nhận và người gửi. Sau đó, nó đăng ký vào một thư mục và thêm tin nhắn vào đó. Đoạn mã dưới đây cho bạn tạo một tin nhắn mới trong thư mục.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-AddingMessageToGmailFolderUsingIMAP-AddingMessageToGmailFolderUsingIMAP.cs&#34;&gt;&lt;/script&gt;

&lt;h2 id=&#34;pop3&#34;&gt;&lt;strong&gt;POP3&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Bài viết này trình bày một số ví dụ sử dụng giao thức POP3 trên SSL. Để kết nối tới máy chủ được bảo vệ bằng SSL, chúng ta cần xác định cổng SSL và hai thuộc tính bổ sung. Phần còn lại của mã giống như khi kết nối tới máy chủ POP3 thông thường.&lt;/p&gt;
&lt;p&gt;Các mẫu mã dưới đây cho thấy cách thực hiện:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kết nối tới máy chủ SSL.&lt;/li&gt;
&lt;li&gt;Kiểm tra trạng thái hộp thư&lt;/li&gt;
&lt;li&gt;Lấy thông tin về tin nhắn&lt;/li&gt;
&lt;li&gt;Lấy email.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;kết-nối-tới-máy-chủ-thư-1&#34;&gt;&lt;strong&gt;Kết nối tới Máy chủ Thư&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Kết nối tới máy chủ thư hỗ trợ SSL bằng cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3client&#34;&gt;Pop3client&lt;/a&gt; lớp như mô tả dưới đây.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-ConnectToGmailUsingPOP3-ConnectToGmailUsingPOP3.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;kiểm-tra-trạng-thái-hộp-thư&#34;&gt;&lt;strong&gt;Kiểm tra trạng thái hộp thư&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Đoạn mã sau cho bạn thấy cách kiểm tra số lượng tin nhắn được lưu trong hộp thư và kích thước của hộp thư. Sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3mailboxinfo&#34;&gt;Pop3MailboxInfo&lt;/a&gt; lớp cho mục đích này.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-CheckGmailMailboxStatus-CheckGmailMailboxStatus.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;kiểm-tra-thông-tin-tin-nhắn&#34;&gt;&lt;strong&gt;Kiểm tra thông tin tin nhắn&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Ví dụ này kiểm tra tất cả các tin nhắn trong hộp thư bằng cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3messageinfocollection&#34;&gt;Pop3MessageInfoCollection&lt;/a&gt; lớp. Sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3client/methods/listmessages/index&#34;&gt;Pop3Client.ListMessages()&lt;/a&gt; hàm để lấy &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3messageinfocollection&#34;&gt;Pop3MessageInfoCollection&lt;/a&gt; bộ sưu tập. Sau đó lặp qua bộ sưu tập để đọc thông tin tin nhắn: ID tin nhắn, chỉ mục, tiêu đề và kích thước&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-CheckGmailMessageInformation-CheckGmailMessageInformation.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;lấy-tin-nhắn&#34;&gt;&lt;strong&gt;Lấy tin nhắn&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Để lấy các tin nhắn từ hộp thư, sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3client&#34;&gt;Pop3Client&lt;/a&gt; phương thức FetchMessage() của lớp để lấy tin nhắn vào một &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; đối tượng kiểu. Đoạn mã sau cho bạn thấy cách đếm số lượng email trong hộp thư và sau đó lặp qua chúng để lấy từng email.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-RetrieveGmailMessages-RetrieveGmailMessages.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Giới thiệu các mẫu lặp lại</title>
      <link>/email/vi/net/introducing-recurrence-patterns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/introducing-recurrence-patterns/</guid>
      <description>
        
        
        &lt;p&gt;Bạn có thể xem một &lt;em&gt;recurrence pattern&lt;/em&gt; như là một cách để mô tả một lịch trình cụ thể. Nó chứa đủ thông tin để xây dựng danh sách các lần xuất hiện (ngày và thời gian) theo lịch đã cho. Một mẫu lặp có thể chứa các quy tắc lặp mô tả các chu kỳ kết hợp để tạo thành mẫu tổng thể. Nói chung, mẫu lặp càng phức tạp, nó sẽ chứa càng nhiều quy tắc lặp. Mẫu lặp có thể bao gồm &lt;em&gt;exceptions&lt;/em&gt; (không nên nhầm lẫn với các ngoại lệ đại diện cho lỗi xảy ra trong quá trình thực thi ứng dụng). Các ngoại lệ thêm vào hoặc loại bỏ các ngày xuất hiện so với mẫu gốc. Các ngoại lệ có thể được chỉ định dưới dạng các lần xuất hiện cụ thể hoặc tự chúng là một mẫu. Các ví dụ về mẫu lặp có ngoại lệ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mỗi thứ Sáu thứ hai, ngoại trừ từ tháng 6 đến tháng 8.&lt;/li&gt;
&lt;li&gt;Ngày 1 của mỗi tháng, ngoại trừ tháng Giêng, khi nó sẽ rơi vào ngày 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mẫu lặp thường là định kỳ, nhưng chúng không nhất thiết phải như vậy. Một mẫu lặp có thể được mô tả hoàn toàn chỉ như một tập hợp các ngày và thời gian xuất hiện được định sẵn. RFC iCalendar định nghĩa &lt;em&gt;components&lt;/em&gt;, chẳng hạn như VEVENT hoặc VTODO, đại diện cho sự kiện hoặc nhiệm vụ. Các thành phần có thể có các thuộc tính như thời gian bắt đầu, mô tả, địa điểm, người tham dự và chu kỳ lặp lại. Do đó, một mẫu lặp thường tồn tại như một thuộc tính của một nhiệm vụ lặp lại hoặc một sự kiện. Các thuộc tính mẫu lặp được định nghĩa bởi iCalendar là:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DTSTART - ngày và thời gian bắt đầu của mẫu (cũng đại diện cho lần xuất hiện đầu tiên nếu không bị loại trừ một cách rõ ràng).&lt;/li&gt;
&lt;li&gt;RRULE - chỉ định một quy tắc lặp lại cho một tập lặp lại.&lt;/li&gt;
&lt;li&gt;RDATE - định nghĩa danh sách các ngày và thời gian để bao gồm trong tập lặp lại.&lt;/li&gt;
&lt;li&gt;EXRULE - chỉ định một quy tắc lặp lại cho các ngoại lệ khỏi tập lặp lại.&lt;/li&gt;
&lt;li&gt;EXDATE - định nghĩa danh sách các ngày và thời gian ngoại lệ khỏi tập lặp lại.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chỉ cần DTSTART và phải có duy nhất một DTSTART. Tất cả các thuộc tính khác là tùy chọn và có thể được chỉ định nhiều lần. Aspose.iCalendar nhận một chuỗi ở định dạng iCalendar và đọc mẫu lặp vào một &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.calendar.recurrences/recurrencepattern&#34;&gt;RecurrencePattern&lt;/a&gt; đối tượng. Chuỗi có thể là mô tả đầy đủ của một thành phần iCalendar (ví dụ, một VEVENT hoàn chỉnh) hoặc chỉ là một đoạn chứa mẫu lặp lại. Khi mẫu lặp đã được tải vào đối tượng RecurrencePattern, bạn có thể:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xem xét và sửa đổi mẫu bằng chương trình thông qua các phương thức và thuộc tính do Aspose.iCalendar cung cấp&lt;/li&gt;
&lt;li&gt;Tạo ngày/giờ xuất hiện trong phạm vi ngày xác định.&lt;/li&gt;
&lt;li&gt;Lưu mẫu ở định dạng iCalendar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Đoạn mã sau cho bạn thấy phần RRULE chứa quy tắc lặp lại.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-RecurrencePattern-RecurrencePattern.cs&#34;&gt;&lt;/script&gt;

&lt;p&gt;Xem phần &lt;a href=&#34;/email/vi/net/introducing-recurrence-patterns/#sample-patterns&#34;&gt;các mẫu lặp&lt;/a&gt; cho các minh họa về cách tạo mẫu lặp.&lt;/p&gt;
&lt;h2 id=&#34;về-mô-hình-đối-tượng-asposeicalendar&#34;&gt;&lt;strong&gt;Về Mô Hình Đối Tượng Aspose.iCalendar&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Không gian tên Aspose.iCalendar chứa tất cả các lớp được cung cấp bởi thành phần Aspose.iCalendar. RecurrencePattern và RecurrenceRule là các lớp trung tâm của Aspose.iCalendar, và cung cấp các triển khai cụ thể cho các phần tử RFC 2445 tương ứng.&lt;/p&gt;
&lt;p&gt;Lớp RecurrencePattern đại diện cho toàn bộ mẫu lặp. Bạn có thể tạo một mẫu lặp mới từ đầu bằng cách sử dụng hàm tạo mặc định hoặc tải một mẫu hiện có ở định dạng iCalendar bằng phương thức tĩnh FromiCalendar. Lớp RecurrenceRule đại diện cho phần RRULE hoặc EXRULE của một mẫu lặp. RecurrenceRule cung cấp một số thuộc tính ánh xạ trực tiếp tới các đối tương trong tiêu chuẩn iCalendar. Ví dụ, ByMonth ánh xạ tới BYMONTH trong iCalendar và tương tự. Bằng cách kiểm tra hoặc đặt giá trị của các thuộc tính RecurrenceRule, bạn có thể phân tích hoặc sửa đổi một quy tắc lặp. Để biết thêm thông tin và mẫu mã, xem RecurrencePattern và RecurrenceRule trong Tài liệu API.&lt;/p&gt;
&lt;h2 id=&#34;mẫu-ví-dụ&#34;&gt;&lt;strong&gt;Mẫu Ví Dụ&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Phần này bao gồm các chủ đề sau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ngày Cuối Cùng Của Tháng.&lt;/li&gt;
&lt;li&gt;Ngày Làm Việc Cuối Cùng Mỗi Tháng.&lt;/li&gt;
&lt;li&gt;Thứ Hai Cuối Cùng Của Năm.&lt;/li&gt;
&lt;li&gt;Thứ Sáu của Tuần ISO 8601 Đầu Tiên trong Năm.&lt;/li&gt;
&lt;li&gt;Thứ Sáu Đầu Năm.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ngày-cuối-cùng-của-tháng&#34;&gt;&lt;strong&gt;Ngày Cuối Cùng Của Tháng&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Các mẫu này &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;mẫu lặp&lt;/a&gt; chỉ định ngày cuối cùng của tháng, mỗi tháng.&lt;/p&gt;
&lt;p&gt;RRULE:FREQ=MONTHLY;BYMONTHDAY=-1&lt;/p&gt;
&lt;p&gt;Tương tự, nếu bạn muốn một lần xuất hiện vào một ngày trước ngày cuối cùng của tháng, hãy sử dụng BYMONTHDAY=-2. Nếu bạn chỉ định BYMONTHDAY=31 thì theo tiêu chuẩn iCalendar, sẽ không có lần xuất hiện nào được tạo ra trong các tháng có ít hơn 31 ngày.&lt;/p&gt;
&lt;h3 id=&#34;ngày-làm-việc-cuối-cùng-mỗi-tháng&#34;&gt;&lt;strong&gt;Ngày Làm Việc Cuối Cùng Mỗi Tháng&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Các mẫu này &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;mẫu lặp&lt;/a&gt; chỉ định ngày làm việc cuối cùng của tháng, mỗi tháng. Ngày làm việc được định nghĩa là những ngày bạn làm việc. Ở châu Âu, ví dụ, ngày làm việc thường là từ thứ Hai đến thứ Sáu.&lt;/p&gt;
&lt;p&gt;RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1&lt;/p&gt;
&lt;p&gt;Quy tắc trên chỉ định tất cả các ngày làm việc của một tháng và chọn ngày cuối cùng trong số chúng. Kết quả là ngày làm việc cuối cùng trong tháng.&lt;/p&gt;
&lt;h3 id=&#34;thứ-hai-cuối-cùng-của-năm&#34;&gt;&lt;strong&gt;Thứ Hai Cuối Cùng Của Năm&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Mẫu này &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;mẫu lặp&lt;/a&gt; chỉ định một sự kiện xảy ra vào thứ Hai cuối cùng của năm.&lt;/p&gt;
&lt;p&gt;RRULE:FREQ=YEARLY;BYDAY=-1MO&lt;/p&gt;
&lt;h3 id=&#34;thứ-sáu-của-tuần-iso-8601-đầu-tiên-trong-năm&#34;&gt;&lt;strong&gt;Thứ Sáu của Tuần ISO 8601 Đầu Tiên trong Năm&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Mẫu này &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;mẫu lặp&lt;/a&gt; chỉ định thứ Sáu của tuần đầu tiên trong năm. Theo đặc tả ISO 8601, tuần đầu tiên của năm là tuần có ít nhất bốn ngày. Khi một năm bắt đầu vào thứ Bảy, ví dụ, tuần 1 là tuần ngay sau đó, bắt đầu vào thứ Hai, ngày 3 tháng 1.&lt;/p&gt;
&lt;p&gt;FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR&lt;/p&gt;
&lt;h3 id=&#34;thứ-sáu-đầu-năm&#34;&gt;&lt;strong&gt;Thứ Sáu Đầu Năm&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Mẫu này &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;mẫu lặp&lt;/a&gt; chỉ định một sự kiện xảy ra vào thứ Sáu đầu tiên của năm.&lt;/p&gt;
&lt;p&gt;FREQ=YEARLY;BYDAY=1FR&lt;/p&gt;
&lt;p&gt;Ví dụ, vào năm 1999, thứ Sáu thứ nhất của năm là 1999/01/01, trong khi thứ Sáu của tuần ISO 8601 thứ nhất là 1999/01/08.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Chi tiết quan trọng về iCalendar RFC 2445</title>
      <link>/email/vi/net/important-icalendar-rfc-2445-details/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/important-icalendar-rfc-2445-details/</guid>
      <description>
        
        
        &lt;h2 id=&#34;về-mô-hình-đối-tượng-asposeicalendar&#34;&gt;&lt;strong&gt;Về Mô Hình Đối Tượng Aspose.iCalendar&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Cái &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.calendar&#34;&gt;Aspose.iCalendar&lt;/a&gt; không gian tên chứa tất cả các lớp được cung cấp bởi thành phần Aspose.iCalendar. RecurrencePattern và RecurrenceRule là các lớp trung tâm của Aspose.iCalendar và cung cấp các triển khai cụ thể cho các phần tử RFC 2445 tương ứng.&lt;/p&gt;
&lt;p&gt;Lớp RecurrencePattern đại diện cho toàn bộ mẫu lặp. Bạn có thể tạo một mẫu lặp mới từ đầu bằng cách sử dụng hàm tạo mặc định hoặc tải một mẫu hiện có ở định dạng iCalendar bằng phương thức tĩnh FromiCalendar. Lớp RecurrenceRule đại diện cho phần RRULE hoặc EXRULE của một mẫu lặp. RecurrenceRule cung cấp một số thuộc tính ánh xạ trực tiếp tới các đối tương trong tiêu chuẩn iCalendar. Ví dụ, ByMonth ánh xạ tới BYMONTH trong iCalendar và tương tự. Bằng cách kiểm tra hoặc đặt giá trị của các thuộc tính RecurrenceRule, bạn có thể phân tích hoặc sửa đổi một quy tắc lặp. Để biết thêm thông tin và mẫu mã, xem RecurrencePattern và RecurrenceRule trong Tài liệu API.&lt;/p&gt;
&lt;h2 id=&#34;chi-tiết-quan-trọng-icalendar-rfc-2445&#34;&gt;&lt;strong&gt;Chi tiết quan trọng iCalendar RFC 2445&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Phần này bao gồm các chủ đề sau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Định dạng Ngày và Giờ.&lt;/li&gt;
&lt;li&gt;DATE.&lt;/li&gt;
&lt;li&gt;DATE-TIME với Thời gian địa phương.&lt;/li&gt;
&lt;li&gt;DATE-TIME với Thời gian UTC.&lt;/li&gt;
&lt;li&gt;DATE-TIME với Thời gian địa phương và Múi giờ.&lt;/li&gt;
&lt;li&gt;BYWEEKNO Cung cấp Tuân thủ ISO 8601&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;định-dạng-ngày-và-giờ&#34;&gt;&lt;strong&gt;Định dạng Ngày và Giờ&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Ngày, hoặc ngày kèm thời gian liên quan, có thể được sử dụng trong các phần tử DTSTART, UNTIL, EXDATE và RDATE khi chỉ định một mẫu lặp lại. iCalendar định nghĩa kiểu giá trị DATE để nhận diện các giá trị chứa ngày lịch và cũng định nghĩa kiểu DATE-TIME để nhận diện các giá trị chỉ định ngày lịch và thời gian trong ngày một cách chính xác. Các giá trị DATE-TIME có thể được chỉ định dưới ba dạng, với:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Thời gian địa phương.&lt;/li&gt;
&lt;li&gt;Thời gian UTC.&lt;/li&gt;
&lt;li&gt;Thời gian địa phương và múi giờ.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;date&#34;&gt;&lt;strong&gt;DATE&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Theo tiêu chuẩn iCalendar, các giá trị DATE phải tuân theo định dạng yyyyMMdd. Ví dụ sau biểu thị ngày 14 tháng 7 năm 1997: 19970714&lt;/p&gt;
&lt;h3 id=&#34;date-time-với-thời-gian-địa-phương&#34;&gt;&lt;strong&gt;DATE-TIME với Thời gian địa phương&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Ngày ở dạng thời gian địa phương chỉ đơn giản là một giá trị ngày‑giờ không chứa ký hiệu UTC và không tham chiếu đến múi giờ. Ví dụ, đoạn sau biểu thị ngày 18 tháng 1 năm 1998, lúc 23:00: DTSTART:19980118T230000. Các giá trị ngày‑giờ kiểu này được gọi là &amp;quot;floating&amp;quot; và không bị ràng buộc vào bất kỳ múi giờ nào cụ thể. Chúng được dùng để đại diện cho cùng một giá trị giờ, phút và giây bất kể múi giờ nào đang được áp dụng.&lt;/p&gt;
&lt;h3 id=&#34;date-time-với-thời-gian-utc&#34;&gt;&lt;strong&gt;DATE-TIME với Thời gian UTC&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Ngày có thời gian UTC, hoặc thời gian tuyệt đối, được xác định bằng ký tự hậu tố Z (chữ in hoa) được gắn vào giá trị thời gian. Ví dụ, đoạn sau đại diện cho ngày 19 tháng 1 năm 1998, lúc 07:00 UTC: DTSTART:19980119T070000Z. Lưu ý rằng Aspose.iCalendar bỏ qua định dạng hậu tố Z UTC và xử lý thời gian như là thời gian địa phương. Tiêu chuẩn RFC2445 quy định phần thời gian được chỉ định trong quy tắc UNTIL của một mẫu lặp phải ở định dạng UTC. Đây là một tuyên bố rất kỳ lạ, và thực tế, có các ví dụ trong tiêu chuẩn được tính toán sai. Aspose.iCalendar chấp nhận thời gian ở bất kỳ định dạng nào trong quy tắc UNTIL.&lt;/p&gt;
&lt;h3 id=&#34;date-time-với-thời-gian-địa-phương-và-múi-giờ&#34;&gt;&lt;strong&gt;DATE-TIME với Thời gian địa phương và Múi giờ&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Để tham chiếu múi giờ, DATE-TIME được sửa đổi bằng thuộc tính TZID. Ví dụ, đoạn sau đại diện cho 2 giờ sáng tại New York vào ngày 19 tháng 1 năm 1998: DTSTART;TZID=US-Eastern:19980119T020000. Lưu ý rằng Aspose.iCalendar hiện đang bỏ qua tham số TZID và xử lý thời gian như là thời gian địa phương.&lt;/p&gt;
&lt;h3 id=&#34;byweekno-cung-cấp-tuân-thủ-iso-8601&#34;&gt;&lt;strong&gt;BYWEEKNO Cung cấp Tuân thủ ISO 8601&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Chỉ sử dụng BYWEEKNO khi tuân thủ với &lt;a href=&#34;https://en.wikipedia.org/wiki/ISO_8601&#34;&gt;ISO 8601&lt;/a&gt; được yêu cầu. Số tuần được định nghĩa theo ISO 8601 rất khác so với số tuần theo nghĩa thông thường. Theo ISO 8601, tuần số một của năm lịch là tuần đầu tiên của năm lịch có ít nhất bốn ngày. Quy tắc này làm cho thuật toán trở nên đặc thù cho các ứng dụng yêu cầu tuân thủ ISO 8601 và gần như không áp dụng cho các mục đích khác. ISO 8601 được một số ứng dụng ngân hàng và tài chính châu Âu hỗ trợ. Nó cũng được sử dụng trong truyền hình để đặt chỗ quảng cáo. Quy tắc BYWEEKNO xác định danh sách các số, ngăn cách bằng dấu phẩy, chỉ định các tuần của năm. Giá trị hợp lệ là 1 đến 53 và 1 đến 53. Điều này tương ứng với các tuần theo đánh số tuần được định nghĩa trong ISO 8601. BYWEEKNO chỉ hợp lệ cho các quy tắc YEARLY.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Phân tích Tệp Tin Nhắn Microsoft Outlook</title>
      <link>/email/vi/net/parsing-microsoft-outlook-message-files/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/parsing-microsoft-outlook-message-files/</guid>
      <description>
        
        
        &lt;p&gt;Với Aspose.Email, bạn có thể phân tích các tin Outlook chỉ bằng một vài dòng mã. Bài viết này chỉ cách thực hiện. Aspose.Email có các lớp để thực hiện nhiều tác vụ lập trình với tin Outlook. Ví dụ mã dưới đây cho thấy cách:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tải một tin email.&lt;/li&gt;
&lt;li&gt;Lấy tiêu đề email.&lt;/li&gt;
&lt;li&gt;Lấy tên người gửi.&lt;/li&gt;
&lt;li&gt;Lấy nội dung toàn bộ tin.&lt;/li&gt;
&lt;li&gt;Kiểm tra xem có tệp đính kèm hay không.&lt;/li&gt;
&lt;li&gt;Lấy tên tệp của các tệp đính kèm và lưu chúng.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Đoạn mã dưới đây cho bạn thấy cách phân tích các tệp tin tin nhắn Microsoft Outlook.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-ParsingOutlookFiles-ParsingOutlookFiles.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Nhận thông báo cho các tin nhắn đã gửi thành công và thất bại</title>
      <link>/email/vi/net/receiving-notifications-for-successfully-sent-and-failed-messages/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/receiving-notifications-for-successfully-sent-and-failed-messages/</guid>
      <description>
        
        
        &lt;p&gt;Khi bạn muốn nhận thông báo giao hàng cho cả tin nhắn đã gửi thành công và thất bại, bạn có thể sử dụng toán tử pipe (|) cho &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage/properties/deliverynotificationoptions&#34;&gt;DeliveryNotificationOptions&lt;/a&gt; thuộc tính của &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; lớp. Đoạn mã mẫu sau cho bạn thấy cách nhận thông báo cho các tin nhắn đã gửi thành công và thất bại.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-ReceiveNotifications-ReceiveNotifications.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Phát hiện Tin nhắn Email Mới trên Máy chủ POP3</title>
      <link>/email/vi/net/detecting-new-email-messages-on-pop3-server/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/detecting-new-email-messages-on-pop3-server/</guid>
      <description>
        
        
        &lt;p&gt;Với tài khoản POP3, bạn có thể để lại các tin trên máy chủ khi tải xuống và đọc chúng. Việc để email trên máy chủ có nghĩa là chúng có sẵn cho các ứng dụng và cá nhân khác, ví dụ, người dùng truy cập email từ nhiều thiết bị. Hoặc bạn có thể muốn chỉ tải những tin đáp ứng tiêu chí đặc biệt, chẳng hạn như các tin có tiêu đề nhất định. Để quản lý email, bạn có thể;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Đọc tất cả các tin từ máy chủ thư POP3 bằng Aspose.Email.&lt;/li&gt;
&lt;li&gt;Tải các tin vào cơ sở dữ liệu cục bộ của bạn.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Các tin không bị xóa mà vẫn ở trên máy chủ. Lần đầu chạy, quy trình này hoạt động tốt. Tất cả các tin cần thiết được tải xuống cơ sở dữ liệu. Nhưng lần thứ hai chạy, cùng các tin lại được tải vì chúng vẫn còn trên máy chủ email. Điều này gây ra bản ghi trùng lặp. Để giải quyết vấn đề này, sử dụng &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients.pop3/pop3messageinfo/properties/uniqueid&#34;&gt;Pop3MessageInfo.UniqueID&lt;/a&gt; thuộc tính để kiểm tra xem một tin đã được tải xuống chưa. ID duy nhất của tin phải được lưu trong cơ sở dữ liệu: nó là khóa tìm kiếm để phát hiện tin mới.&lt;/p&gt;
&lt;h2 id=&#34;phát-hiện-tin-nhắn-mới&#34;&gt;&lt;strong&gt;Phát hiện Tin nhắn Mới&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Để xác định email mới từ danh sách email trên máy chủ POP3:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kết nối tới máy chủ.&lt;/li&gt;
&lt;li&gt;Lấy danh sách email.&lt;/li&gt;
&lt;li&gt;Kết nối đến cơ sở dữ liệu.&lt;/li&gt;
&lt;li&gt;Lấy danh sách email.&lt;/li&gt;
&lt;li&gt;So sánh các danh sách.&lt;/li&gt;
&lt;li&gt;Lưu các email mới vào cơ sở dữ liệu.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Quá trình nhanh hơn khi bạn:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lấy tất cả ID duy nhất của các tin nhắn vào bảng băm.&lt;/li&gt;
&lt;li&gt;Tìm trong bảng băm thay vì cơ sở dữ liệu cho mỗi tin nhắn email trong vòng lặp foreach(…)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thay vì truy vấn cơ sở dữ liệu cho mỗi tin nhắn, đòi hỏi nhiều lần gọi cơ sở dữ liệu, phương pháp này chỉ cần một lần gọi. Đoạn mã dưới đây cho bạn thấy cách phát hiện các tin nhắn Email mới trên máy chủ POP3.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-DetectingNewMessages-DetectingNewMessages.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Đọc tin nhắn Email từ Thư viện Tài liệu Microsoft SharePoint</title>
      <link>/email/vi/net/reading-email-messages-from-microsoft-sharepoint-document-library/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/reading-email-messages-from-microsoft-sharepoint-document-library/</guid>
      <description>
        
        
        &lt;p&gt;Bài viết này chỉ cách đọc tin nhắn email từ một thư viện tài liệu Microsoft SharePoint. Để truy cập các tệp trong thư viện tài liệu SharePoint, SDK của SharePoint phải được cài đặt trên hệ thống. SDK cung cấp API cần thiết để đăng nhập và truy cập các tệp từ thư viện tài liệu.&lt;/p&gt;
&lt;h2 id=&#34;đọc-tin-nhắn-email-từ-sharepoint&#34;&gt;&lt;strong&gt;Đọc tin nhắn Email từ SharePoint&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Các mẫu lập trình dưới đây giả định rằng một tệp Microsoft Outlook Message (.msg) đã được lưu trong thư mục SharedDocument của Thư viện Tài liệu SharePoint. SDK của SharePoint được sử dụng để lấy tệp tin tin nhắn vào một luồng và sau đó truyền luồng này cho một thể hiện của Aspose.Email &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; lớp. Lớp MailMessage tải luồng và phân tích tệp tin Outlook. Sau đó, truy cập các thuộc tính của lớp MailMessage, ví dụ, chủ đề, nội dung văn bản, nội dung HTML, v.v., để sử dụng thông tin trong một dự án Visual Studio. Để biết thông tin về cách cài đặt và cấu hình Microsoft SharePoint Server và SDK, vui lòng tham khảo các phần tương ứng trong thư viện MSDN. Đoạn mã dưới đây cho bạn thấy cách đọc tin nhắn email từ SharePoint.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-ReadingEmailMessagesFromSharePoint-ReadingEmailMessagesFromSharePoint.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Đặt Mã hoá Văn bản Mặc định trong Tin Email</title>
      <link>/email/vi/net/setting-default-text-encoding-in-email-message/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/setting-default-text-encoding-in-email-message/</guid>
      <description>
        
        
        &lt;p&gt;Bài viết này giới thiệu &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage/properties/preferredtextencoding&#34;&gt;MailMessage.PreferredTextEncoding&lt;/a&gt; thuộc tính và giải thích cách sử dụng. Bằng thuộc tính này, bạn có thể đặt mã hoá văn bản mặc định cho các thuộc tính sau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Từ: Tên hiển thị&lt;/li&gt;
&lt;li&gt;Đến: Tên hiển thị&lt;/li&gt;
&lt;li&gt;Tiêu đề&lt;/li&gt;
&lt;li&gt;Nội dung&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;đặt-mã-hoá-văn-bản-mặc-định&#34;&gt;&lt;strong&gt;Đặt Mã hoá Văn bản Mặc định&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Trong các phiên bản trước của Aspose.Email, mã hoá văn bản cho các thuộc tính from, to, subject và body được đặt riêng biệt. Để cải thiện tính tiện dụng, chúng tôi đã thêm &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage/properties/preferredtextencoding&#34;&gt;PreferredTextEncoding&lt;/a&gt; thuộc tính cho phép đặt tất cả cùng một lúc. Giờ đây dễ dàng hơn để đảm bảo rằng toàn bộ văn bản trong các thuộc tính trên được mã hoá đúng trong tin email. Đoạn mã dưới đây cho bạn thấy cách sử dụng một từ tiếng Pháp làm tên hiển thị cho địa chỉ email, tiêu đề và nội dung.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Email-SetDefaultTextEncoding-SetDefaultTextEncoding.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Chuyển đổi tệp tin Outlook Message (MSG) sang ảnh TIFF</title>
      <link>/email/vi/net/converting-outlook-message-file-msg-to-tiff-image/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/converting-outlook-message-file-msg-to-tiff-image/</guid>
      <description>
        
        
        &lt;p&gt;Trong bài viết này, chúng tôi chỉ cho bạn cách chuyển đổi tệp Outlook MSG sang hình ảnh TIFF.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Đầu tiên, đọc một tệp MSG và chuyển đổi nó sang định dạng MHTML bằng Aspose.Email cho .NET. Sử dụng &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email/mailmessage&#34;&gt;Aspose.Email.MailMessage&lt;/a&gt; lớp để tải tệp tin tin nhắn.&lt;/li&gt;
&lt;li&gt;Sau khi tải tệp, gọi &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email/mailmessage/methods/save/index&#34;&gt;MailMessage.Save()&lt;/a&gt; phương thức và lưu nó vào luồng ở định dạng MHTML.&lt;/li&gt;
&lt;li&gt;Sử dụng Aspose.Words cho .NET để chuyển đổi luồng MHTML sang TIFF. Sử dụng &lt;a href=&#34;https://apireference.aspose.com/net/words/aspose.words/document&#34;&gt;Aspose.Words.Document&lt;/a&gt; lớp để tải luồng MHTML.&lt;/li&gt;
&lt;li&gt;Cuối cùng, gọi &lt;a href=&#34;https://apireference.aspose.com/net/words/aspose.words/document/methods/save/index&#34;&gt;Document.Save()&lt;/a&gt; phương thức để lưu tài liệu MHTML thành TIFF.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nếu tài liệu chứa nhiều trang, một tệp TIFF đa trang sẽ được tạo ra. Các đoạn mã dưới đây cho thấy cách chuyển đổi tệp Outlook Message (MSG) sang hình ảnh TIFF.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-ConvertMSGToTIFF-ConvertMSGToTIFF.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Sử dụng tài liệu Microsoft Word làm nội dung tin nhắn và gửi email</title>
      <link>/email/vi/net/using-a-microsoft-word-document-as-the-message-body-and-sending-email/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/using-a-microsoft-word-document-as-the-message-body-and-sending-email/</guid>
      <description>
        
        
        &lt;p&gt;Bài viết này chỉ cho bạn cách sử dụng tài liệu Microsoft Word làm nội dung email và gửi tới người nhận. Tài liệu mẫu là một hoá đơn bán hàng từ cơ sở dữ liệu mẫu Northwind, đã được xuất sang định dạng Microsoft Word. Aspose.Email cho .NET xử lý các giao thức mạng và tính năng của Microsoft Outlook và không thể xử lý tài liệu Microsoft Word. Để khắc phục, các mẫu trong bài viết này sử dụng &lt;a href=&#34;https://products.aspose.com/words/net/&#34;&gt;Aspose.Words cho .NET&lt;/a&gt; để tải tài liệu Word và chuyển đổi nó sang định dạng MHTML. Aspose.Email cho .NET sử dụng tài liệu MHTML trong nội dung email.&lt;/p&gt;
&lt;h2 id=&#34;sử-dụng-tài-liệu-microsoft-word-làm-nội-dung-email&#34;&gt;&lt;strong&gt;Sử dụng tài liệu Microsoft Word làm nội dung email&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Các mẫu lập trình dưới đây minh họa cách gửi một tài liệu Word làm nội dung email bằng Aspose.Words cho .NET và Aspose.Email cho .NET:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tải tài liệu Microsoft Word bằng Aspose.Word cho .NET &lt;a href=&#34;https://apireference.aspose.com/words/net/aspose.words/document&#34;&gt;Document&lt;/a&gt; lớp.&lt;/li&gt;
&lt;li&gt;Lưu nó ở định dạng MHTML.&lt;/li&gt;
&lt;li&gt;Tải tài liệu MHTML bằng Aspose.Email cho .NET &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; lớp để đặt nội dung email.&lt;/li&gt;
&lt;li&gt;Đặt các thuộc tính tin nhắn khác bằng cách sử dụng các &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; các thuộc tính và phương thức của lớp.&lt;/li&gt;
&lt;li&gt;Gửi email bằng Aspose.Email cho .NET &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.smtp/smtpclient&#34;&gt;SMTPClient&lt;/a&gt; lớp.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tài liệu nguồn, một hoá đơn bán hàng đã được xuất sang Microsoft Word từ mẫu Microsoft Northwind có thể xem ở dưới.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/email/net/using-a-microsoft-word-document-as-the-message-body-and-sending-email/using-a-microsoft-word-document-as-the-message-body-and-sending-email_1.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/p&gt;
&lt;p&gt;Khi tin nhắn đã được gửi và nhận trong Microsoft Outlook, nó trông giống như tin nhắn dưới đây.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/email/net/using-a-microsoft-word-document-as-the-message-body-and-sending-email/using-a-microsoft-word-document-as-the-message-body-and-sending-email_2.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/p&gt;
&lt;p&gt;Định dạng HTML và hình ảnh được giữ nguyên như trong tài liệu nguồn gốc khi xem trong Outlook hoặc trình khách email web như Gmail hay Hotmail. Dưới đây là ảnh chụp màn hình của tin nhắn khi mở bằng Gmail trên trình duyệt Chrome.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/email/net/using-a-microsoft-word-document-as-the-message-body-and-sending-email/using-a-microsoft-word-document-as-the-message-body-and-sending-email_3.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/p&gt;
&lt;p&gt;Đoạn mã dưới đây cho bạn thấy cách sử dụng tài liệu Microsoft Word làm nội dung tin nhắn và gửi email bằng cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.smtp/smtpclient&#34;&gt;SmtpClient&lt;/a&gt; đối tượng lớp.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Load a Word document from disk and save it to stream as MHTML&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Document&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wordDocument&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;folderPath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;invoice.docx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;MemoryStream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mhtmlStream&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MemoryStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wordDocument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mhtmlStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SaveFormat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Mhtml&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Load the MHTML in a MailMessage object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;mhtmlStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Position&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MailMessage&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MailMessage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mhtmlStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MhtmlLoadOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Subject&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Sending Invoice by Email&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;From&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;sender@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;To&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;recipient@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// Save the message in MSG format to disk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;folderPath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;WordDocAsEmailBody_out.msg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SaveOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DefaultMsgUnicode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// Send the email message&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SmtpClient&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SmtpClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;smtp.gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;587&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;sender@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSLExplicit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Net: Tính năng In của Aspose.Email</title>
      <link>/email/vi/net/aspose-email-printing-features/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/aspose-email-printing-features/</guid>
      <description>
        
        
        &lt;h2 id=&#34;tính-năng-in-ấn&#34;&gt;&lt;strong&gt;Tính năng In ấn&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Cái &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/&#34;&gt;Aspose.Email.Printing&lt;/a&gt; namespace cung cấp một bộ tính năng phong phú để in tin nhắn email sang các định dạng khác nhau (XPS hoặc TIFF) và cấu hình bố cục trang. Bài viết này mô tả chúng. Có một số tùy chọn để in tin nhắn email từ Aspose.Email:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Chỉ in nội dung tin nhắn.&lt;/li&gt;
&lt;li&gt;In nội dung tin nhắn và tiêu đề.&lt;/li&gt;
&lt;li&gt;In nội dung HTML.&lt;/li&gt;
&lt;li&gt;Cài đặt bố cục trang.&lt;/li&gt;
&lt;li&gt;Tự động điều chỉnh kích thước TIFF cho máy in.&lt;/li&gt;
&lt;li&gt;Điều chỉnh DPI mục tiêu cho TIFF đầu ra.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;in-nội-dung-tin-nhắn&#34;&gt;&lt;strong&gt;In nội dung tin nhắn&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Đoạn mã sau cho bạn thấy cách tạo một tin nhắn và in nó mà không có phần tiêu đề, đầu tiên vào tệp XPS và sau đó vào tệp TIFF.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-PrintMessageBody-PrintMessageBody.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;in-tiêu-đề-và-nội-dung-tin-nhắn&#34;&gt;&lt;strong&gt;In tiêu đề và nội dung tin nhắn&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Đoạn mã sau cho bạn thấy cách hiển thị tiêu đề và in chúng cùng với nội dung tin nhắn, thay đổi &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/formattingflags&#34;&gt;FormattingFlags&lt;/a&gt; đến &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/messageformattingflags&#34;&gt;MailInfo&lt;/a&gt;.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-PrintMessageHeadersAndBody-PrintMessageHeadersAndBody.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;in-tin-nhắn-với-nội-dung-html&#34;&gt;&lt;strong&gt;In tin nhắn với nội dung HTML&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Các tin nhắn có nội dung HTML cũng có thể được in. Đoạn mã sau cho bạn thấy cách in một tin nhắn có nội dung HTML.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-PrintMessageHTMLBody-PrintMessageHTMLBody.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;cài-đặt-bố-cục-trang-khi-in&#34;&gt;&lt;strong&gt;Cài đặt bố cục trang khi in&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter&#34;&gt;Aspose.Email.Printing.MailPrinter&lt;/a&gt; cung cấp các điều khiển để thiết lập các thuộc tính sau của bố cục trang:&lt;/p&gt;
&lt;p&gt;|&lt;strong&gt;Thuộc tính&lt;/strong&gt;|&lt;strong&gt;Mô tả&lt;/strong&gt;|&lt;strong&gt;Giá trị mặc định&lt;/strong&gt;| | :- | :- | :- | |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/formattingflags&#34;&gt;FormattingFlags&lt;/a&gt;|Hiển thị hoặc ẩn chi tiết tin nhắn.|None [1]| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/margintop&#34;&gt;MarginTop&lt;/a&gt;|Lấy hoặc đặt lề trên.|0.5| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/marginleft&#34;&gt;MarginLeft&lt;/a&gt;|Lấy hoặc đặt lề trái.|0.5| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/marginbottom&#34;&gt;MarginBottom&lt;/a&gt;|Lấy hoặc đặt lề dưới.|0.5| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/marginright&#34;&gt;MarginRight&lt;/a&gt;|Lấy hoặc đặt lề phải.|0.5| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/pageunit&#34;&gt;PageUnit&lt;/a&gt;|Lấy hoặc đặt đơn vị đo.|Inch [2]| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/pageheight&#34;&gt;PageHeight&lt;/a&gt;|Lấy hoặc đặt chiều cao trang.|11.69| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/pagewidth&#34;&gt;PageWidth&lt;/a&gt;|Lấy hoặc đặt chiều rộng trang.|8.27|&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Có hai cờ: MailInfo và None&lt;/li&gt;
&lt;li&gt;Đơn vị trang có thể là Inch, Pixel, Point, Cm hoặc Millimeter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Đoạn mã sau sử dụng các thiết lập tùy ý để minh họa cách sử dụng các thuộc tính này. Nó thiết lập một trang cao 20 cm và rộng 8 cm, với lề 2 cm.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-SetPrintPageLayout-SetPrintPageLayout.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;tự-động-điều-chỉnh-tiff&#34;&gt;&lt;strong&gt;Tự động điều chỉnh TIFF&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/&#34;&gt;Aspose.Email.Printing&lt;/a&gt; cung cấp &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/messageformattingflags&#34;&gt;MessageFormattingFlags.AutoFitWidth&lt;/a&gt; thuộc tính cho phép bạn tự động điều chỉnh kích thước TIFF cho máy in. Đoạn mã sau cho bạn thấy cách sử dụng Auto-fit.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-SetAutofitForPrinting-SetAutofitForPrinting.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;điều-chỉnh-dpi-mục-tiêu-cho-tiff-đầu-ra&#34;&gt;&lt;strong&gt;Điều chỉnh DPI mục tiêu cho TIFF đầu ra&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Đoạn mã sau cho bạn thấy cách sử dụng DPI cho TIFF đầu ra.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-Knowledge-Base-AdjustTargetDPIForPrinting-AdjustTargetDPIForPrinting.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Sử dụng một Worksheet Excel của Microsoft làm Nội dung Thông điệp và Gửi Email</title>
      <link>/email/vi/net/using-a-microsoft-excel-worksheet-as-the-message-body-and-sending-email/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/using-a-microsoft-excel-worksheet-as-the-message-body-and-sending-email/</guid>
      <description>
        
        
        &lt;p&gt;Bài viết này sử dụng một sổ làm việc Microsoft Excel làm nội dung email và gửi tới người nhận. Aspose.Email cho .NET xử lý các giao thức mạng và tính năng của Microsoft Outlook và không thể xử lý các sổ làm việc Microsoft Excel. Để khắc phục, các mẫu trong bài viết này sử dụng Aspose.Cells cho .NET để tải sổ Excel và chuyển đổi nó thành luồng HTML. Sau đó, Aspose.Email cho .NET sử dụng luồng HTML đó trong nội dung email. Mẫu lập trình cho thấy cách gửi một worksheet Excel làm nội dung Email bằng Aspose.Cells cho .NET và Aspose.Email cho .NET&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tải một sổ làm việc Microsoft Excel bằng lớp Workbook của Aspose.Cells&lt;/li&gt;
&lt;li&gt;Lưu sổ làm việc đã tải vào MemoryStream ở định dạng HTML&lt;/li&gt;
&lt;li&gt;Lấy HTML từ luồng dưới dạng String&lt;/li&gt;
&lt;li&gt;Định nghĩa một đối tượng MailMessage mới và đặt HtmlBody của nó thành nội dung HTML từ bước 3&lt;/li&gt;
&lt;li&gt;Gửi email bằng lớp SmtpClient của Aspose.Email cho .NET&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sổ làm việc Excel nguồn có thể được xem như sau:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/email/net/using-a-microsoft-excel-worksheet-as-the-message-body-and-sending-email/using-a-microsoft-excel-worksheet-as-the-message-body-and-sending-email_1.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/p&gt;
&lt;p&gt;Khi tin nhắn đã được gửi và nhận trong Microsoft Outlook, nó trông giống như tin nhắn dưới đây:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/email/net/using-a-microsoft-excel-worksheet-as-the-message-body-and-sending-email/using-a-microsoft-excel-worksheet-as-the-message-body-and-sending-email_2.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/p&gt;
&lt;p&gt;Đoạn mã sau cho bạn thấy cách gửi Worksheet Excel của MS làm Nội dung Thông điệp và Gửi Email.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-SendExcelWorksheetAsMessageBody-SendExcelWorksheetAsMessageBody.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Lớp wrapper để tải Email Messages không đồng bộ bằng Aspose.Email</title>
      <link>/email/vi/net/wrapper-class-for-loading-email-messages-async-using-aspose-email/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/wrapper-class-for-loading-email-messages-async-using-aspose-email/</guid>
      <description>
        
        
        &lt;h2 id=&#34;lớp-wrapper-để-tải-email-messages&#34;&gt;&lt;strong&gt;Lớp Wrapper để tải Email Messages&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Có một số trường hợp cần tính năng Time out để hủy một hành động kéo dài không cần thiết. Bài viết này cung cấp một lớp mẫu để thực hiện tính năng Time out khi tải các tệp EML/MSG có thể gây ra độ trễ lâu dài hoặc không tải được. Vì Time out không liên quan trực tiếp đến hoạt động đọc/ghi đĩa hay mạng, nên việc triển khai tính năng này trong API ít hữu ích hơn so với việc thực hiện ở phía người dùng bằng cách viết một lớp wrapper quanh Aspose.&lt;/p&gt;
&lt;p&gt;Việc hủy một luồng chạy lâu có thể đạt được bằng cách sử dụng một delegate được bao bọc, truyền ra luồng cần bị kill, trong một biến cục bộ bên trong phương thức khởi tạo. Luồng chạy lâu được hủy bằng cách abort và quyền điều khiển được trả lại cho ứng dụng chính. Đoạn mã mẫu dưới đây cung cấp một lớp wrapper mẫu quanh thư viện Aspose.Email. Mã cũng minh họa cách sử dụng mẫu của lớp wrapper.&lt;/p&gt;
&lt;h3 id=&#34;mẫu-lập-trình-với-net-35-trở-lên&#34;&gt;&lt;strong&gt;Mẫu Lập Trình với .NET 3.5 trở lên&lt;/strong&gt;&lt;/h3&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-WrapperMailMessage-WrapperMailMessage.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;mẫu-lập-trình-với-net-20&#34;&gt;&lt;strong&gt;Mẫu Lập Trình với .NET 2.0&lt;/strong&gt;&lt;/h3&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-WrapperMailMessage_2_0-WrapperMailMessage.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;ví-dụ-sử-dụng&#34;&gt;&lt;strong&gt;Ví Dụ Sử Dụng&lt;/strong&gt;&lt;/h3&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-UsingMailMessageWrapper-UsingMailMessageWrapper.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Tạo các lần lặp lại từ Mẫu Lặp lại</title>
      <link>/email/vi/net/generate-occurrences-from-a-recurrence-pattern/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/generate-occurrences-from-a-recurrence-pattern/</guid>
      <description>
        
        
        &lt;p&gt;Với Aspose.Email, có thể tạo các lần xuất hiện bằng cách sử dụng mẫu lặp lại. Bài viết này giải thích cách, cách thực hiện &lt;a href=&#34;/email/vi/net/generate-occurrences-from-a-recurrence-pattern/#calculate-the-next-occurrence-or-n-next-occurrences&#34;&gt;tạo lần xuất hiện tiếp theo&lt;/a&gt; và &lt;a href=&#34;/email/vi/net/generate-occurrences-from-a-recurrence-pattern/#get-user-friendly-text-for-a-recurrence&#34;&gt;lấy mô tả mục thân thiện với người dùng&lt;/a&gt;. Các lần xuất hiện từ mẫu lặp lại lịch MAPI có thể được tạo bằng Aspose.Email. Đoạn mã dưới đây cho bạn thấy cách tạo các lần xuất hiện từ các mẫu lặp lại.&lt;/p&gt;
&lt;h2 id=&#34;tính-lần-xuất-hiện-tiếp-theo-hoặc-n-lần-xuất-hiện-tiếp-theo&#34;&gt;&lt;strong&gt;Tính lần xuất hiện tiếp theo hoặc n lần xuất hiện tiếp theo&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Để lấy lần xuất hiện &amp;quot;tiếp theo&amp;quot;, sử dụng phương thức GenerateOccurrences với tham số nNextOccurrences=1. Đoạn mã dưới đây cho bạn thấy cách tạo ra 20 lần xuất hiện bằng cách sử dụng nNextOccurrences = 20. Kết quả của đoạn mã dưới đây như sau:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/email/net/generate-occurrences-from-a-recurrence-pattern/generate-occurrences-from-a-recurrence-pattern_1.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-CalculateTheNextOccurrence-CalculateTheNextOccurrence.cs&#34;&gt;&lt;/script&gt;

&lt;h2 id=&#34;lấy-văn-bản-thân-thiện-với-người-dùng-cho-lặp-lại&#34;&gt;&lt;strong&gt;Lấy Văn bản Thân thiện với Người dùng cho Lặp lại&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Văn bản thân thiện với người dùng cho một quy tắc có thể được lấy bằng cách sử dụng thuộc tính FriendlyText như dưới đây. Kết quả của mã sẽ là: &amp;quot;Lặp lại mỗi tháng vào ngày 1 và ngày 1 tính từ cuối ngày của tháng, tối đa 2 lần lặp lại.&amp;quot;. Đoạn mã sau cho bạn thấy cách lấy văn bản thân thiện với người dùng cho một chu kỳ lặp lại.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-GetUserFriendlyTextForARecurrence-GetUserFriendlyTextForARecurrence.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Truy cập Dịch vụ Mail bằng OAuth</title>
      <link>/email/vi/net/access-mail-services-using-oauth/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/access-mail-services-using-oauth/</guid>
      <description>
        
        
        &lt;p&gt;Hỗ trợ OAuth 2.0 đã được thêm vào Aspose.Email và có thể được sử dụng để truy cập các máy chủ &lt;strong&gt;SMTP&lt;/strong&gt;, &lt;strong&gt;POP3&lt;/strong&gt;, &lt;strong&gt;IMAP&lt;/strong&gt; và &lt;strong&gt;EWS&lt;/strong&gt;. Nói chung, tất cả các máy chủ hỗ trợ token bearer &lt;strong&gt;OAuth 2.0&lt;/strong&gt; có thể được sử dụng với Aspose.Email, nhưng các client email của chúng tôi đã được kiểm tra với máy chủ thư của Google và Microsoft Office 365. Truy cập máy chủ từ &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.smtp/smtpclient&#34;&gt;SmtpClient&lt;/a&gt;, &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3client&#34;&gt;Pop3Client&lt;/a&gt;, &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.imap/imapclient&#34;&gt;ImapClient&lt;/a&gt; và &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.exchange.webservice/ewsclient&#34;&gt;EWSClient&lt;/a&gt; với OAuth có thể được triển khai theo 2 cách.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Cung cấp token truy cập trực tiếp vào hàm khởi tạo của client email. Trong trường hợp này, người dùng phải hiểu rằng thời gian sống của token truy cập có giới hạn. Khi token hết hạn, client email không thể được sử dụng để truy cập máy chủ.&lt;/li&gt;
&lt;li&gt;Cung cấp một triển khai tùy chỉnh của nhà cung cấp token dựa trên &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients/itokenprovider&#34;&gt;ITokenProvider&lt;/a&gt; giao diện vào hàm khởi tạo của client email. Trong trường hợp này, client sẽ kiểm tra thời gian hết hạn token và yêu cầu &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients/itokenprovider&#34;&gt;ITokenProvider&lt;/a&gt; để lấy token truy cập mới khi token trước đó đã hết hạn. Bằng cách này, client sẽ làm mới token định kỳ và có thể làm việc với máy chủ vô thời hạn. Thông thường các dịch vụ hỗ trợ một cách đơn giản để làm mới token truy cập. Ví dụ, sử dụng refresh token trong các dịch vụ của Google hoặc luồng xác thực ROPC trong nền tảng nhận diện của Microsoft có thể được dùng cho việc triển khai nhà cung cấp token.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;cấu-hình-tài-khoản-trên-máy-chủ-phù-hợp&#34;&gt;&lt;strong&gt;Cấu hình tài khoản trên máy chủ phù hợp&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Các bài viết sau sẽ giúp bạn cấu hình tài khoản để truy cập dịch vụ thư.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cho &lt;a href=&#34;https://docs.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth&#34;&gt;Office 365&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cho &lt;a href=&#34;https://developers.google.com/gmail/imap/imap-smtp&#34;&gt;Gmail&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;truy-cập-dịch-vụ-thư-với-token-truy-cập&#34;&gt;&lt;strong&gt;Truy cập Dịch vụ Thư với Token Truy cập&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Các ví dụ mã sau cho bạn thấy cách kết nối tới dịch vụ thư bằng token truy cập.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to SMTP server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SmtpClient&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SmtpClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;smtp.gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;m&#34;&gt;587&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;user1@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;accessToken&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSLExplicit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to IMAP server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImapClient&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ImapClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;imap.gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;993&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;user1@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;accessToken&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSLImplicit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to POP3 server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Pop3Client&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Pop3Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;pop.gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;995&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;user1@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;accessToken&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;truy-cập-dịch-vụ-thư-với-các-nhà-cung-cấp-token&#34;&gt;&lt;strong&gt;Truy cập Dịch vụ Thư với Các Nhà cung cấp Token&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Các ví dụ mã sau cho bạn thấy cách kết nối tới dịch vụ thư bằng một nhà cung cấp token.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ITokenProvider&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tokenProvider&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Google&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetInstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;ClientId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;ClientSecret&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;RefreshToken&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to SMTP server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SmtpClient&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SmtpClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;smtp.gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;m&#34;&gt;587&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;user1@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;tokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSLExplicit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to IMAP server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImapClient&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ImapClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;imap.gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;993&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;user1@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;tokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSLImplicit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to POP3 server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Pop3Client&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Pop3Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;pop.gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;995&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;user1@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;tokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;triển-khai-itokenprovider-tùy-chỉnh-cho-office-365&#34;&gt;&lt;strong&gt;Triển khai ITokenProvider tùy chỉnh cho Office 365&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Bạn có thể sử dụng triển khai nhà cung cấp token dưới đây để truy cập các dịch vụ thư của Office 365.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;JsonConvert&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Newtonsoft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JsonConvert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;Aspose.Email.Clients&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;Aspose.Email.Common.Utils&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;Aspose.Email.Tests.TestUtils&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;Newtonsoft.Json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;System.IO&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;System.Net&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;System.Text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;namespace&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;TestNS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// Azure resource owner password credential (ROPC) token provider&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// https://portal.azure.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// https://developer.microsoft.com/en-us/graph/graph-explorer/#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// token parser https://jwt.io&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;internal&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;AzureROPCTokenProvider&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ITokenProvider&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;uriFormat&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;https://login.microsoftonline.com/{0}/oauth2/v2.0/token&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bodyFormat&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s&#34;&gt;&amp;#34;client_id={0}&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;amp;scope={1}&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;amp;username={2}&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;amp;password={3}&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;amp;grant_type={4}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;readonly&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scope&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;grant_type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;readonly&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tokenSyncObj&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;OAuthToken&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;readonly&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tenant&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;readonly&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clientId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;readonly&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clientSecret&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;readonly&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;userName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;readonly&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// Initializes a new instance of the &amp;lt;see cref=&amp;#34;AzureROPCTokenProvider&amp;#34;/&amp;gt; class&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;param name=&amp;#34;tenant&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;param name=&amp;#34;clientId&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;param name=&amp;#34;clientSecret&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;param name=&amp;#34;scope&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;param name=&amp;#34;userName&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;param name=&amp;#34;password&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;param name=&amp;#34;scopeAr&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AzureROPCTokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tenant&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clientId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clientSecret&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;userName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scopeAr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tenant&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tenant&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;clientId&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clientId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;clientSecret&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clientSecret&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;userName&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;userName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scope&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scopeAr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// Gets oAuth access token. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;param name=&amp;#34;ignoreExistingToken&amp;#34;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// If ignoreExistingToken is true, requests new token from a server. Otherwise behaviour is depended on whether token exists or not.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// If token exists and its expiration date is not expired returns current token, otherwise requests new token from a server.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;returns&amp;gt;Returns oAuth access token&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;virtual&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;OAuthToken&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;GetAccessToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ignoreExistingToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;lock&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tokenSyncObj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Expired&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ignoreExistingToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;uri&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uriFormat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IsNullOrWhiteSpace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tenant&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;common&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tenant&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;HttpWebRequest&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HttpWebRequest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HttpWebRequest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uri&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bodyFormat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;HttpUtility&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UrlEncode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;clientId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;HttpUtility&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UrlEncode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scope&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;HttpUtility&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UrlEncode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;userName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;HttpUtility&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UrlEncode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;HttpUtility&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UrlEncode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;grant_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kt&#34;&gt;byte&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ASCII&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetBytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Method&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ContentType&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;application/x-www-form-urlencoded&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ContentLength&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;MemoryStream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ms&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MemoryStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Stream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requestStream&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetRequestStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;requestStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;HttpWebResponse&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HttpWebResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;StringBuilder&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responseText&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StringBuilder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;byte&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;read&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Stream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetResponseStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;responseText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ASCII&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;jsonString&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responseText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;AzureTokenResponse&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JsonConvert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DeserializeObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AzureTokenResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jsonString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;OAuthToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;access_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;TokenType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AccessToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;DateTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Now&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AddSeconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expires_in&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// Gets oAuth access token.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// If token exists and its expiration date is not expired returns current token, otherwise requests new token from a server.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;returns&amp;gt;Returns oAuth access token&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;OAuthToken&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;GetAccessToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;GetAccessToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;virtual&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Dispose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// A success response contains a JSON OAuth 2.0 response with the following parameters.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;AzureTokenResponse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// The requested access token. The calling web service can use this token to authenticate to the receiving web service.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;access_token&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// Indicates the token type value. The only type that Azure AD supports is Bearer For more information about bearer tokens, &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// see The OAuth 2.0 Authorization Framework: Bearer Token Usage (RFC 6750).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token_type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// How long the access token is valid (in seconds).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expires_in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// How long the access token is valid (in seconds).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ext_expires_in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// The time when the access token expires. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// The date is represented as the number of seconds from 1970-01-01T00:00:00Z UTC until the expiration time.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// This value is used to determine the lifetime of cached tokens.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expires_on&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// The App ID URI of the receiving web service.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;resource&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// If an access token was returned, this parameter lists the scopes the access token is valid for.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scope&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// Issued if the original scope parameter included the openid scope.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;id_token&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// Issued if the original scope parameter included offline_access.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;refresh_token&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Các ví dụ mã sau sẽ cho bạn thấy cách kết nối tới các dịch vụ Office 365 bằng cách sử dụng nhà cung cấp token tùy chỉnh.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ITokenProvider&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tokenProvider&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AzureROPCTokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;Tenant&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;ClientId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;ClientSecret&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;EMail&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;Password&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;scopes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to SMTP server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SmtpClient&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SmtpClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;smtp.office365.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;m&#34;&gt;587&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;Test1@test.onmicrosoft.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;tokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSLExplicit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to IMAP server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImapClient&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ImapClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;outlook.office365.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;m&#34;&gt;993&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;Test1@test.onmicrosoft.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;tokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSLImplicit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to POP3 server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Pop3Client&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Pop3Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;outlook.office365.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;995&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;Test1@test.onmicrosoft.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;tokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;SecurityOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Connecting to EWS server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mailboxUri&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;https://outlook.office365.com/ews/exchange.asmx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ICredentials&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;credentials&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;OAuthNetworkCredential&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tokenProvider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IEWSClient&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ewsClient&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;EWSClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetEWSClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mailboxUri&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;credentials&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Net: Phân biệt giữa Tệp đính kèm Inline và Thường</title>
      <link>/email/vi/net/differentiating-between-inline-and-regular-attachments/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/differentiating-between-inline-and-regular-attachments/</guid>
      <description>
        
        
        &lt;p&gt;Đây là một kịch bản phổ biến khi một tin nhắn email có thể chứa hình ảnh inline trong nội dung cũng như các tệp đính kèm thường đi kèm. Sử dụng &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; lớp, các tệp đính kèm inline có thể được giải nén từ &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage/properties/linkedresources&#34;&gt;LinkedResourceCollection&lt;/a&gt; lớp, trong khi các tệp đính kèm thường có thể được truy cập/giải nén bằng &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage/properties/attachments&#34;&gt;AttachmentCollection&lt;/a&gt; lớp của một tin nhắn. Tuy nhiên, điều này khác khi tin nhắn được tải bằng lớp Aspose.Email.Mapi.MapiMessage, vì tất cả các hình ảnh inline và tệp đính kèm thường đều có thể truy cập bởi người dùng trong cùng một lớp MapiAttachmentCollection. Do đó, cần thiết kế một phương pháp có thể phân biệt giữa tệp đính kèm inline và tệp đính kèm thường khi sử dụng MapiMessage.&lt;/p&gt;
&lt;h2 id=&#34;sử-dụng-asposeemail-để-phân-biệt-giữa-tệp-đính-kèm-inline-và-thường&#34;&gt;&lt;strong&gt;Sử dụng Aspose.Email để phân biệt giữa Tệp đính kèm Inline và Thường&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Bài viết này giải thích cách phân biệt tệp đính kèm inline và thường bằng cách sử dụng MapiMessage. Để xác định sự phân biệt này, loại nội dung của MapiMessage được xét như sau:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nội dung Văn bản Thuần:&lt;/strong&gt; Các email có loại nội dung văn bản thuần không cần kiểm tra, vì tất cả các tệp đính kèm trong những tin nhắn này luôn luôn là tệp đính kèm thường.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nội dung Html:&lt;/strong&gt; Trong trường hợp một tin nhắn có loại nội dung HTML, tệp đính kèm không chỉ cần chứa thuộc tính PR_ATTACH_FLAGS (0x37140003), mà giá trị của nó cũng phải bằng 0x00000004 cho tệp đính kèm inline. Nếu điều kiện này được đáp ứng, thì tiếp theo còn phụ thuộc vào các thẻ PR_ATTACH_CONTENT_LOCATION và PR_ATTACH_CONTENT_ID để xác định tính chất của tệp đính kèm. Tuy nhiên, nếu không có thẻ PR_ATTACH_FLAGS của Mapi, tệp đính kèm sẽ được kiểm tra thuộc tính PR_ATTACH_DISPOSITION (0x3716001F hoặc 0x3716001E) để xác định loại tệp đính kèm.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nội dung Rtf:&lt;/strong&gt; Nếu nội dung là RTF, thì tất cả các tệp đính kèm OLE đều là tệp đính kèm inline. Giá trị của PR_ATTACH_METHOD cho tất cả các tệp đính kèm OLE bằng 0x00000006.&lt;/p&gt;
&lt;p&gt;Đoạn mã mẫu sau minh họa cách phân biệt một cách lập trình giữa tệp đính kèm inline và thường. Hàm IsInlineAttachment nhận một tệp đính kèm và Message BodyType làm tham số đầu vào và trả về true nếu tệp đính kèm là dạng Inline.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Email-IdentifyInlineAndRegularAttachments-IdentifyInlineAndRegularAttachments.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Gửi Thư Sử Dụng DNS</title>
      <link>/email/vi/net/send-mail-using-dns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/send-mail-using-dns/</guid>
      <description>
        
        
        &lt;p&gt;Đôi khi việc gửi email bằng máy chủ SMTP không đáp ứng được yêu cầu của dự án. Chúng ta có thể muốn sử dụng bản ghi MX của tên miền người nhận. Đoạn mã sau cho thấy cách gửi email bằng máy chủ thư của miền người nhận.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-SendMailUsingDNS-SendMailUsingDNS.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Trích xuất dữ liệu Đối tượng Nhúng</title>
      <link>/email/vi/net/extraction-of-embedded-objects-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/extraction-of-embedded-objects-data/</guid>
      <description>
        
        
        &lt;p&gt;Đôi khi dữ liệu OLE nhúng được biểu diễn dưới dạng tệp đính kèm &amp;quot;oleData.mso&amp;quot; bởi &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.mapi/mapiattachment&#34;&gt;MapiAttachment&lt;/a&gt; và cần được trích xuất thủ công. Các tệp oleData.mso này là định dạng Microsoft Computer Document File (MCDF) và việc hỗ trợ các tệp như vậy vượt quá phạm vi của Aspose.Email. Tuy nhiên, Aspose.Email có thể được sử dụng kết hợp với các thư viện mã nguồn mở khác, chẳng hạn như OpenMCDF, để đọc nội dung của các tệp này và lưu vào đĩa. Aspose.Email cung cấp the &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.mapi/inlineattachmentextractor&#34;&gt;InlineAttachmentExtractor&lt;/a&gt; lớp để liệt kê các gói MSO từ dữ liệu nhị phân của oledata.mso, sau đó có thể được dùng để trích xuất nội dung bằng các thư viện đọc Compound Files.&lt;/p&gt;
&lt;p&gt;Nếu loại nội dung tin là HTML (không phải RTF), và có các đối tượng OLE trong tin, thuộc tính MapiPropertyTag.PR_ATTACH_DATA_OBJ sẽ không tồn tại. Trong trường hợp này, thông tin về các đối tượng OLE được chứa trong oldedata.mso.&lt;/p&gt;
&lt;h2 id=&#34;trích-xuất-đối-tượng-nhúng&#34;&gt;&lt;strong&gt;Trích xuất Đối tượng Nhúng&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Bài viết này cho thấy cách trích xuất nội dung từ tệp như vậy bằng Aspose.Email và &lt;a href=&#34;http://sourceforge.net/projects/openmcdf/&#34;&gt;OpenMCDF&lt;/a&gt;. Điều này có thể thực hiện như sau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Liệt kê các gói MSO từ dữ liệu nhị phân của tệp đính kèm oledata.mso&lt;/li&gt;
&lt;li&gt;đối với mỗi dữ liệu OLE, đọc CompoundFile&lt;/li&gt;
&lt;li&gt;Đọc luồng bằng CONTENTS&lt;/li&gt;
&lt;li&gt;Lưu nội dung vào FileStream&lt;/li&gt;
&lt;/ul&gt;
&lt;script src=&#34;https://gist.github.com/aspose-com-gists/6e5185a63aec6fd70d83098e82b06a32.js?file=Examples-CSharp-ExtractEmbeddedObjectdata-ExtractEmbeddedObjectdata.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Lưu Email dưới dạng PDF</title>
      <link>/email/vi/net/saving-an-email-as-pdf/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/saving-an-email-as-pdf/</guid>
      <description>
        
        
        &lt;p&gt;Bài viết này chỉ cách chuyển đổi một tin nhắn email sang PDF bằng Aspose.Email. Aspose.Email cho .NET xử lý các giao thức mạng và tính năng của Microsoft Outlook, và không thể thực hiện chuyển đổi trực tiếp sang PDF. Để khắc phục, các mẫu trong bài viết này sử dụng Aspose.Email để chuyển đổi tin nhắn email thành luồng MHTML và sau đó dùng Aspose.Words cho .NET để tải luồng MHTML và lưu nó dưới dạng PDF. Một tin nhắn email cũng có thể chứa tệp đính kèm. Vì mỗi tệp đính kèm có thể có các loại phương tiện khác nhau, Aspose.Email sẽ bỏ qua các tệp đính kèm này khi chuyển đổi sang MHTML, tức là chỉ các hình ảnh inline trong tin nhắn sẽ là một phần của MHTML và bất kỳ tệp đính kèm thường nào sẽ bị bỏ qua.&lt;/p&gt;
&lt;h2 id=&#34;chuyển-đổi-tin-nhắn-email-sang-pdf&#34;&gt;&lt;strong&gt;Chuyển đổi tin nhắn Email sang PDF&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Đoạn mã dưới đây cho thấy việc chuyển đổi tin nhắn email sang PDF bằng Aspose.Email kết hợp với Aspose.Words cho .NET. Điều này bao gồm các bước sau:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tải tin nhắn email bằng cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lưu tin email vào MemoryStream dưới dạng MHTML&lt;/li&gt;
&lt;li&gt;Tải luồng bằng Aspose.Words&lt;/li&gt;
&lt;li&gt;Lưu tin dưới dạng PDF&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tin email nguồn có thể được xem như sau:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/email/net/saving-an-email-as-pdf/saving-an-email-as-pdf_1.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/p&gt;
&lt;p&gt;PDF đã chuyển đổi được hiển thị trong hình ảnh sau:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/email/net/saving-an-email-as-pdf/saving-an-email-as-pdf_2.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/p&gt;
&lt;p&gt;Đoạn mã dưới đây cho bạn thấy cách chuyển đổi tin nhắn email sang PDF.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dataDir&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;RunExamples&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetDataDir_KnowledgeBase&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;MailMessage&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mailMsg&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MailMessage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dataDir&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;message3.msg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;MemoryStream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ms&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MemoryStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;mailMsg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Aspose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Email&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SaveOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DefaultMhtml&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// create an instance of LoadOptions and set the LoadFormat to Mhtml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loadOptions&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Aspose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Words&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Loading&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LoadOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;loadOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LoadFormat&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;LoadFormat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Mhtml&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// create an instance of Document and load the MTHML from MemoryStream&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;document&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Aspose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Words&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loadOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// create an instance of HtmlSaveOptions and set the SaveFormat to Html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;saveOptions&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Aspose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Words&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Saving&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PdfSaveOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dataDir&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;SaveEmailAsPDF_out.pdf&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;saveOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Net: Gửi yêu cầu họp với lặp lại</title>
      <link>/email/vi/net/sending-meeting-request-with-recurrence/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/sending-meeting-request-with-recurrence/</guid>
      <description>
        
        
        &lt;p&gt;Với Aspose.Email, có thể tạo một yêu cầu họp có lặp lại. Bài viết này giải thích cách tạo một yêu cầu họp với lịch lặp lại cụ thể. ID duy nhất của cuộc hẹn có thể được lưu để sử dụng sau này khi gửi bất kỳ cập nhật nào cho cuộc hẹn.&lt;/p&gt;
&lt;h2 id=&#34;tạo-yêu-cầu-họp-với-lặp-lại&#34;&gt;&lt;strong&gt;Tạo yêu cầu họp với lặp lại&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Mẫu mã dưới đây cho thấy cách thực hiện điều này.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Outlook-CreateMeetingRequestWithRecurrence-CreateMeetingRequestWithRecurrence.cs&#34;&gt;&lt;/script&gt;

&lt;h2 id=&#34;gửi-yêu-cầu-cập-nhật-lịch-hẹn&#34;&gt;&lt;strong&gt;Gửi yêu cầu cập nhật lịch hẹn&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Để gửi cập nhật cho cuộc hẹn trước, cần có ID duy nhất. Mã mẫu dưới đây cho thấy cách gửi yêu cầu cập nhật cuộc hẹn này&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-SendAppointmentUpdateRequest-SendAppointmentUpdateRequest.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Hỗ trợ đa luồng trong các client email</title>
      <link>/email/vi/net/multi-threading-support-in-mail-clients/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/multi-threading-support-in-mail-clients/</guid>
      <description>
        
        
        &lt;p&gt;Các khách hàng thư như ImapClient và Pop3Client cho phép người dùng sử dụng chúng trong môi trường đa luồng. Khách hàng thư cho phép có một hoặc nhiều kết nối với máy chủ. Để quản lý một tập hợp các kết nối bên trong khách hàng, sử dụng pool kết nối. Số lượng kết nối có thể tạo và sử dụng đồng thời bị giới hạn bởi thuộc tính CredentialsByHostClient.MaxConnectionsPerServer. Thuộc tính này có thể đặt thành 1 hoặc giá trị lớn hơn. Mặc định thuộc tính này bằng 10. Hàng đợi lệnh đã được triển khai cho kết nối để hỗ trợ các thao tác đa luồng. Các lệnh thực hiện các thao tác đơn giản nhất được định nghĩa trong giao thức, như Noop, Authenticate, v.v. Người dùng có thể bắt đầu thực thi một số lượng lệnh lớn hơn số kết nối khả dụng. Tuy nhiên, chúng chỉ được thực thi khi khách hàng có thể tạo kết nối cho thao tác đó.&lt;/p&gt;
&lt;h2 id=&#34;các-phương-pháp-sử-dụng-khách-hàng-thư-trong-môi-trường-đa-luồng&#34;&gt;&lt;strong&gt;Các phương pháp sử dụng khách hàng thư trong môi trường đa luồng&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Các client email có hành vi sau:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Khi MaxConnectionsPerServer = 1, client tạo 1 kết nối, thực hiện xác thực và ủy quyền. Kết nối này duy trì ở trạng thái hoạt động cho đến khi client được giải phóng. Tất cả các thao tác từ các luồng khác nhau được đưa vào một hàng đợi lệnh đặt trong kết nối chính.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Khi MaxConnectionsPerServer &amp;gt; 1, client tạo số lượng kết nối cần thiết, thực hiện xác thực và ủy quyền cho mỗi kết nối. Một kết nối được dành làm kết nối chính. Kết nối này được duy trì ở trạng thái hoạt động cho đến khi client được giải phóng. Tất cả các kết nối khác được tạo và giải phóng theo yêu cầu. Số lượng tối đa của các kết nối như vậy được xác định bởi thuộc tính MaxConnectionsPerServer, ví dụ nếu MaxConnectionsPerServer = 2 thì một kết nối được dành làm kết nối chính, và kết nối thứ hai được dùng làm bổ sung cho các thao tác thực hiện trong các luồng khác. Tương tự, nếu MaxConnectionsPerServer = 3 thì kết nối đầu tiên là kết nối chính, và hai kết nối còn lại được dùng làm bổ sung cho các thao tác thực hiện trong các luồng khác. Trong trường hợp có yêu cầu kết nối tiếp theo từ luồng mới, và tất cả các kết nối đã được sử dụng, client sẽ chờ cho đến khi số lượng kết nối đang dùng giảm xuống. Đây là một điểm quan trọng giải thích tại sao việc giải phóng kết nối đúng cách lại rất quan trọng.&lt;/p&gt;
&lt;h2 id=&#34;ví-dụ&#34;&gt;&lt;strong&gt;Ví dụ&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Người dùng có thể thực hiện các hoạt động trong các luồng khác nhau theo một số cách. Chúng có thể được chia thành hai loại:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Người dùng sử dụng các phương thức bất đồng bộ (Begin/End) được định nghĩa trong client. Trong trường hợp này client email khởi chạy các luồng mới khi cần thiết. Trong client được triển khai hàng đợi tác vụ (xin đừng nhầm lẫn với hàng đợi lệnh trong kết nối). Tác vụ có thể được thực thi nếu có kết nối khả dụng. Khi số lượng kết nối đã sử dụng giảm xuống dưới giá trị giới hạn, client tạo kết nối mới, tạo luồng cho tác vụ hiện tại và thực thi tác vụ này. Ví dụ về việc sử dụng các hoạt động bất đồng bộ:&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-IMAP-SendIMAPasynchronousEmail-SendIMAPasynchronousEmail.cs&#34;&gt;&lt;/script&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Người dùng có thể tạo luồng bằng các đối tượng như Thread, ThreadPool, Task hoặc bất kỳ đối tượng nào khác được dự định cho mục đích này. Người dùng cũng có thể sử dụng các luồng được tạo trong mã của bên thứ ba. Trong quá trình này, khách hàng có hai mô hình hành vi&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;a.&lt;/strong&gt; Nếu người dùng không tạo các kết nối bổ sung cho các hoạt động trong luồng, tất cả các hoạt động cho luồng này sẽ được gửi vào hàng đợi lệnh tới kết nối chính. Một ví dụ về các hoạt động trong một luồng phụ mà không tạo kết nối mới, tất cả giao dịch đều được thực hiện qua kết nối chính:&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-IMAP-SendIMAPasynchronousEmail-SendIMAPasynchronousEmailThreadPool.cs&#34;&gt;&lt;/script&gt;

&lt;p&gt;&lt;strong&gt;b.&lt;/strong&gt; Khi người dùng gọi phương thức để tạo kết nối mới cho luồng phụ, luồng này bị chặn cho đến khi giá trị hạn ngạch cho các kết nối mới được thay đổi để cho phép kết nối mới. Sau đó kết nối mới được tạo. Kết nối này được đặt làm kết nối mặc định cho tất cả các hoạt động trong luồng này. Khi tất cả các hoạt động trong luồng này hoàn thành, phải giải phóng kết nối. Để tạo kết nối mới, sử dụng phương thức CredentialsByHostClient.CreateConnection. Phương thức này trả về một đối tượng triển khai giao diện IDisposable. Để giải phóng kết nối, phải gọi phương thức Dispose. Việc tạo và giải phóng kết nối phải được thực hiện trong luồng mà các hoạt động mail được thực hiện. Cố gắng tạo kết nối mới trong luồng mà client mail đã được tạo sẽ dẫn đến lỗi, vì luồng này tại thời điểm đó không thể được dùng để tạo kết nối mới. Ngoài ra, việc tạo kết nối mới không khả thi khi MaxConnectionsPerServer = 1. Một ví dụ mã cho việc tạo kết nối mới trong luồng phụ:&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-IMAP-SendIMAPasynchronousEmail-SendIMAPasynchronousEmailThreadPool1.cs&#34;&gt;&lt;/script&gt;

&lt;h2 id=&#34;khuyến-nghị&#34;&gt;&lt;strong&gt;Khuyến nghị&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Cần lưu ý rằng nếu người dùng gửi tất cả lệnh tới kết nối chính, có thể xảy ra tình huống các lệnh từ các luồng khác nhau bị trộn lẫn. Người dùng nên hiểu lệnh nào phụ thuộc vào thứ tự của chúng và thực hiện các biện pháp đồng bộ cho những lệnh như vậy. Cũng cần xem xét khả năng thực thi lệnh trong các phiên khác nhau (IMAP/POP3). Các thao tác tốn thời gian nhất, như FetchMessage, AppendMessage và Send, có thể thực hiện bằng luồng mới và kết nối mới. Nhưng các thao tác nhanh như Delete nên thực hiện bằng kết nối chính. Lưu ý rằng việc khởi tạo kết nối mới là thao tác tốn thời gian đáng kể.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Giới thiệu và Ứng dụng mẫu</title>
      <link>/email/vi/net/introduction-and-sample-applications/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/introduction-and-sample-applications/</guid>
      <description>
        
        
        &lt;h2 id=&#34;kịch-bản-sử-dụng-asposeemailmail&#34;&gt;&lt;strong&gt;Kịch Bản Sử Dụng Aspose.Email.Mail&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Bài viết này đề xuất một số cách sử dụng tiềm năng cho Aspose.Email cho .NET, tập trung đặc biệt vào các tính năng lập trình email của thành phần.&lt;/p&gt;
&lt;h3 id=&#34;phần-mềm-bản-tin&#34;&gt;&lt;strong&gt;Phần mềm bản tin&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Cái &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email&#34;&gt;Aspose.Email.Mail&lt;/a&gt; API có thể được sử dụng để tạo một ứng dụng bản tin mạnh mẽ. Nhờ hỗ trợ của Aspose.Email trong việc thêm các đối tượng nhúng (như hình ảnh, âm thanh, v.v.), có thể tạo các bản tin HTML phong phú đầy đủ hình ảnh (và các đối tượng nhúng khác). Sử dụng tính năng gửi thư hàng loạt của API Aspose.Email.Mail, cũng có thể gửi số lượng lớn email trong thời gian ngắn. Aspose.Email.Mail cũng cung cấp tính năng mail merge dựa trên mẫu có thể dùng để tạo mẫu bản tin. Mẫu bản tin có thể được sử dụng để thực hiện mail merge khi gửi bản tin hàng loạt. Có nhiều tác vụ khác mà Aspose.Email.Mail có thể thực hiện trong một ứng dụng email marketing.&lt;/p&gt;
&lt;h3 id=&#34;công-cụ-marketing-khác&#34;&gt;&lt;strong&gt;Công cụ Marketing khác&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Tương tự như các ứng dụng bản tin, nhiều loại phần mềm khác có thể được xây dựng bằng Aspose.Email.Mail. Sử dụng nó để tạo email marketing, công cụ gửi thư hàng loạt và e-campaign, và hơn nữa.&lt;/p&gt;
&lt;h3 id=&#34;ứng-dụng-doanh-nghiệp&#34;&gt;&lt;strong&gt;Ứng dụng doanh nghiệp&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Mail có thể được sử dụng trong hầu hết các loại ứng dụng doanh nghiệp để thực hiện các tác vụ tiện ích:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cảnh báo email: Gửi cảnh báo email để thông báo cho người dùng về các hoạt động.&lt;/li&gt;
&lt;li&gt;Yêu cầu họp: Gửi yêu cầu họp kinh doanh bằng hỗ trợ iCalendar của Aspose.Email.Mail.&lt;/li&gt;
&lt;li&gt;Báo cáo theo lịch email: Báo cáo là thành phần không thể thiếu trong hầu hết các ứng dụng kinh doanh. Nhiều báo cáo kinh doanh được tạo định kỳ. Sử dụng Aspose.Email.Mail để gửi báo cáo theo lịch qua email.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;khách-hàng-email&#34;&gt;&lt;strong&gt;Khách hàng Email&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Mail cũng có thể được sử dụng trong các client email để gửi email thông thường. Nó hỗ trợ tệp đính kèm, đối tượng nhúng, sự kiện iCalendar, mail merge, gửi email hàng loạt, v.v., vì vậy Aspose.Email.Mail là lựa chọn tốt nhất để tạo các ứng dụng client email trên Windows hoặc web.&lt;/p&gt;
&lt;h2 id=&#34;ứng-dụng-mẫu-asposeemailmail&#34;&gt;&lt;strong&gt;Ứng Dụng Mẫu Aspose.Email.Mail&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Để minh họa cách sử dụng Aspose.Email.Mail, chúng tôi sẽ tạo một ứng dụng có tên &amp;lsquo;My First Email&amp;rsquo; thể hiện cách xây dựng một tin nhắn email với &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;Lớp MailMessage&lt;/a&gt; và sau đó gửi nó bằng lớp SmtpClient.&lt;/p&gt;
&lt;h3 id=&#34;mail--các-bước-ứng-dụng-mẫu&#34;&gt;&lt;strong&gt;Mail : Các bước ứng dụng mẫu&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Vui lòng làm theo các bước dưới đây để tạo ứng dụng &amp;lsquo;My First Mail&amp;rsquo; bằng Aspose.Email.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mở Visual Studio.&lt;/li&gt;
&lt;li&gt;Trong menu &lt;strong&gt;File&lt;/strong&gt;, chọn &lt;strong&gt;New&lt;/strong&gt;, sau đó &lt;strong&gt;Project&lt;/strong&gt;. (Chọn tạo ứng dụng Windows bằng C# hoặc VB.NET).&lt;/li&gt;
&lt;li&gt;Nếu bạn có giấy phép, hãy áp dụng nó để sử dụng phiên bản đầy đủ của Aspose.Email.&lt;/li&gt;
&lt;li&gt;Nhập Aspose.Email DLL vào ứng dụng bằng cách nhấp chuột phải vào &lt;strong&gt;Reference&lt;/strong&gt; trong Solution Explorer.&lt;/li&gt;
&lt;li&gt;Thiết kế ứng dụng Windows của bạn: tạo giao diện nhận ba trường: &lt;strong&gt;From&lt;/strong&gt;, &lt;strong&gt;To&lt;/strong&gt; và &lt;strong&gt;Message&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Nhấp đúp vào nút &lt;strong&gt;Send&lt;/strong&gt; trong chế độ thiết kế và viết mã của bạn trong trình soạn thảo.&lt;/li&gt;
&lt;li&gt;Tạo một đối tượng của lớp MailMessage và sử dụng các thuộc tính của nó để tạo một tin nhắn email. (Các đối tượng của lớp MailMessage được dùng để tạo tin nhắn email được truyền tới máy chủ SMTP để giao bằng lớp SmtpClient).&lt;/li&gt;
&lt;li&gt;Tạo một đối tượng của lớp SmtpClient và sử dụng các thuộc tính của nó để gửi một tin nhắn email.&lt;/li&gt;
&lt;li&gt;Kiểm tra Ứng dụng Windows của bạn bằng cách nhấn F5.&lt;/li&gt;
&lt;li&gt;Nhập địa chỉ vào các trường &lt;strong&gt;From&lt;/strong&gt; và &lt;strong&gt;To&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Nhập tin nhắn vào trường &lt;strong&gt;Message Body&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Nhấn &lt;strong&gt;Send&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Các bước trên được mô tả dưới đây: nhấp đúp vào nút &lt;strong&gt;Send&lt;/strong&gt; trong chế độ thiết kế và thêm đoạn mã sau:&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-AsposeEmailMailSampleApp-AsposeEmailMail.cs&#34;&gt;&lt;/script&gt;

&lt;p&gt;Khi kết nối tới máy chủ hỗ trợ SSL, chúng ta cần đặt các thuộc tính đối tượng SMTPClient sau&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-AsposeEmailMailSampleApp-SSLEnabledSMTP.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;kết-luận&#34;&gt;&lt;strong&gt;Kết luận&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email&#34;&gt;Aspose.Email.Mail&lt;/a&gt; là một thành phần rất mạnh mẽ cho phép các nhà phát triển thực hiện hầu hết các nhiệm vụ liên quan đến email, như gửi email hàng loạt đa luồng, sử dụng mail merge, thêm tệp đính kèm, nhúng hình ảnh và âm thanh vào tin nhắn email, thêm sự kiện iCalendar vào email, nhận email và nhiều hơn nữa.&lt;/p&gt;
&lt;h2 id=&#34;asposeemailpop3&#34;&gt;&lt;strong&gt;Aspose.Email.Pop3&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3client&#34;&gt;Aspose.Email.Pop3&lt;/a&gt; thực hiện giao thức Post Office Protocol v3 (POP3) trên nền tảng .NET. Nó cho phép các nhà phát triển .NET thêm tính năng truy vấn và nhận email vào ứng dụng .NET của họ mà không cần quan tâm đến chi tiết giao thức và độ phức tạp của lập trình email và mạng. Aspose.Email.Pop3 hỗ trợ tất cả các lệnh được định nghĩa trong chuẩn POP3, và cung cấp giao diện dễ sử dụng cùng mô hình đối tượng gọn gàng, trực quan. Nó giảm đáng kể độ khó học cho các nhà phát triển .NET.&lt;/p&gt;
&lt;h3 id=&#34;pop3--tính-năng-chính&#34;&gt;&lt;strong&gt;Pop3 : Tính năng chính&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Là một phần của Aspose.Email, Aspose.Email.Pop3 được thiết kế riêng cho .NET và được viết bằng mã C# quản lý. Nó cho phép bạn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kết nối và đăng nhập vào các máy chủ POP3.&lt;/li&gt;
&lt;li&gt;Hỗ trợ APOP.&lt;/li&gt;
&lt;li&gt;Truy vấn tin nhắn.&lt;/li&gt;
&lt;li&gt;Lấy tin nhắn.&lt;/li&gt;
&lt;li&gt;Hoàn toàn hỗ trợ kiểu lập trình bất đồng bộ.&lt;/li&gt;
&lt;li&gt;Hỗ trợ SSL.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;kịch-bản-asposeemailpop3&#34;&gt;&lt;strong&gt;Kịch Bản Aspose.Email.Pop3&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Pop3 có thể được các nhà phát triển sử dụng trong nhiều kịch bản khác nhau. Dưới đây, chúng tôi chia sẻ một số ví dụ.&lt;/p&gt;
&lt;h3 id=&#34;tự-động-hóa-email-doanh-nghiệp&#34;&gt;&lt;strong&gt;Tự động hóa Email doanh nghiệp&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Pop3 có thể được sử dụng để truy vấn hộp thư đến và lấy các tin nhắn email. Nó hoạt động mượt mà với thành phần gửi email, Aspose.Email.Mail. Aspose.Email hỗ trợ đầy đủ tự động hoá email. Gửi tin nhắn email bằng Aspose.Email.Mail và lấy tin nhắn bằng Aspose.Email.Pop3. Các tin nhắn email đã tải xuống sau đó có thể được phân tích bởi Aspose.Email.Mime.&lt;/p&gt;
&lt;h3 id=&#34;khách-hàng-email-1&#34;&gt;&lt;strong&gt;Khách hàng Email&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Pop3 có thể được sử dụng trong các ứng dụng client email để nhận email.&lt;/p&gt;
&lt;h3 id=&#34;pop3--ứng-dụng-mẫu&#34;&gt;&lt;strong&gt;Pop3 : Ứng dụng mẫu&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Ở đây, chúng tôi sẽ trình bày cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3client&#34;&gt;Aspose.Email.Pop3&lt;/a&gt;. Lớp này có nhiều tính năng nhưng chúng ta sẽ tập trung vào cách kết nối tới máy chủ POP3 và lấy tin nhắn. Ví dụ minh họa cách tạo một ứng dụng trong Visual Studio cũng như các đoạn mã giúp ứng dụng hoạt động. Thực hiện các bước dưới đây để tạo một ứng dụng mẫu sử dụng Aspose.Email.Pop3.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mở Visual Studio.&lt;/li&gt;
&lt;li&gt;Trong menu &lt;strong&gt;File&lt;/strong&gt;, chọn &lt;strong&gt;New&lt;/strong&gt; rồi &lt;strong&gt;Project&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Chọn một ứng dụng Windows bằng C# hoặc VB.NET.&lt;/li&gt;
&lt;li&gt;Nhập Aspose.Email.dll vào ứng dụng bằng cách nhấp chuột phải vào &lt;strong&gt;Reference&lt;/strong&gt; trong Solution Explorer.&lt;/li&gt;
&lt;li&gt;Bây giờ thiết kế một ứng dụng Windows như dưới đây.&lt;/li&gt;
&lt;li&gt;Tạo một đối tượng Pop3Client.&lt;/li&gt;
&lt;li&gt;Đặt tên máy chủ POP3, tên đăng nhập và mật khẩu trong đối tượng này.&lt;/li&gt;
&lt;li&gt;Gọi các hàm Connect() và Login() của Pop3Client.&lt;/li&gt;
&lt;li&gt;Tạo một thể hiện MailMessage và lấy email đầu tiên trong tài khoản của bạn vào nó bằng cách gọi hàm FetchMessage(). Điều này đưa tin nhắn đầu tiên từ tài khoản email của bạn vào thể hiện MailMessage.&lt;/li&gt;
&lt;li&gt;Sử dụng các thuộc tính From, Subject và HtmlBody của đối tượng MailMessage để xem người gửi, tiêu đề và nội dung của tin nhắn.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Các bước trên được minh họa trong các ví dụ mã dưới đây. Sử dụng đoạn mã sau trong bất kỳ nút nào hoặc trong sự kiện OnLoad của biểu mẫu.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-AsposeEmailPop3SampleApp-AsposeEmailPop3.cs&#34;&gt;&lt;/script&gt;

&lt;p&gt;Đối với các máy chủ hỗ trợ SSL, chúng ta cần thay đổi các thuộc tính sau của đối tượng Pop3Client:&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-AsposeEmailPop3SampleApp-SSLEnabledServer.cs&#34;&gt;&lt;/script&gt;

&lt;h2 id=&#34;asposeemailimap&#34;&gt;&lt;strong&gt;Aspose.Email.Imap&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.imap&#34;&gt;Aspose.Email.Imap&lt;/a&gt; thực hiện giao thức Internet Message Access Protocol (IMAP) trên các nền tảng .NET. Aspose.Email.Imap cho phép các nhà phát triển .NET thêm khả năng IMAP vào ứng dụng .NET của họ một cách nhanh chóng, mà không cần hiểu chi tiết giao thức. Thành phần hỗ trợ lấy và tải lên tin nhắn, kiểm tra trạng thái mới/đã đọc/chưa đọc của tin nhắn, v.v.&lt;/p&gt;
&lt;h3 id=&#34;imap--tính-năng-chính&#34;&gt;&lt;strong&gt;Imap : Tính năng chính&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Imap cho phép bạn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lấy các tin nhắn email.&lt;/li&gt;
&lt;li&gt;Tải lên các tin nhắn email.&lt;/li&gt;
&lt;li&gt;Liệt kê các tin nhắn email trong các thư mục khác nhau.&lt;/li&gt;
&lt;li&gt;Kiểm tra trạng thái của các tin nhắn email.&lt;/li&gt;
&lt;li&gt;Làm việc với MailMessage.&lt;/li&gt;
&lt;li&gt;Làm việc với hỗ trợ SSL.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sử-dụng-asposeemailimap&#34;&gt;&lt;strong&gt;Sử Dụng Aspose.Email.Imap&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Imap thực hiện giao thức Internet Message Access Protocol trên các nền tảng .NET. Với nó, các nhà phát triển có thể dễ dàng truy vấn và quản lý email trên máy chủ IMAP, cũng như tạo, xóa hoặc đổi tên thư mục email. Sử dụng Aspose.Email.Imap, các nhà phát triển có thể tận dụng giao thức IMAP với các API dễ sử dụng. Họ có thể truy cập email từ bất kỳ máy tính nào vì email vẫn được lưu trên máy chủ. Với Aspose.Email.Imap, các nhà phát triển có thể tạo ứng dụng web hoặc desktop nhận và thao tác email từ máy chủ IMAP. Aspose đã triển khai giao thức IMAP dựa trên các chuẩn xác thực internet và RFC. Do đó, Aspose.Email.Imap là một triển khai an toàn và đầy đủ tính năng của giao thức IMAP với mô hình đối tượng và giao diện dễ hiểu.&lt;/p&gt;
&lt;h3 id=&#34;imap--ứng-dụng-mẫu&#34;&gt;&lt;strong&gt;Imap : Ứng dụng mẫu&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Bài viết này giải thích cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.imap&#34;&gt;Aspose.Email.Imap&lt;/a&gt;. Chúng tôi tạo một ứng dụng nhỏ để lấy số lượng tin nhắn email trong tài khoản IMAP của bạn. Thực hiện các bước dưới đây để tạo một ứng dụng mẫu sử dụng Aspose.Email.Imap.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mở Visual Studio.&lt;/li&gt;
&lt;li&gt;Trong menu &lt;strong&gt;File&lt;/strong&gt;, chọn &lt;strong&gt;New&lt;/strong&gt; rồi &lt;strong&gt;Project&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Chọn một ứng dụng Windows bằng C# hoặc VB.NET.&lt;/li&gt;
&lt;li&gt;Nhập Aspose.Email.dll vào ứng dụng này bằng cách nhấp chuột phải vào &lt;strong&gt;Reference&lt;/strong&gt; trong Solution Explorer.&lt;/li&gt;
&lt;li&gt;Tạo một thể hiện ImapClient bằng cách truyền tên máy chủ IMAP, tên đăng nhập và mật khẩu.&lt;/li&gt;
&lt;li&gt;Gọi hàm Connect() của thể hiện ImapClient để kết nối tới máy chủ.&lt;/li&gt;
&lt;li&gt;Gọi hàm SelectFolder() của thể hiện ImapClient để chọn thư mục bạn muốn đếm số tin nhắn.&lt;/li&gt;
&lt;li&gt;Bây giờ gọi thuộc tính CurrentFolder.TotalMessageCount của thể hiện ImapClient để lấy số lượng tin nhắn email.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;imap--ví-dụ-mã&#34;&gt;&lt;strong&gt;Imap : Ví dụ mã&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Các ví dụ mã dưới đây được đặt phía sau nút hoặc trong sự kiện OnLoad của biểu mẫu. Chúng cho thấy cách thực hiện các bước đã mô tả ở trên bằng Aspose.Email.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-AsposeEmailIMAPSampleApp-AsposeEmailIMAP.cs&#34;&gt;&lt;/script&gt;

&lt;p&gt;Đối với các máy chủ email hỗ trợ SSL, thiết lập các thuộc tính sau của đối tượng ImapClient:&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-AsposeEmailIMAPSampleApp-SSLEnabledServer.cs&#34;&gt;&lt;/script&gt;

&lt;h2 id=&#34;asposeemailexchange&#34;&gt;&lt;strong&gt;Aspose.Email.Exchange&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.exchange/index&#34;&gt;Aspose.Email.Exchange&lt;/a&gt; Cho phép các nhà phát triển quản lý email trên Microsoft Exchange Server. Sử dụng thành phần này, bạn có thể kết nối, liệt kê tin nhắn và tải xuống email từ hộp thư của Exchange Server mà không cần hiểu chi tiết giao thức bên dưới. Thành phần hỗ trợ liệt kê tin nhắn, gửi email, tải xuống tin nhắn và lưu dưới định dạng eml hoặc msg trên đĩa cục bộ, v.v.&lt;/p&gt;
&lt;h3 id=&#34;exchange--tính-năng-chính&#34;&gt;&lt;strong&gt;Exchange : Tính năng chính&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Exchange cho phép bạn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kết nối tới các máy chủ Microsoft Exchange.&lt;/li&gt;
&lt;li&gt;Liệt kê các tin nhắn email trong hộp thư Exchange.&lt;/li&gt;
&lt;li&gt;Liệt kê các tin nhắn email từ các thư mục khác nhau, ví dụ: Inbox, Sent, Deleted hoặc Drafts.&lt;/li&gt;
&lt;li&gt;Xóa tin nhắn trong bất kỳ thư mục nào trên Exchange Server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sử-dụng-asposeemailexchange&#34;&gt;&lt;strong&gt;Sử dụng Aspose.Email.Exchange&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Với Aspose.Email.Exchange, các nhà phát triển có thể truy cập hộp thư Exchange Server từ các ứng dụng .NET của họ. Nó cung cấp một API dễ sử dụng để quản lý email trên các máy chủ Exchange. Các nhà phát triển có thể tạo các ứng dụng console, desktop hoặc web để quản lý email trong hộp thư Exchange.&lt;/p&gt;
&lt;h2 id=&#34;ứng-dụng-mẫu-asposeemailexchange&#34;&gt;&lt;strong&gt;Ứng dụng mẫu Aspose.Email.Exchange&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Bài viết này trình bày cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.exchange/index&#34;&gt;Aspose.Email.Exchange&lt;/a&gt;. Chúng tôi tạo một ứng dụng máy tính để bàn đơn giản kết nối tới hộp thư Exchange Server, lấy danh sách tin nhắn trong thư mục Inbox và hiển thị chúng trên biểu mẫu Windows.&lt;/p&gt;
&lt;h3 id=&#34;exchange--các-bước-ứng-dụng-mẫu&#34;&gt;&lt;strong&gt;Exchange : Các bước Ứng dụng mẫu&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Mở Microsoft Visual Studio.&lt;/li&gt;
&lt;li&gt;Tạo một dự án mới. (Chọn ngôn ngữ bạn muốn C# hoặc VB.NET)&lt;/li&gt;
&lt;li&gt;Thêm tham chiếu tới Aspose.Email.dll vào dự án của bạn bằng cách nhấp chuột phải vào dự án và chọn &lt;strong&gt;Add Reference&lt;/strong&gt; từ menu.&lt;/li&gt;
&lt;li&gt;Thiết kế một biểu mẫu Windows giống như bên dưới:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Để chạy ứng dụng thành công, bạn cần có thông tin đăng nhập đúng để truy cập Exchange Server. Ở đây, chúng tôi lấy thông tin xác thực - URI của Exchange Server, tên người dùng, mật khẩu và miền - từ biểu mẫu Windows. Đây là một mẫu rất cơ bản nên các thuộc tính của tin nhắn - chủ đề, người gửi và người nhận - chỉ được hiển thị đơn giản trong listbox.&lt;/p&gt;
&lt;h3 id=&#34;exchange--ví-dụ-mã&#34;&gt;&lt;strong&gt;Exchange : Ví dụ mã&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Thêm đoạn mã sau vào trình xử lý sự kiện click của nút &lt;strong&gt;List Messages&lt;/strong&gt;.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-AsposeEmailExchangeSampleApp-AsposeEmailExchange.cs&#34;&gt;&lt;/script&gt;

&lt;h3 id=&#34;exchange--kết-quả&#34;&gt;&lt;strong&gt;Exchange : Kết quả&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Ảnh chụp màn hình này hiển thị các tin nhắn được lấy từ Exchange Server. Phương thức ListMessages() trả về thông tin cơ bản như tiêu đề, người gửi, người nhận và ID tin nhắn. Để lấy toàn bộ tin nhắn, gọi phương thức ExchangeClient.SaveMessage(). (Cách sử dụng ExchangeClient.SaveMessage() được mô tả trong bài viết &lt;a href=&#34;/email/net/working-with-exchange-mailbox-and-messages/#saving-messages&#34;&gt;Lưu tin nhắn từ hộp thư Exchange Server ở định dạng EML và MSG&lt;/a&gt;.)&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;/email/net/introduction-and-sample-applications/introduction-and-sample-applications_1.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;asposeemailmime&#34;&gt;&lt;strong&gt;Aspose.Email.Mime&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Multipurpose Internet Mail Extensions (MIME) là một tiêu chuẩn Internet mở rộng định dạng email để hỗ trợ văn bản trong các bộ ký tự khác ngoài US-ASCII, tệp đính kèm không phải văn bản, phần thân tin nhắn đa phần và thông tin tiêu đề trong các bộ ký tự không phải ASCII. Aspose.Email.Mime triển khai giao thức MIME trên các khung .NET. Nó hoạt động như một trình dịch vì có thể đọc email từ tệp (.eml, v.v.) hoặc từ bộ nhớ (chuỗi). Sau đó nó phân tích tệp email hoặc chuỗi thành các phần có ý nghĩa. Nếu bạn muốn duyệt qua một tệp email mà không cần quan tâm đến chi tiết giao thức MIME, ví dụ để trích xuất tệp đính kèm từ email, hãy sử dụng Aspose.Email.Mime.&lt;/p&gt;
&lt;h3 id=&#34;các-tính-năng-chính&#34;&gt;&lt;strong&gt;Các tính năng chính&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Mime hoạt động hoàn hảo với Aspose.Email.Pop3 và Aspose.Email.Mail.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3client&#34;&gt;Aspose.Email.Pop3&lt;/a&gt; lấy các tin nhắn email từ một hộp thư được chỉ định.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email&#34;&gt;Aspose.Email.Mail&lt;/a&gt; gửi tin nhắn email tới một hộp thư được chỉ định.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.mime&#34;&gt;Aspose.Email.Mime&lt;/a&gt; là phần trung tâm của hai mục trên, và phân tích các tin nhắn email.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Hủy Yêu cầu Họp bằng Lịch</title>
      <link>/email/vi/net/cancelling-meeting-requests-with-calendar/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/cancelling-meeting-requests-with-calendar/</guid>
      <description>
        
        
        &lt;p&gt;Bạn có thể gửi yêu cầu hủy họp bằng Aspose.Email sử dụng đối tượng lớp Appointment. Bạn cần có thông tin yêu cầu họp gốc để hủy. Ví dụ trong bài này đầu tiên gửi yêu cầu họp, lưu thông tin vào cơ sở dữ liệu và sau đó hủy yêu cầu dựa trên ID tin nhắn.&lt;/p&gt;
&lt;h2 id=&#34;gửi-yêu-cầu-họp&#34;&gt;&lt;strong&gt;Gửi Yêu cầu Họp&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Trước khi chúng ta có thể &lt;a href=&#34;/email/vi/net/cancelling-meeting-requests-with-calendar/#cancelling-meeting-request&#34;&gt;hủy yêu cầu họp&lt;/a&gt;, chúng ta cần gửi một vài cái:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Đầu tiên tạo một đối tượng kiểu SmtpClient để gửi tin nhắn.&lt;/li&gt;
&lt;li&gt;Để thu thập thông tin người tham dự, chúng tôi đã tạo một lưới dữ liệu để người dùng có thể nhập tên và địa chỉ của những người sẽ nhận lời mời.&lt;/li&gt;
&lt;li&gt;Sau khi thực hiện vòng lặp for-each trên bộ sưu tập Rows của lưới, lưu toàn bộ thông tin người tham dự vào bộ sưu tập MailAddressCollection.&lt;/li&gt;
&lt;li&gt;Tạo một đối tượng của lớp MailMessage và các thuộc tính cần thiết như From, To và Subject.&lt;/li&gt;
&lt;li&gt;Tạo một đối tượng kiểu Appointment và cung cấp thông tin địa điểm, thời gian bắt đầu, thời gian kết thúc, người tổ chức và người tham dự.&lt;/li&gt;
&lt;li&gt;Lưu toàn bộ thông tin vào cơ sở dữ liệu SQL Server. Công việc liên quan đến DB được thực hiện trong phương thức SaveIntoDB.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Đoạn mã sau cho bạn cách gửi yêu cầu họp.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-SendMeetingRequests-SendMeetingRequests.cs&#34;&gt;&lt;/script&gt;

&lt;h2 id=&#34;hủy-yêu-cầu-họp&#34;&gt;&lt;strong&gt;Hủy Yêu cầu Họp&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Để hủy yêu cầu họp, trước tiên lấy ID của tin nhắn email. Vì chúng tôi đã lưu thông tin này trong cơ sở dữ liệu cho ví dụ này, nên có thể dễ dàng lấy lại. Chúng tôi đã sử dụng một lưới để tải tất cả các tin nhắn đã gửi. Ảnh chụp màn hình của biểu mẫu như dưới đây:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/email/net/cancelling-meeting-requests-with-calendar/cancelling-meeting-requests-with-calendar_1.png&#34; alt=&#34;todo:image_alt_text&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Chọn hàng để gửi yêu cầu hủy.&lt;/li&gt;
&lt;li&gt;Nhấn &lt;strong&gt;Send Cancel Request&lt;/strong&gt; để gửi yêu cầu.&lt;/li&gt;
&lt;li&gt;Mã lấy ID từ hàng được chọn trong lưới và truy vấn cơ sở dữ liệu để lấy thông tin người tham dự, tin nhắn và lịch liên quan.&lt;/li&gt;
&lt;li&gt;Tạo một thể hiện của lớp Calendar và &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt;
các lớp class sử dụng thông tin được lấy từ cơ sở dữ liệu.&lt;/li&gt;
&lt;li&gt;Sử dụng phương thức Appointment.CancelAppointment() để gửi yêu cầu hủy.&lt;/li&gt;
&lt;li&gt;Gửi email bằng cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.smtp/smtpclient&#34;&gt;SMTP&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Đoạn mã sau cho bạn cách hủy yêu cầu họp.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-CancelMeetingRequest-CancelMeetingRequest.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Ứng dụng đầu tiên với Aspose.Email.Outlook</title>
      <link>/email/vi/net/first-application-with-aspose-email-outlook/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/first-application-with-aspose-email-outlook/</guid>
      <description>
        
        
        &lt;p&gt;Phần này trình bày cách sử dụng &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email.mapi/&#34;&gt;Aspose.Email.Mapi&lt;/a&gt;. Chúng tôi tạo một ứng dụng nhỏ tải tệp tin tin nhắn Outlook (TestMessage.msg) và hiển thị tiêu đề, địa chỉ người gửi và người nhận, cùng nội dung trên một form Windows. Thực hiện các bước sau để tạo ứng dụng đầu tiên của bạn bằng Aspose.Email.Outlook.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Trong Visual Studio, trên menu &lt;strong&gt;File&lt;/strong&gt;, chọn &lt;strong&gt;New&lt;/strong&gt;, rồi &lt;strong&gt;Project&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Chọn tạo ứng dụng Windows bằng C# hoặc VB.NET.&lt;/li&gt;
&lt;li&gt;Nhập thư viện Aspose.Email DLL vào ứng dụng bằng cách nhấp chuột phải vào &lt;strong&gt;Reference&lt;/strong&gt; trong Solution Explorer. Đây sẽ là một ứng dụng dựa trên Windows chỉ hiển thị thông tin chứa trong tệp tin tin nhắn.&lt;/li&gt;
&lt;li&gt;Tạo một đối tượng của &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email.mapi/MapiMessage&#34;&gt;MapiMessage&lt;/a&gt; lớp bằng cách cung cấp đường dẫn tới tệp tin tin nhắn.&lt;/li&gt;
&lt;li&gt;Sử dụng các thuộc tính công khai để hiển thị tiêu đề, người gửi, người nhận và nội dung trên các điều khiển Windows.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Việc thực hiện các bước trên được minh họa dưới đây trong đoạn mã sau. Sử dụng đoạn mã sau phía sau nút &lt;strong&gt;Load Msg File&lt;/strong&gt; hoặc trong sự kiện OnLoad của form.&lt;/p&gt;
&lt;script src=&#34;https://gist.github.com/aspose-email/9e8fbeb51a8cbc4129dc71ca8cd55f0b.js?file=Examples-CSharp-Knowledge-Base-AsposeEmailOutlookSampleApp-AsposeEmailOutlook.cs&#34;&gt;&lt;/script&gt;


      </description>
    </item>
    
    <item>
      <title>Net: Kết nối Pool Được Tái cấu trúc</title>
      <link>/email/vi/net/connection-pool-refactored/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/vi/net/connection-pool-refactored/</guid>
      <description>
        
        
        &lt;p&gt;Với việc phát hành Aspose.Email 19.3, pool kết nối đã được tái cấu trúc. Mới &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient&#34;&gt;EmailClient&lt;/a&gt; lớp đã được giới thiệu sẽ cuối cùng thay thế &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/credentialsbyhostclient&#34;&gt;CredentialsByHostClient&lt;/a&gt; lớp.  &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient&#34;&gt;EmailClient&lt;/a&gt; lớp cung cấp một &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/properties/connectionasgmtmode&#34;&gt;ConnectionAsgmtMode&lt;/a&gt; thuộc tính xác định chế độ cấp phát kết nối trong môi trường đa luồng. &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/properties/connectionasgmtmode&#34;&gt;EmailClient.ConnectionAsgmtMode&lt;/a&gt; được đặt bằng cách sử dụng &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/connectionasgmttype&#34;&gt;ConnectionAsgmtType&lt;/a&gt; enumerable.&lt;/p&gt;
&lt;h2 id=&#34;các-loại-kết-nối&#34;&gt;&lt;strong&gt;Các loại kết nối&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Có ba loại kết nối sau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The main connection: This is the connection created and disposed together with the mail client. It can&amp;rsquo;t be created or disposed manually.&lt;/li&gt;
&lt;li&gt;Default connection: User can create default connections for threads with &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt; phương thức. Nếu kết nối mặc định tồn tại, tất cả các phương thức của client email thực thi trong một luồng sẽ ngầm sử dụng kết nối này. Chỉ một kết nối mặc định có thể tồn tại cho mỗi luồng. Nó có thể được tạo thủ công hoặc tự động. Điều này phụ thuộc vào thuộc tính EmailClient.ConnectionAsgmtMode. Các kết nối này có thể được tạo thủ công với &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients.emailclient/createconnection/methods/1&#34;&gt;EmailClient.CreateConnection(createAsDefaultConnection = true)&lt;/a&gt; phương thức. Nếu kết nối mặc định không được sử dụng (phụ thuộc vào chế độ cấp phát kết nối), kết nối chính sẽ được sử dụng ngầm thay thế cho nó.&lt;/li&gt;
&lt;li&gt;Independent connections: These are connections that are not linked to threads. They can be created manually and have to be used explicitly as a method parameter. These connections can be created manually with &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection&#34;&gt;EmailClient.CreateConnection()&lt;/a&gt; phương thức hoặc &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients.emailclient/createconnection/methods/1&#34;&gt;EmailClient.CreateConnection(createAsDefaultConnection = false)&lt;/a&gt; phương thức.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;các-loại-cấp-phát-kết-nối&#34;&gt;&lt;strong&gt;Các loại cấp phát kết nối&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Để thiết lập &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/properties/connectionasgmtmode&#34;&gt;EmailClient.ConnectionAsgmtMode&lt;/a&gt; thuộc tính, &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/connectionasgmttype&#34;&gt;ConnectionAsgmtType&lt;/a&gt; enumerable được sử dụng. Các loại cấp phát được cung cấp bởi &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/connectionasgmttype&#34;&gt;ConnectionAsgmtType&lt;/a&gt; được liệt kê dưới đây.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ConnectionAsgmtType.UseMainOrDefault: Chế độ này được sử dụng mặc định trong các máy khách email. Máy khách email sử dụng kết nối chính cho tất cả các hoạt động từ nhiều luồng nếu kết nối mặc định chưa được tạo, hoặc nếu không có kết nối nào được truyền vào tham số phương thức một cách rõ ràng. Kết nối chính là một kết nối được tạo đồng thời với máy khách email. Người dùng có thể tạo kết nối mặc định cho các luồng với &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt; phương thức. Nếu kết nối mặc định cho một luồng được tạo, nó sẽ được sử dụng ngầm cho tất cả các phương thức của client email được gọi trong luồng này. Nếu kết nối mặc định cho một luồng không được tạo, kết nối chính được sử dụng cho tất cả các phương thức của client email được gọi trong luồng này. Người dùng cũng có thể tạo các kết nối không liên kết với luồng (không phải kết nối mặc định) bằng &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt; phương thức. Nếu người dùng muốn sử dụng các kết nối khác (không phải chính và không phải mặc định) họ phải truyền kết nối này một cách rõ ràng như tham số của phương thức mà họ muốn sử dụng. Người dùng có thể tạo thêm bất kỳ số lượng kết nối nào. Kết nối mặc định có thể chỉ một cho mỗi luồng. Lưu ý rằng các kết nối mặc định hoạt động chính xác nếu người dùng sử dụng các đối tượng Thread cho lập trình đa nhiệm. Nếu người dùng sử dụng ConnectionPool hoặc các đối tượng Task cho lập trình đa nhiệm, chế độ này có thể dẫn đến hành vi sai của ứng dụng. Để tránh vấn đề này, người dùng phải tự tay giải phóng kết nối mặc định (nếu họ sử dụng nó) vào cuối quá trình thực thi mã.&lt;/li&gt;
&lt;li&gt;ConnectionAsgmtType.UseMain: Máy khách email sử dụng kết nối chính cho tất cả các hoạt động từ nhiều luồng. Kết nối chính là một kết nối được tạo đồng thời với máy khách email. Người dùng không thể tạo kết nối mặc định. Người dùng có thể tạo các kết nối không gắn với luồng (không phải kết nối mặc định) bằng &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt; phương thức. Nếu người dùng muốn sử dụng các kết nối khác (không phải chính và không phải mặc định) họ phải truyền kết nối này một cách rõ ràng như tham số của phương thức mà họ muốn sử dụng. &lt;/li&gt;
&lt;li&gt;ConnectionAsgmtType.UseDefault: Máy khách email ngầm sử dụng chỉ các kết nối mặc định cho tất cả các hoạt động từ nhiều luồng. Kết nối chính không được sử dụng trong chế độ này. Nếu kết nối mặc định chưa được tạo cho một số luồng (lần gọi phương thức máy khách email đầu tiên), máy khách email sẽ tạo kết nối mặc định một cách ngầm cho luồng đó trước khi thực hiện thao tác đầu tiên. Người dùng không thể tạo kết nối mặc định cho các luồng với &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt;phương thức vì chúng được tạo tự động. Khi kết nối mặc định cho một luồng được tạo, nó sẽ được sử dụng ngầm cho tất cả các phương thức của client email được gọi trong luồng này. Người dùng cũng có thể tạo các kết nối không liên kết với luồng (không phải kết nối mặc định) bằng &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt;phương thức. Nếu người dùng muốn sử dụng các kết nối khác (không phải chính và không phải mặc định) họ phải truyền kết nối này một cách rõ ràng như tham số của phương thức mà họ muốn sử dụng. Người dùng có thể tạo thêm bất kỳ số lượng kết nối nào. Chỉ một kết nối mặc định có thể được sử dụng cho mỗi luồng. Lưu ý rằng các kết nối mặc định hoạt động chính xác nếu người dùng sử dụng các đối tượng Thread cho lập trình đa nhiệm. Nếu người dùng sử dụng ConnectionPool hoặc các đối tượng Task cho lập trình đa nhiệm, chế độ này có thể dẫn đến hành vi sai của ứng dụng. Để tránh vấn đề này, người dùng phải tự tay giải phóng kết nối mặc định vào cuối quá trình thực thi mã.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
  </channel>
</rss>
