<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Documentation – Технічні статті</title>
    <link>/email/uk/net/technical-articles/</link>
    <description>Recent content in Технічні статті on Documentation</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>uk</language>
    
	  <atom:link href="/email/uk/net/technical-articles/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Net: Чому Aspose.Email</title>
      <link>/email/uk/net/why-aspose-email/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/why-aspose-email/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Net: Порівняння Aspose.Email.Mail з API Microsoft</title>
      <link>/email/uk/net/comparison-of-aspose-email-mail-with-ms-apis/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/comparison-of-aspose-email-mail-with-ms-apis/</guid>
      <description>
        
        
        &lt;h2 id=&#34;порівняння-aspose-email-mail-з-api-microsoft&#34;&gt;&lt;strong&gt;Порівняння Aspose Email Mail з API Microsoft&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;System.Web.Mail — це просто обгортка навколо двох COM‑бібліотек: CDONTS.NewMail (знаходиться у cdonts.dll) та CDO.Message (знаходиться у cdosys.dll). Вам також потрібно, щоб вони були встановлені на вашому сервері. За замовчуванням cdonts.dll та cdosys.dll встановлюються разом із Windows NT/2000/XP/2003.&lt;/p&gt;
&lt;h3 id=&#34;особливості-smtpmail&#34;&gt;&lt;strong&gt;Особливості SmtpMail&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Якщо ви розберете клас System.Web.Mail.SmtpMail, ви виявите деякі дивні поведінки:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Він підтримує лише операційні системи Win32NT, наприклад Windows 2000, Windows 2003, Windows XP.&lt;/li&gt;
&lt;li&gt;Коли клас SmtpMail надсилає повідомлення електронної пошти, він перевіряє версію ОС. Якщо версія ≤ 4, використовується об’єкт CDONTS.Newmail; для всіх операційних систем з версією &amp;gt; 4 використовується об’єкт CDO.Message.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ці особливості ускладнюють усунення несправностей, особливо при перенесенні коду на різні операційні системи. Додаток може отримувати несподівані результати на різних ОС. Aspose.Email.Mail — це компонент .NET, написаний повністю керованим кодом на чистому C#. Він не залежить ні від яких COM‑бібліотек, включаючи CDONTS.NewMail або CDO.Message. Використовуючи Aspose.Email.Mail, ви уникаєте виклику некерованого коду у своїх застосунках, підвищуючи надійність і звільняючися від нудного налагодження COM. Aspose.Email.Mail багатий на функції і надає набагато більше можливостей, ніж архітектура System.Web.Mail. System.Net.Mail — це нова реалізація клієнта протоколу SMTP у .NET 2.0. Це також чиста керована реалізація на C#.&lt;/p&gt;
&lt;h3 id=&#34;матриця-порівняння&#34;&gt;&lt;strong&gt;Матриця порівняння&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;Особливості&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;Функції сумісності&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;Supports .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;Загальні функції&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;Залежність 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;Чистий керований код&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;Автентифікація&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;Адреса відправника&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;Адреса отримувачів&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;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;Текстове тіло&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;Надсилання вкладень&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;Вбудоване зображення&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;Кодування тіла (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;Кодування теми (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;Синхронна модель програмування&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;Асинхронна модель програмування&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;Унікальні функції&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;Налаштований заголовок листа&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;Заголовок важливості&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;Заголовок чутливості&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;Заголовок 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;Відповісти&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;Дата відправлення&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;Злиття листів за шаблоном&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;Злиття листів з 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;Злиття листів з 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;Злиття листів з 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;Масове надсилання з багатопотоковістю&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;Надсилання календаря&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;Надсилання запиту на зустріч&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;Завантаження з формату 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;Завантаження з формату 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;Збереження у формат 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;Збереження у формат 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;Завантаження з формату 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;Завантаження з файлу, сумісного з 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;Функції взаємодії&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;Працює з 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;Працює з 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;Працює з 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: Різниця між POP3 та IMAP</title>
      <link>/email/uk/net/difference-between-pop3-and-imap/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/difference-between-pop3-and-imap/</guid>
      <description>
        
        
        &lt;h2 id=&#34;різниця-між-pop3-та-imap&#34;&gt;&lt;strong&gt;Різниця між POP3 та IMAP&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Нижче подано пояснення загальної різниці між поштовими протоколами IMAP та POP3.&lt;/p&gt;
&lt;h3 id=&#34;pop3-та-imap&#34;&gt;&lt;strong&gt;POP3 та IMAP&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;POP3 та IMAP — це поштові протоколи, що працюють з більшістю сучасних поштових клієнтів. Основна їх різниця полягає в способі управління та зберігання листів.&lt;/p&gt;
&lt;h4 id=&#34;pop3&#34;&gt;&lt;strong&gt;POP3&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;У POP3‑обліковому записі у вас є лише одна папка: папка Вхідних. Коли ви відкриваєте скриньку, нова пошта переміщується з сервера хоста та зберігається на вашому комп’ютері. Якщо хочете читати старі листи, вам потрібно перейти до того комп’ютера, на якому ви їх останній раз відкривали. (Деякі поштові клієнти дозволяють зберігати листи на сервері, щоб мати доступ до них з кількох місць. Далі – докладніше.)&lt;/p&gt;
&lt;p&gt;З таким типом облікового запису вам не треба постійно перебувати підключеним до інтернету. Ви можете підключатися, коли хочете отримати чи надіслати нові повідомлення. Після того, як нові листи завантажено на комп’ютер, ви можете вийти з мережі, щоб їх читати. POP3‑облікові записи підходять, коли ви підключаєтесь через модем до DAS і за це платите, або коли у вас старий комп’ютер.&lt;/p&gt;
&lt;h4 id=&#34;обліковий-запис-imap&#34;&gt;&lt;strong&gt;Обліковий запис IMAP&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Використовуючи цей протокол, вся ваша пошта залишається на сервері у декількох папках, деякі з яких ви створюєте самі. Це дозволяє підключатися з будь‑якого комп’ютера та бачити всю вашу пошту і папки. Загалом IMAP підходить, якщо у вас постійне підключення до інтернету або ви перевіряєте пошту з різних місць.&lt;/p&gt;
&lt;h4 id=&#34;залишити-листи-на-сервері-vs-видалити-листи-з-сервера&#34;&gt;&lt;strong&gt;Залишити листи на сервері vs. Видалити листи з сервера&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Якщо ви користуєтеся протоколом POP3 і читаєте пошту з декількох комп’ютерів, вам потрібно залишати листи на сервері, щоб вони були доступні у будь‑який час. Якщо не залишати пошту на сервері, вся пошта у вашій вхідній скриньці буде завантажена на комп’ютер, який ви зараз використовуєте. Якщо ви читаєте пошту лише з одного місця, залишати листи на сервері немає сенсу. Ви побачите інструкції, як встановити цю опцію під час налаштування вашої поштової програми.&lt;/p&gt;
&lt;p&gt;Навіщо вибирати IMAP замість POP3 та залишати електронну пошту на сервері? У POP3 ваші повідомлення зберігаються лише на сервері, а у IMAP ваші поштові папки також зберігаються на сервері.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Доступ до Gmail через SSL</title>
      <link>/email/uk/net/accessing-gmail-on-ssl/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/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;У цій статті показано, як виконати &lt;a href=&#34;/email/uk/net/accessing-gmail-on-ssl/#connecting-to-gmail-smtp-server&#34;&gt;підключитися до сервера Gmail&lt;/a&gt; і &lt;a href=&#34;/email/uk/net/accessing-gmail-on-ssl/#sending-an-email-message&#34;&gt;надіслати електронний лист&lt;/a&gt; використовуючи протокол SMTP через SSL.&lt;/p&gt;
&lt;h3 id=&#34;підключення-до-smtpсервера-gmail&#34;&gt;&lt;strong&gt;Підключення до SMTP‑сервера Gmail&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Наведений фрагмент коду показує, як підключитися до SMTP‑сервера з увімкненим 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;надсилання-електронного-листа&#34;&gt;&lt;strong&gt;Надсилання електронного листа&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Вищеподаний код налаштував об’єкт SMTPClient для підключення до сервера Gmail. Щоб відправити повідомлення за допомогою того ж об’єкта, створіть &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; об’єкт класу та відправити повідомлення за допомогою об’єкта SMTP‑клієнта. Наведений фрагмент коду показує, як задати властивості повідомлення, наприклад тему, одержувача та тіло:&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;У цій статті показано, як виконати низку дій на поштовому сервері з увімкненим SSL, використовуючи протокол IMAP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Підключіться до поштового сервера.&lt;/li&gt;
&lt;li&gt;Отримайте загальну кількість повідомлень у вхідних.&lt;/li&gt;
&lt;li&gt;Збережіть повідомлення локально.&lt;/li&gt;
&lt;li&gt;Створіть повідомлення і додайте його до папки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;підключення-до-поштового-сервера&#34;&gt;&lt;strong&gt;Підключення до поштового сервера&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Використайте Aspose.Email &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.imap/imapclient&#34;&gt;ImapClient&lt;/a&gt; об’єкт класу для підключення до поштового сервера. Потрібні адреса сервера, порт, ім’я користувача та пароль, щоб встановити з’єднання. Gmail використовує порт 993 для протоколу IMAP, наведений фрагмент коду показує, як підключитися до Gmail, використовуючи цей порт.&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;вибір-папки-та-отримання-загальної-кількості-повідомлень&#34;&gt;&lt;strong&gt;Вибір папки та отримання загальної кількості повідомлень&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Перевірка папки &amp;quot;Вхідні&amp;quot; є найчастішим завданням при роботі з електронною поштою. За допомогою Aspose.Email це можна виконати лише двома простими рядками коду. Наведений фрагмент коду показує, як отримати доступ до папки &amp;quot;Вхідні&amp;quot; та дізнатись загальну кількість повідомлень у папці.&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;збереження-повідомлень-на-локальний-жорсткий-диск&#34;&gt;&lt;strong&gt;Збереження повідомлень на локальний жорсткий диск&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Після вибору папки за допомогою методу SelectFolder використовуйте функцію ListMessages, щоб отримати список усіх повідомлень у папці у вигляді об’єкта ImapMessagesInfoCollection. Перебирайте цей збірник і зберігайте електронні листи на локальний диск комп’ютера таким чином:&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;створення-нової-папки&#34;&gt;&lt;strong&gt;Створення нової папки&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Протокол IMAP також дозволяє створити нову папку на поштовому сервері. Це можна зробити простим викликом функції.&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;створення-нового-повідомлення-у-папці&#34;&gt;&lt;strong&gt;Створення нового повідомлення у папці&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Додайте нове повідомлення до папки, використовуючи &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; і &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.imap/imapclient&#34;&gt;ImapClient&lt;/a&gt; класи. Наведені нижче приклади спочатку створюють об’єкт MailMessage, задавши тему, одержувача та відправника. Потім підписуються на папку і додають повідомлення туди. Наведений фрагмент коду показує, як створити нове повідомлення у папці.&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;У цій статті представлені приклади, які використовують протокол POP3 поверх SSL. Щоб підключитися до сервера, захищеного SSL, потрібно визначити SSL‑порт і дві додаткові властивості. Решта коду така ж, як при підключенні до звичайного сервера POP3.&lt;/p&gt;
&lt;p&gt;Нижче наведені приклади коду, які показують, як:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Підключитися до SSL‑сервера.&lt;/li&gt;
&lt;li&gt;Перевірити статус поштової скриньки&lt;/li&gt;
&lt;li&gt;Отримати інформацію про повідомлення&lt;/li&gt;
&lt;li&gt;Отримати електронні листи.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;підключення-до-поштового-сервера-1&#34;&gt;&lt;strong&gt;Підключення до поштового сервера&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Підключіться до поштового сервера з SSL, використовуючи &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3client&#34;&gt;Pop3client&lt;/a&gt; клас, як описано нижче.&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;перевірка-статусу-скриньки&#34;&gt;&lt;strong&gt;Перевірка статусу скриньки&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Наступний фрагмент коду показує, як перевірити кількість повідомлень, збережених у скриньці, та розмір скриньки. Використовуйте &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3mailboxinfo&#34;&gt;Pop3MailboxInfo&lt;/a&gt; клас для цієї мети.&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;перевірка-інформації-про-повідомлення&#34;&gt;&lt;strong&gt;Перевірка інформації про повідомлення&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Цей приклад перевіряє всі повідомлення у скриньці, використовуючи &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3messageinfocollection&#34;&gt;Pop3MessageInfoCollection&lt;/a&gt; клас. Використайте &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; функція для отримання &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3messageinfocollection&#34;&gt;Pop3MessageInfoCollection&lt;/a&gt; колекцію. Потім ітеруйте колекцію, щоб прочитати інформацію про повідомлення: ID повідомлення, індекс, тему та розмір&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;отримання-повідомлень&#34;&gt;&lt;strong&gt;Отримання повідомлень&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Щоб отримати повідомлення зі скриньки, використайте &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.pop3/pop3client&#34;&gt;Pop3Client&lt;/a&gt; метод FetchMessage() класу, щоб отримати повідомлення у &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; об’єкт типу. Наступний фрагмент коду показує, як підрахувати кількість електронних листів у скриньці, а потім ітерувати їх, щоб отримати кожен.&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: Введення шаблонів повторень</title>
      <link>/email/uk/net/introducing-recurrence-patterns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/introducing-recurrence-patterns/</guid>
      <description>
        
        
        &lt;p&gt;Ви можете розглядати &lt;em&gt;шаблон повторення&lt;/em&gt; як спосіб описати конкретний графік. Він містить достатньо інформації, щоб сформувати список появ (дат і часів) згідно з даним розкладом. Шаблон повторення може містити правила повторення, які описують цикли, що об’єднуються у загальний шаблон. Загалом, чим складніший шаблон повторення, тим більше правил повторення він міститиме. Шаблони повторень можуть включати &lt;em&gt;виключення&lt;/em&gt; (не плутати з виключеннями, які представляють помилки, що виникають під час виконання програми). Виключення додають або видаляють дати появ у первинному шаблоні. Виключення можна вказати як явні появи або як окремий шаблон. Приклади шаблонів повторень з виключеннями:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Кожна друга п&amp;rsquo;ятниця, крім періоду з червня по серпень.&lt;/li&gt;
&lt;li&gt;1‑ше число кожного місяця, крім січня, коли має бути 2‑ге.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Шаблони повторень зазвичай є періодичними, але це не обов’язково. Шаблон повторення може бути повністю описаний лише як набір попередньо визначених дат і часу появи. RFC iCalendar визначає &lt;em&gt;компоненти&lt;/em&gt;, такі як VEVENT або VTODO, які представляють події або завдання. Компоненти можуть мати властивості, такі як дата та час початку, опис, місце, учасники та повторення. Таким чином, шаблон повторення зазвичай існує як властивість повторюваного завдання або події. Властивості шаблону повторення, визначені iCalendar, це:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DTSTART — дата та час початку шаблону (також представляє перше входження, якщо його явно не виключено).&lt;/li&gt;
&lt;li&gt;RRULE — визначає правило повторення для набору повторень.&lt;/li&gt;
&lt;li&gt;RDATE — визначає список дат і часів, які слід включити до набору повторень.&lt;/li&gt;
&lt;li&gt;EXRULE — визначає правило повторення для виключень з набору повторень.&lt;/li&gt;
&lt;li&gt;EXDATE — визначає список дат і часів‑виключень з набору повторень.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Лише DTSTART є обов’язковим, і має бути лише один DTSTART. Усі інші властивості є необов’язковими та можуть бути вказані більше одного разу. Aspose.iCalendar приймає рядок у форматі iCalendar і зчитує шаблон повторення у &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.calendar.recurrences/recurrencepattern&#34;&gt;RecurrencePattern&lt;/a&gt; об’єкт. Рядок може бути повним описом компонента iCalendar (наприклад, повним VEVENT) або лише фрагментом, що містить лише шаблон повторення. Після завантаження шаблону повторення у об’єкт RecurrencePattern ви можете:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Досліджувати та змінювати шаблон програмно за допомогою методів і властивостей, наданих Aspose.iCalendar&lt;/li&gt;
&lt;li&gt;Створити дати/часи випадків у вказаному діапазоні дат.&lt;/li&gt;
&lt;li&gt;Зберегти шаблон у форматі iCalendar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Наступний фрагмент коду показує, що частина RRULE містить правило повторення.&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;Подивіться на &lt;a href=&#34;/email/uk/net/introducing-recurrence-patterns/#sample-patterns&#34;&gt;зразки шаблонів повторень&lt;/a&gt; для ілюстрацій щодо створення шаблонів повторень.&lt;/p&gt;
&lt;h2 id=&#34;про-модель-обєктів-asposeicalendar&#34;&gt;&lt;strong&gt;Про модель об’єктів Aspose.iCalendar&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Простір імен Aspose.iCalendar містить усі класи, надані компонентом Aspose.iCalendar. RecurrencePattern і RecurrenceRule є центральними класами Aspose.iCalendar і забезпечують конкретні реалізації відповідних елементів RFC 2445.&lt;/p&gt;
&lt;p&gt;Клас RecurrencePattern представляє весь шаблон повторення. Ви можете створити новий шаблон повторення з нуля, використовуючи конструктор за замовчуванням, або завантажити існуючий шаблон у форматі iCalendar за допомогою статичного методу FromiCalendar. Клас RecurrenceRule представляє частину RRULE або EXRULE шаблону повторення. RecurrenceRule надає ряд властивостей, які безпосередньо відповідають їх аналогам у стандарті iCalendar. Наприклад, ByMonth відповідає BYMONTH в iCalendar тощо. Перевіряючи або встановлюючи значення властивостей RecurrenceRule, ви можете аналізувати або змінювати правило повторення. Для отримання додаткової інформації та прикладів коду дивіться розділи RecurrencePattern і RecurrenceRule у довіднику API.&lt;/p&gt;
&lt;h2 id=&#34;зразки-шаблонів&#34;&gt;&lt;strong&gt;Зразки шаблонів&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Цей розділ включає наступні теми:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Останній день місяця.&lt;/li&gt;
&lt;li&gt;Останній робочий день кожного місяця.&lt;/li&gt;
&lt;li&gt;Останній понеділок року.&lt;/li&gt;
&lt;li&gt;П&amp;rsquo;ятниця першого тижня ISO 8601 року.&lt;/li&gt;
&lt;li&gt;Перша п&amp;rsquo;ятниця року.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;останній-день-місяця&#34;&gt;&lt;strong&gt;Останній день місяця&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Ці зразки &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;шаблон повторення&lt;/a&gt; вказує останній день місяця, кожного місяця.&lt;/p&gt;
&lt;p&gt;RRULE:FREQ=MONTHLY;BYMONTHDAY=-1&lt;/p&gt;
&lt;p&gt;Аналогічно, якщо вам потрібна подія за день до останнього дня місяця, використовуйте BYMONTHDAY=-2. Якщо вказати BYMONTHDAY=31, то згідно зі стандартом iCalendar у місяцях, що мають менше 31 дня, подія не буде створена.&lt;/p&gt;
&lt;h3 id=&#34;останній-робочий-день-кожного-місяця&#34;&gt;&lt;strong&gt;Останній робочий день кожного місяця&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Ці зразки &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;шаблон повторення&lt;/a&gt; вказує останній робочий день місяця, кожного місяця. Робочі дні визначаються як дні, у які ви працюєте. Наприклад, у Європі робочі дні зазвичай з понеділка по п&amp;rsquo;ятницю.&lt;/p&gt;
&lt;p&gt;RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1&lt;/p&gt;
&lt;p&gt;Вказане правило визначає всі робочі дні місяця та обирає останній з них. Результатом є останній робочий день місяця.&lt;/p&gt;
&lt;h3 id=&#34;останній-понеділок-року&#34;&gt;&lt;strong&gt;Останній понеділок року&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Цей приклад &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;шаблон повторення&lt;/a&gt; вказує подію, що відбувається в останній понеділок року.&lt;/p&gt;
&lt;p&gt;RRULE:FREQ=YEARLY;BYDAY=-1MO&lt;/p&gt;
&lt;h3 id=&#34;п&#34;&gt;&lt;strong&gt;П&amp;rsquo;ятниця першого тижня ISO 8601 року&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Цей приклад &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;шаблон повторення&lt;/a&gt; вказує п&amp;rsquo;ятницю першого тижня року. У специфікації ISO 8601 першим тижнем року вважається тиждень, у якому є принаймні чотири дні. Коли рік починається в суботу, наприклад, тиждень 1 — це наступний тиждень, що починається в понеділок, 3 січня.&lt;/p&gt;
&lt;p&gt;FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR&lt;/p&gt;
&lt;h3 id=&#34;перша-п&#34;&gt;&lt;strong&gt;Перша п&amp;rsquo;ятниця року&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Цей приклад &lt;a href=&#34;/email/net/introducing-recurrence-patterns/&#34;&gt;шаблон повторення&lt;/a&gt; вказує подію, що відбувається в першу п&amp;rsquo;ятницю року.&lt;/p&gt;
&lt;p&gt;FREQ=YEARLY;BYDAY=1FR&lt;/p&gt;
&lt;p&gt;У 1999 році, наприклад, перша п&amp;rsquo;ятниця року — 1999/01/01, тоді як п&amp;rsquo;ятниця першого тижня ISO 8601 — 1999/01/08.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Важливі деталі iCalendar RFC 2445</title>
      <link>/email/uk/net/important-icalendar-rfc-2445-details/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/important-icalendar-rfc-2445-details/</guid>
      <description>
        
        
        &lt;h2 id=&#34;про-модель-обєктів-asposeicalendar&#34;&gt;&lt;strong&gt;Про модель об’єктів Aspose.iCalendar&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.calendar&#34;&gt;Aspose.iCalendar&lt;/a&gt; Простір імен містить усі класи, надані компонентом Aspose.iCalendar. RecurrencePattern і RecurrenceRule є центральними класами Aspose.iCalendar і забезпечують конкретні реалізації відповідних елементів RFC 2445.&lt;/p&gt;
&lt;p&gt;Клас RecurrencePattern представляє весь шаблон повторення. Ви можете створити новий шаблон повторення з нуля, використовуючи конструктор за замовчуванням, або завантажити існуючий шаблон у форматі iCalendar за допомогою статичного методу FromiCalendar. Клас RecurrenceRule представляє частину RRULE або EXRULE шаблону повторення. RecurrenceRule надає ряд властивостей, які безпосередньо відповідають їх аналогам у стандарті iCalendar. Наприклад, ByMonth відповідає BYMONTH в iCalendar тощо. Перевіряючи або встановлюючи значення властивостей RecurrenceRule, ви можете аналізувати або змінювати правило повторення. Для отримання додаткової інформації та прикладів коду дивіться розділи RecurrencePattern і RecurrenceRule у довіднику API.&lt;/p&gt;
&lt;h2 id=&#34;важливі-деталі-icalendar-rfc-2445&#34;&gt;&lt;strong&gt;Важливі деталі iCalendar RFC 2445&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Цей розділ включає наступні теми:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Формати дати та часу.&lt;/li&gt;
&lt;li&gt;DATE.&lt;/li&gt;
&lt;li&gt;DATE‑TIME з локальним часом.&lt;/li&gt;
&lt;li&gt;DATE‑TIME з часом UTC.&lt;/li&gt;
&lt;li&gt;DATE‑TIME з локальним часом та часовим поясом.&lt;/li&gt;
&lt;li&gt;BYWEEKNO забезпечує відповідність ISO 8601&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;формати-дати-та-часу&#34;&gt;&lt;strong&gt;Формати дати та часу&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Дати, або дати з пов&amp;rsquo;язаними часами, можуть використовуватись у елементах DTSTART, UNTIL, EXDATE та RDATE при визначенні рекурентного шаблону. iCalendar визначає тип значення DATE для ідентифікації значень, що містять календарну дату, а також тип DATE‑TIME для ідентифікації значень, що вказують точну календарну дату та час доби. Значення DATE‑TIME можуть бути зазначені у трьох формах, з:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Локальний час.&lt;/li&gt;
&lt;li&gt;Час UTC.&lt;/li&gt;
&lt;li&gt;Локальний час та часовий пояс.&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;Згідно стандарту iCalendar, значення DATE мають мати формат yyyyMMdd. Наведений приклад представляє 14 липня 1997 року: 19970714&lt;/p&gt;
&lt;h3 id=&#34;datetime-з-локальним-часом&#34;&gt;&lt;strong&gt;DATE‑TIME з локальним часом&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Дата у формі локального часу — це просто значення date‑time, яке не містить позначки UTC і не посилається на часовий пояс. Наприклад, наступне представляє 18 січня 1998 року о 23:00: DTSTART:19980118T230000. Значення date‑time такого типу називаються &amp;quot;плаваючими&amp;quot; і не прив&amp;rsquo;язані до жодного конкретного часового поясу. Вони використовуються для представлення однакових годин, хвилин і секунд незалежно від того, який часовий пояс наразі застосовується.&lt;/p&gt;
&lt;h3 id=&#34;datetime-з-часом-utc&#34;&gt;&lt;strong&gt;DATE‑TIME з часом UTC&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Дата з часом у UTC, або абсолютним часом, позначається латинською великою літерою Z наприкінці, що є індикатором UTC, доданим до значення часу. Наприклад, наступне представляє 19 січня 1998 о 07:00 UTC: DTSTART:19980119T070000Z. Зауважте, що Aspose.iCalendar ігнорує суфікс Z у форматі UTC і розглядає час як локальний. Стандарт RFC2445 стверджує, що часова частина, вказана в правилі UNTIL шаблону повторення, має бути у форматі UTC. Це дуже дивне твердження, і насправді в стандарті є приклади, обчислені неправильно. Aspose.iCalendar приймає час у будь‑якому форматі у правилі UNTIL.&lt;/p&gt;
&lt;h3 id=&#34;datetime-з-локальним-часом-та-часовим-поясом&#34;&gt;&lt;strong&gt;DATE‑TIME з локальним часом та часовим поясом&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Щоб посилатися на часовий пояс, DATE‑TIME модифікується параметром TZID. Наприклад, наступне представляє 2 години ранку у Нью‑Йорку 19 січня 1998: DTSTART;TZID=US-Eastern:19980119T020000. Зауважте, що наразі Aspose.iCalendar ігнорує параметр TZID і розглядає час як локальний.&lt;/p&gt;
&lt;h3 id=&#34;byweekno-забезпечує-відповідність-iso-8601&#34;&gt;&lt;strong&gt;BYWEEKNO забезпечує відповідність ISO 8601&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Використовуйте BYWEEKNO лише коли потрібна відповідність &lt;a href=&#34;https://en.wikipedia.org/wiki/ISO_8601&#34;&gt;ISO 8601&lt;/a&gt; необхідний. Номери тижнів, визначені згідно ISO 8601, сильно відрізняються від звичних номерів тижнів. За ISO 8601, перший номер тижня календарного року — це перший тиждень року, у якому є принаймні чотири дні. Це правило робить алгоритм специфічним для застосувань, що вимагають відповідності ISO 8601, і практично робить його непридатним для інших випадків. ISO 8601 підтримується деякими європейськими банківськими та фінансовими застосунками. Він також використовується у телебаченні для планування рекламних роликів. Правило BYWEEKNO визначає список номерів тижнів року, розділених комами. Допустимі значення — від 1 до 53 і від 1 до 53. Це відповідає тижням згідно нумерації, визначеної в ISO 8601. BYWEEKNO діє лише для річних (YEARLY) правил.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Парсинг файлів повідомлень Microsoft Outlook</title>
      <link>/email/uk/net/parsing-microsoft-outlook-message-files/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/parsing-microsoft-outlook-message-files/</guid>
      <description>
        
        
        &lt;p&gt;За допомогою Aspose.Email ви можете розпарсити повідомлення Microsoft Outlook всього за кілька рядків коду. У цій статті показано, як це зробити. Aspose.Email містить класи для виконання різноманітних програмних задач з Outlook‑повідомленнями. Нижчий приклад коду демонструє, як:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Завантажте лист.&lt;/li&gt;
&lt;li&gt;Отримайте тему листа.&lt;/li&gt;
&lt;li&gt;Отримайте ім’я відправника.&lt;/li&gt;
&lt;li&gt;Отримайте повне тіло листа.&lt;/li&gt;
&lt;li&gt;Перевірте, чи є вкладення.&lt;/li&gt;
&lt;li&gt;Отримайте імена файлів усіх вкладень і збережіть їх.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Наведений фрагмент коду показує, як парсити файли повідомлень 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: Отримання сповіщень про успішно надіслані та невдалі повідомлення</title>
      <link>/email/uk/net/receiving-notifications-for-successfully-sent-and-failed-messages/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/receiving-notifications-for-successfully-sent-and-failed-messages/</guid>
      <description>
        
        
        &lt;p&gt;Коли ви хочете отримати сповіщення про доставку як успішних, так і невдаліх повідомлень, ви можете використати оператор вертикальної риски (|) для &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage/properties/deliverynotificationoptions&#34;&gt;DeliveryNotificationOptions&lt;/a&gt; властивість &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; клас. Нижче наведено фрагмент коду, який показує, як отримувати сповіщення про успішно надіслані та невдалі повідомлення.&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: Виявлення нових електронних листів на POP3 сервері</title>
      <link>/email/uk/net/detecting-new-email-messages-on-pop3-server/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/detecting-new-email-messages-on-pop3-server/</guid>
      <description>
        
        
        &lt;p&gt;З використанням POP3-акаунтів ви можете залишати листи на сервері під час їх завантаження та читання. Залишення листів на сервері означає, що вони доступні іншим програмам і користувачам, наприклад, користувачам, які отримують пошту з кількох пристроїв. Або ви можете захотіти завантажувати лише листи, які відповідають певним критеріям, наприклад, листи з певною темою. Для управління поштою ви можете;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Прочитайте всі листи з POP3 сервера за допомогою Aspose.Email.&lt;/li&gt;
&lt;li&gt;Завантажте листи у вашу локальну базу даних.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Листи не видаляються, а залишаються на сервері. Перший запуск проходить успішно: всі потрібні листи завантажуються у базу даних. При другому запуску ті ж листи завантажуються знову, оскільки вони все ще перебувають на сервері, що призводить до дублювання записів. Щоб вирішити цю проблему, використовуйте &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients.pop3/pop3messageinfo/properties/uniqueid&#34;&gt;Pop3MessageInfo.UniqueID&lt;/a&gt; властивість для перевірки, чи був лист вже завантажений. Унікальний ідентифікатор листа має зберігатися в базі даних: це ключ пошуку для виявлення нових листів.&lt;/p&gt;
&lt;h2 id=&#34;виявлення-нових-повідомлень&#34;&gt;&lt;strong&gt;Виявлення нових повідомлень&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Щоб визначити нові листи у списку листів на POP3 сервері:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Підключаєтесь до сервера.&lt;/li&gt;
&lt;li&gt;Отримуєте список листів.&lt;/li&gt;
&lt;li&gt;Підключаєтеся до бази даних.&lt;/li&gt;
&lt;li&gt;Отримуєте список листів.&lt;/li&gt;
&lt;li&gt;Порівнюєте списки.&lt;/li&gt;
&lt;li&gt;Зберігаєте нові листи у базу даних.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Процес швидший, коли ви:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Отримайте всі унікальні ідентифікатори листів у хеш-таблицю.&lt;/li&gt;
&lt;li&gt;Шукати у хеш‑таблиці замість бази даних для кожного електронного листа в циклі foreach(…) .&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Замість запиту до бази даних для кожного листа, що потребує багатьох звернень, цей метод вимагає лише одного виклику. Наведений фрагмент коду показує, як виявити нові листи на 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: Читання повідомлень електронної пошти з бібліотеки документів Microsoft SharePoint</title>
      <link>/email/uk/net/reading-email-messages-from-microsoft-sharepoint-document-library/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/reading-email-messages-from-microsoft-sharepoint-document-library/</guid>
      <description>
        
        
        &lt;p&gt;У цій статті показано, як читати повідомлення електронної пошти з бібліотеки документів Microsoft SharePoint. Щоб отримати доступ до файлів у бібліотеці документів SharePoint, на системі має бути встановлено SDK SharePoint. SDK надає необхідний API для входу та доступу до файлів з бібліотеки документів.&lt;/p&gt;
&lt;h2 id=&#34;читання-повідомлень-електронної-пошти-з-sharepoint&#34;&gt;&lt;strong&gt;Читання повідомлень електронної пошти з SharePoint&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Нижче наведені приклади коду передбачають, що файл повідомлення Microsoft Outlook (.msg) вже збережено у папці SharedDocument бібліотеки документів SharePoint. SDK SharePoint використовується для отримання файлу повідомлення у потік і передавання цього потоку екземпляру Aspose.Email &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; клас. Клас MailMessage завантажує потік і аналізує файл повідомлення Outlook. Після цього отримуйте доступ до властивостей класу MailMessage, наприклад, тема, текстове тіло, HTML‑тіло тощо, щоб використати інформацію у проєкті Visual Studio. Для отримання інформації про встановлення та налаштування Microsoft SharePoint Server і SDK, будь ласка, зверніться до відповідних розділів у бібліотеці MSDN. Наведений нижче фрагмент коду показує, як читати повідомлення електронної пошти з 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: Встановлення кодування тексту за замовчуванням у листі</title>
      <link>/email/uk/net/setting-default-text-encoding-in-email-message/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/setting-default-text-encoding-in-email-message/</guid>
      <description>
        
        
        &lt;p&gt;У цій статті представлено &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage/properties/preferredtextencoding&#34;&gt;MailMessage.PreferredTextEncoding&lt;/a&gt; властивість і пояснює, як її використовувати. За допомогою цієї властивості ви можете встановити кодування тексту за замовчуванням для наступних властивостей:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From: Відображуване ім&amp;rsquo;я&lt;/li&gt;
&lt;li&gt;To: Відображуване ім&amp;rsquo;я&lt;/li&gt;
&lt;li&gt;Subject&lt;/li&gt;
&lt;li&gt;Тіло&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;встановлення-кодування-тексту-за-замовчуванням&#34;&gt;&lt;strong&gt;Встановлення кодування тексту за замовчуванням&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;У попередніх версіях Aspose.Email кодування тексту для властивостей from, to, subject та body встановлювалося окремо. Щоб підвищити зручність, ми додали &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage/properties/preferredtextencoding&#34;&gt;PreferredTextEncoding&lt;/a&gt; властивість, що встановлює все одразу. Тепер легше гарантувати, що весь текст у зазначених вище властивостях правильно закодований у листі. Наведений фрагмент коду показує, як використати французьке слово як відображуване ім’я для електронних адрес, теми та тіла листа.&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: Перетворення файлу повідомлення Outlook (MSG) у зображення TIFF</title>
      <link>/email/uk/net/converting-outlook-message-file-msg-to-tiff-image/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/converting-outlook-message-file-msg-to-tiff-image/</guid>
      <description>
        
        
        &lt;p&gt;У цій статті ми показуємо, як конвертувати файл Outlook MSG у зображення TIFF.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Спочатку прочитайте файл MSG і конвертуйте його у формат MHTML за допомогою Aspose.Email для .NET. Використайте &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email/mailmessage&#34;&gt;Aspose.Email.MailMessage&lt;/a&gt; клас для завантаження файлу повідомлення.&lt;/li&gt;
&lt;li&gt;Після завантаження файлу, викличте &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email/mailmessage/methods/save/index&#34;&gt;MailMessage.Save()&lt;/a&gt; метод і збережіть його у потік у форматі MHTML.&lt;/li&gt;
&lt;li&gt;Використовуйте Aspose.Words для .NET, щоб конвертувати потік MHTML у TIFF. Використайте &lt;a href=&#34;https://apireference.aspose.com/net/words/aspose.words/document&#34;&gt;Aspose.Words.Document&lt;/a&gt; клас для завантаження потоку MHTML.&lt;/li&gt;
&lt;li&gt;Нарешті, викличте &lt;a href=&#34;https://apireference.aspose.com/net/words/aspose.words/document/methods/save/index&#34;&gt;Document.Save()&lt;/a&gt; метод для збереження документа MHTML у TIFF.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Якщо документ містить кілька сторінок, генерується багатосторінковий файл TIFF. Наведені фрагменти коду показують, як конвертувати файл повідомлення Outlook (MSG) у зображення 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: Використання документа Microsoft Word як тіла повідомлення та надсилання електронної пошти</title>
      <link>/email/uk/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/uk/net/using-a-microsoft-word-document-as-the-message-body-and-sending-email/</guid>
      <description>
        
        
        &lt;p&gt;У цій статті показано, як використовувати документ Microsoft Word як тіло електронного листа та надсилати його одержувачам. Приклад документа — рахунок-фактура продажу з бази даних Northwind, експортований у формат Microsoft Word. Aspose.Email для .NET працює з мережевими протоколами та функціями Microsoft Outlook і не може обробляти документи Microsoft Word. Щоб обійти це, у прикладах статті використовується &lt;a href=&#34;https://products.aspose.com/words/net/&#34;&gt;Aspose.Words для .NET&lt;/a&gt; для завантаження документа Word і перетворення його у формат MHTML. Aspose.Email для .NET використовує документ MHTML у тілі листа.&lt;/p&gt;
&lt;h2 id=&#34;використання-документів-microsoft-word-як-тіла-електронного-листа&#34;&gt;&lt;strong&gt;Використання документів Microsoft Word як тіла електронного листа&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Нижче наведені приклади коду, які ілюструють, як надіслати документ Word як тіло електронного листа, використовуючи Aspose.Words для .NET та Aspose.Email для .NET:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Завантажте документ Microsoft Word, використовуючи Aspose.Word для .NET &lt;a href=&#34;https://apireference.aspose.com/words/net/aspose.words/document&#34;&gt;Document&lt;/a&gt; клас.&lt;/li&gt;
&lt;li&gt;Збережіть його у форматі MHTML.&lt;/li&gt;
&lt;li&gt;Завантажте документ MHTML, використовуючи Aspose.Email для .NET &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; клас для встановлення тіла електронного листа.&lt;/li&gt;
&lt;li&gt;Встановіть інші властивості повідомлення, використовуючи різні &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; властивостей та методів класу.&lt;/li&gt;
&lt;li&gt;Надішліть електронний лист, використовуючи Aspose.Email для .NET &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.smtp/smtpclient&#34;&gt;SMTPClient&lt;/a&gt; клас.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Вихідний документ, рахунок‑фактура продажу, експортований у Microsoft Word з прикладу Microsoft Northwind, можна бачити нижче.&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;Коли повідомлення було надіслано та отримано в Microsoft Outlook, воно виглядає так, як нижче.&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;HTML‑форматування та зображення зберігаються так само, як у вихідному документі, при перегляді в Outlook або веб‑клієнті електронної пошти, такому як Gmail чи Hotmail. Нижче — скріншот повідомлення, відкритого у Gmail у браузері 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;У наведеному фрагменті коду показано, як використовувати документ Microsoft Word як тіло повідомлення та надіслати електронний лист за допомогою &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.smtp/smtpclient&#34;&gt;SmtpClient&lt;/a&gt; екземпляр класу.&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: Функції друку Aspose.Email</title>
      <link>/email/uk/net/aspose-email-printing-features/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/aspose-email-printing-features/</guid>
      <description>
        
        
        &lt;h2 id=&#34;функції-друку&#34;&gt;&lt;strong&gt;Функції друку&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/&#34;&gt;Aspose.Email.Printing&lt;/a&gt; простір імен надає широкий набір можливостей для друку поштових повідомлень у різні формати (XPS або TIFF) та налаштування макетів сторінок. У цій статті описані ці можливості. Існує кілька варіантів, як можна надрукувати електронне повідомлення за допомогою Aspose.Email:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Друк лише тіла повідомлення.&lt;/li&gt;
&lt;li&gt;Друк тіла повідомлення та заголовків.&lt;/li&gt;
&lt;li&gt;Друк HTML‑тела.&lt;/li&gt;
&lt;li&gt;Встановлення макету сторінки.&lt;/li&gt;
&lt;li&gt;Автоматично підганяти TIFF під принтер.&lt;/li&gt;
&lt;li&gt;Налаштуйте цільовий DPI для вихідного TIFF.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;друк-тіла-повідомлення&#34;&gt;&lt;strong&gt;Друк тіла повідомлення&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Наступний фрагмент коду показує, як створити повідомлення та надрукувати його без заголовків спочатку у файл XPS, а потім у файл 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;друк-заголовків-та-тіла-повідомлення&#34;&gt;&lt;strong&gt;Друк заголовків та тіла повідомлення&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Наступний фрагмент коду показує, як відобразити заголовки та надрукувати їх разом із тілом повідомлення, змінити &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/formattingflags&#34;&gt;FormattingFlags&lt;/a&gt; до &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;друк-повідомлення-з-htmlтілом&#34;&gt;&lt;strong&gt;Друк повідомлення з HTML‑тілом&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Повідомлення з HTML‑текстом також можна надрукувати. Наступний фрагмент коду показує, як надрукувати повідомлення з 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;налаштування-макету-сторінки-для-друку&#34;&gt;&lt;strong&gt;Налаштування макету сторінки для друку&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; надає елементи керування для встановлення наступних властивостей макету сторінки:&lt;/p&gt;
&lt;p&gt;|&lt;strong&gt;Властивість&lt;/strong&gt;|&lt;strong&gt;Опис&lt;/strong&gt;|&lt;strong&gt;Значення за замовчуванням&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;|Показати або приховати деталі повідомлення.|None [1]| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/margintop&#34;&gt;MarginTop&lt;/a&gt;|Отримати або встановити верхнє поле.|0.5| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/marginleft&#34;&gt;MarginLeft&lt;/a&gt;|Отримати або встановити ліве поле.|0.5| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/marginbottom&#34;&gt;MarginBottom&lt;/a&gt;|Отримати або встановити нижнє поле.|0.5| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/marginright&#34;&gt;MarginRight&lt;/a&gt;|Отримати або встановити праве поле.|0.5| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/pageunit&#34;&gt;PageUnit&lt;/a&gt;|Отримати або встановити одиниці вимірювання.|Inch [2]| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/pageheight&#34;&gt;PageHeight&lt;/a&gt;|Отримати або встановити висоту сторінки.|11.69| |&lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/mailprinter/properties/pagewidth&#34;&gt;PageWidth&lt;/a&gt;|Отримати або встановити ширину сторінки.|8.27|&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Існує два прапорці: MailInfo та None&lt;/li&gt;
&lt;li&gt;Одиниці вимірювання сторінки можуть бути: дюйм (Inch), піксель (Pixel), пункт (Point), см (Cm) або міліметр (Millimeter).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Наступний фрагмент коду використовує довільні налаштування, щоб проілюструвати використання цих властивостей. Він створює сторінку висотою 20 см і шириною 8 см, з полями 2 см.&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;автоматичне-підганяння-tiff&#34;&gt;&lt;strong&gt;Автоматичне підганяння 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; надає &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.printing/messageformattingflags&#34;&gt;MessageFormattingFlags.AutoFitWidth&lt;/a&gt; властивість, яка дозволяє автоматично підганяти TIFF під принтер. Наступний фрагмент коду показує, як використовувати 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;налаштування-цільового-dpi-для-вихідного-tiff&#34;&gt;&lt;strong&gt;Налаштування цільового DPI для вихідного TIFF&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Наступний фрагмент коду показує, як використовувати DPI для вихідного TIFF.&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: Використання робочого листа Microsoft Excel як тіла повідомлення та надсилання електронної пошти</title>
      <link>/email/uk/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/uk/net/using-a-microsoft-excel-worksheet-as-the-message-body-and-sending-email/</guid>
      <description>
        
        
        &lt;p&gt;У цій статті як тіло електронного листа використовується книга Microsoft Excel, яку надсилають одержувачам. Aspose.Email для .NET працює з мережевими протоколами та функціями Microsoft Outlook і не може обробляти книги Microsoft Excel. Щоб подолати це, у прикладах статті використовується Aspose.Cells для .NET для завантаження книги Excel і перетворення її у HTML‑потік. Потім Aspose.Email для .NET використовує цей HTML‑потік у тілі листа. Приклад коду демонструє, як надіслати робочий лист Excel як тіло електронного листа, використовуючи Aspose.Cells для .NET та Aspose.Email для .NET.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Завантаження книги Microsoft Excel за допомогою класу Workbook з Aspose.Cells&lt;/li&gt;
&lt;li&gt;Збережіть завантажену книгу у MemoryStream у форматі HTML&lt;/li&gt;
&lt;li&gt;Отримайте HTML з потоку у вигляді рядка&lt;/li&gt;
&lt;li&gt;Створіть новий об’єкт MailMessage і задайте його HtmlBody HTML‑вмістом зі кроку 3&lt;/li&gt;
&lt;li&gt;Надішліть електронний лист, використовуючи клас SmtpClient з Aspose.Email для .NET&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Вихідну книгу Excel можна побачити наступним чином:&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;Після надсилання та отримання повідомлення у Microsoft Outlook, воно виглядає наступним чином:&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;Наведений фрагмент коду показує, як надіслати робочий лист MS Excel як тіло повідомлення та відправити електронну пошту.&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: Обгортковий клас для асинхронного завантаження електронних повідомлень за допомогою Aspose.Email</title>
      <link>/email/uk/net/wrapper-class-for-loading-email-messages-async-using-aspose-email/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/wrapper-class-for-loading-email-messages-async-using-aspose-email/</guid>
      <description>
        
        
        &lt;h2 id=&#34;обгортковий-клас-для-завантаження-електронних-повідомлень&#34;&gt;&lt;strong&gt;Обгортковий клас для завантаження електронних повідомлень&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Існує багато випадків, коли потрібна функція часу очікування, щоб перервати дію, яка триває занадто довго. У цій статті представлено зразковий клас, що реалізує функціональність часу очікування під час завантаження файлів EML/MSG, що може призвести до тривалих затримок або помилок завантаження. Оскільки час очікування не стосується безпосередньо операцій читання/запису з диска чи мережі, його доцільно реалізовувати не в API, а на боці користувача, написавши обгортковий клас навколо Aspose.&lt;/p&gt;
&lt;p&gt;Скасування довгої роботи потоку можна здійснити за допомогою обгортаючого делегата, який передає посилання на потік, що має бути завершений, у локальну змінну всередині методу, який його запустив. Довгий потік скасовується його перериванням, і контроль повертається до головного застосунку. Нижче наведений приклад коду, що забезпечує обгортковий клас навколо бібліотеки Aspose.Email. Код демонструє приклад використання обгорткового класу.&lt;/p&gt;
&lt;h3 id=&#34;зразок-програмування-з-net35-і-вище&#34;&gt;&lt;strong&gt;Зразок програмування з .NET 3.5 і вище&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;зразок-програмування-з-net20&#34;&gt;&lt;strong&gt;Зразок програмування з .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;приклад-використання&#34;&gt;&lt;strong&gt;Приклад використання&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: Генерувати випадки за шаблоном повторення</title>
      <link>/email/uk/net/generate-occurrences-from-a-recurrence-pattern/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/generate-occurrences-from-a-recurrence-pattern/</guid>
      <description>
        
        
        &lt;p&gt;За допомогою Aspose.Email можна генерувати події, використовуючи шаблон повторення. Ця стаття пояснює як, як саме &lt;a href=&#34;/email/uk/net/generate-occurrences-from-a-recurrence-pattern/#calculate-the-next-occurrence-or-n-next-occurrences&#34;&gt;згенерувати наступну подію&lt;/a&gt; і &lt;a href=&#34;/email/uk/net/generate-occurrences-from-a-recurrence-pattern/#get-user-friendly-text-for-a-recurrence&#34;&gt;отримати зручні для користувача описання елементів&lt;/a&gt;. Події з шаблону повторення календаря MAPI можна генерувати за допомогою Aspose.Email. Наведений нижче фрагмент коду показує, як генерувати події з шаблонів повторення.&lt;/p&gt;
&lt;h2 id=&#34;обчислити-наступну-подію-або-n-наступних-подій&#34;&gt;&lt;strong&gt;Обчислити наступну подію або n наступних подій&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Щоб отримати «наступний» випадок, використайте метод GenerateOccurrences з параметром nNextOccurrences=1. Наведений фрагмент коду показує, як згенерувати 20 випадків, використовуючи nNextOccurrences = 20. Результат коду нижче виглядає так:&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;отримати-дружній-для-користувача-текст-для-повторення&#34;&gt;&lt;strong&gt;Отримати дружній для користувача текст для повторення&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Дружній для користувача текст правила можна отримати, використовуючи властивість FriendlyText, як показано нижче. Результат коду буде: &amp;quot;Повторювати щомісяця в 1-й і 1-й з кінця дня(днів) місяця, максимум 2 випадки.&amp;quot;. Наступний фрагмент коду показує, як отримати дружній для користувача текст для повторення.&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: Доступ до поштових сервісів за допомогою OAuth</title>
      <link>/email/uk/net/access-mail-services-using-oauth/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/access-mail-services-using-oauth/</guid>
      <description>
        
        
        &lt;p&gt;Підтримку OAuth 2.0 додано до Aspose.Email, і її можна використовувати для доступу до серверів &lt;strong&gt;SMTP&lt;/strong&gt;, &lt;strong&gt;POP3&lt;/strong&gt;, &lt;strong&gt;IMAP&lt;/strong&gt; та &lt;strong&gt;EWS&lt;/strong&gt;. Загалом, всі сервери, що підтримують токени типу &lt;strong&gt;Bearer OAuth 2.0&lt;/strong&gt;, можуть бути використані з Aspose.Email, однак наші клієнти електронної пошти протестовані на серверах пошти Google та серверах Microsoft Office 365. Доступ до сервера з &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; і &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients.exchange.webservice/ewsclient&#34;&gt;EWSClient&lt;/a&gt; за допомогою OAuth може бути реалізовано 2 способами.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Надайте токен доступу безпосередньо у конструктор клієнта електронної пошти. У цьому випадку користувач повинен розуміти, що термін дії токенів обмежений. Коли токен прострочений, клієнт електронної пошти не може бути використаний для доступу до сервера.&lt;/li&gt;
&lt;li&gt;Надайте користувацьку реалізацію постачальника токенів на основі &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients/itokenprovider&#34;&gt;ITokenProvider&lt;/a&gt; інтерфейс у конструктор клієнта електронної пошти. У цьому випадку клієнт перевіряє час закінчення терміну дії токена і запитує &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email.clients/itokenprovider&#34;&gt;ITokenProvider&lt;/a&gt; для отримання нового токену доступу, коли попередній прострочений. Таким чином, клієнт періодично оновлює токени і може працювати з сервером необмежений час. Часто сервіси підтримують простий спосіб оновлення токенів доступу. Наприклад, використання токенів оновлення у сервісах Google або потік автентифікації ROPC у платформі Microsoft Identity може бути використано для реалізації постачальника токенів.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;налаштування-облікового-запису-на-відповідному-сервері&#34;&gt;&lt;strong&gt;Налаштування облікового запису на відповідному сервері&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Наступні статті допоможуть вам налаштувати облікові записи для доступу до поштових сервісів.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Для &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;Для &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;доступ-до-поштових-сервісів-за-допомогою-токенів-доступу&#34;&gt;&lt;strong&gt;Доступ до поштових сервісів за допомогою токенів доступу&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Наступні приклади коду показують, як підключитися до поштових сервісів, використовуючи токени доступу.&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;доступ-до-поштових-сервісів-за-допомогою-постачальників-токенів&#34;&gt;&lt;strong&gt;Доступ до поштових сервісів за допомогою постачальників токенів&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Наступні приклади коду показують, як підключитися до поштових сервісів, використовуючи постачальник токенів.&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;реалізація-користувацького-itokenprovider-для-office-365&#34;&gt;&lt;strong&gt;Реалізація користувацького ITokenProvider для Office 365&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Ви можете використати нижченаведену реалізацію постачальника токенів для доступу до поштових сервісів 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;Наступні приклади коду показують, як підключитися до сервісів 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;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: Різниця між вбудованими та звичайними вкладеннями</title>
      <link>/email/uk/net/differentiating-between-inline-and-regular-attachments/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/differentiating-between-inline-and-regular-attachments/</guid>
      <description>
        
        
        &lt;p&gt;Це поширений випадок, коли повідомлення електронної пошти може містити вбудовані зображення в тілі, а також звичайні вкладення, пов’язані з ним. Використовуючи &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt; клас, вбудовані вкладення можна витягти з &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage/properties/linkedresources&#34;&gt;LinkedResourceCollection&lt;/a&gt; клас, тоді як звичайні вкладення можна отримати/витягти за допомогою &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email/mailmessage/properties/attachments&#34;&gt;AttachmentCollection&lt;/a&gt; класу повідомлення. Однак це відрізняється, коли повідомлення завантажується за допомогою класу Aspose.Email.Mapi.MapiMessage, оскільки всі вбудовані зображення та звичайні вкладення доступні користувачеві в одному класі MapiAttachmentCollection. Тому потрібно розробити метод, який би розрізняв вбудоване та звичайне вкладення при використанні MapiMessage.&lt;/p&gt;
&lt;h2 id=&#34;використання-asposeemail-для-розрізнення-вбудованих-та-звичайних-вкладень&#34;&gt;&lt;strong&gt;Використання Aspose.Email для розрізнення вбудованих та звичайних вкладень&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;У цій статті пояснюється, як розрізнити вбудовані вкладення від звичайних за допомогою MapiMessage. Щоб визначити цю різницю, враховується тип тіла MapiMessage наступним чином:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Тіло простого тексту:&lt;/strong&gt; Повідомлення електронної пошти з типом тіла простий текст не потребують перевірки, оскільки всі вкладення в таких повідомленнях завжди є звичайними.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Тіло HTML:&lt;/strong&gt; У випадку повідомлення з типом тіла HTML, вкладення повинно містити не лише властивість PR_ATTACH_FLAGS (0x37140003), а її значення має бути 0x00000004 для вбудованих вкладень. Якщо ця умова виконана, далі залежить від тегів PR_ATTACH_CONTENT_LOCATION та PR_ATTACH_CONTENT_ID для визначення характеру вкладення. Однак за відсутності тегу PR_ATTACH_FLAGS Mapi, вкладення перевіряється за властивістю PR_ATTACH_DISPOSITION (0x3716001F або 0x3716001E) для визначення типу вкладення.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Тіло RTF:&lt;/strong&gt; Якщо тіло у форматі RTF, тоді всі OLE‑вкладення є вбудованими. Значення PR_ATTACH_METHOD для всіх OLE‑вкладень дорівнює 0x00000006.&lt;/p&gt;
&lt;p&gt;Нижче наведений приклад коду демонструє, як програмно розрізняти вбудовані та звичайні вкладення. Функція IsInlineAttachment приймає вкладення та тип тіла повідомлення як вхідні параметри і повертає true, якщо вкладення є вбудованим.&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: Надсилання листа за допомогою DNS</title>
      <link>/email/uk/net/send-mail-using-dns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/send-mail-using-dns/</guid>
      <description>
        
        
        &lt;p&gt;Іноді надсилання електронних листів через SMTP‑сервер не відповідає вимогам проєкту. Ми можемо захотіти використовувати MX‑запис домену отримувача. Наведений нижче фрагмент коду показує, як надсилати листи, використовуючи поштові сервери домену отримувача.&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: Видобування даних вбудованих об’єктів</title>
      <link>/email/uk/net/extraction-of-embedded-objects-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/extraction-of-embedded-objects-data/</guid>
      <description>
        
        
        &lt;p&gt;Іноді вбудовані OLE-дані представляються у вигляді вкладення &amp;quot;oleData.mso&amp;quot; за &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.mapi/mapiattachment&#34;&gt;MapiAttachment&lt;/a&gt; і потребує ручного видобутку. Ці файли oleData.mso мають формат Microsoft Computer Document File (MCDF), і підтримка таких файлів виходить за межі можливостей Aspose.Email. Однак Aspose.Email можна використовувати в комбінації з іншими open-source бібліотеками, такими як OpenMCDF, для читання вмісту таких файлів і збереження їх на диск. Aspose.Email надає &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.mapi/inlineattachmentextractor&#34;&gt;InlineAttachmentExtractor&lt;/a&gt; клас для перелічення MSO‑пакетів з бінарних даних oledata.mso, які потім можна використовувати для видобування вмісту за допомогою бібліотек читання Compound Files.&lt;/p&gt;
&lt;p&gt;Якщо тип тіла листа — HTML (не RTF), і в листі є OLE‑об’єкти, властивість MapiPropertyTag.PR_ATTACH_DATA_OBJ відсутня. У такому випадку інформація про OLE‑об’єкти міститься у файлі oldedata.mso.&lt;/p&gt;
&lt;h2 id=&#34;видобування-вбудованих-обєктів&#34;&gt;&lt;strong&gt;Видобування вбудованих об’єктів&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;У цій статті показано, як витягти вміст з такого файлу за допомогою Aspose.Email та &lt;a href=&#34;http://sourceforge.net/projects/openmcdf/&#34;&gt;OpenMCDF&lt;/a&gt;. Це можна зробити наступним чином:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Перелічіть пакети MSO у бінарних даних вкладення oledata.mso&lt;/li&gt;
&lt;li&gt;для кожних OLE‑даних прочитайте CompoundFile&lt;/li&gt;
&lt;li&gt;Прочитайте потік за допомогою CONTENTS&lt;/li&gt;
&lt;li&gt;Збережіть вміст у 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: Збереження електронного листа у формат PDF</title>
      <link>/email/uk/net/saving-an-email-as-pdf/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/saving-an-email-as-pdf/</guid>
      <description>
        
        
        &lt;p&gt;У цій статті показано, як конвертувати електронний лист у PDF за допомогою Aspose.Email. Aspose.Email для .NET працює з мережевими протоколами та функціями Microsoft Outlook і не може виконати пряме перетворення у PDF. Щоб подолати це, у прикладах статті використовується Aspose.Email для перетворення електронного листа у потік MHTML, а потім Aspose.Words для .NET завантажує цей потік MHTML і зберігає його у PDF. Електронний лист може містити також вкладення. Оскільки кожне вкладення може мати різний медіа‑тип, Aspose.Email ігнорує ці вкладення під час конвертації у MHTML, тобто лише вбудовані зображення в повідомленні будуть частиною MHTML, а всі звичайні вкладення будуть проігноровані.&lt;/p&gt;
&lt;h2 id=&#34;конвертація-електронного-листа-у-pdf&#34;&gt;&lt;strong&gt;Конвертація електронного листа у PDF&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Нижче наведено код, який демонструє конвертацію електронних листів у PDF за допомогою Aspose.Email у поєднанні з Aspose.Words для .NET. Це включає такі кроки:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Завантажте електронний лист за допомогою &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;Зберегти лист у MemoryStream у форматі MHTML&lt;/li&gt;
&lt;li&gt;Завантажити потік за допомогою Aspose.Words&lt;/li&gt;
&lt;li&gt;Зберегти лист у PDF&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Вихідний лист можна бачити наступним чином:&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 виглядає так, як на наведеному зображенні:&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;Наведений фрагмент коду показує, як конвертувати електронні листи у 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: Надсилання запиту на зустріч з повторенням</title>
      <link>/email/uk/net/sending-meeting-request-with-recurrence/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/sending-meeting-request-with-recurrence/</guid>
      <description>
        
        
        &lt;p&gt;За допомогою Aspose.Email можна створити запит на зустріч з повторенням. У цій статті пояснюється, як можна створити запит на зустріч з конкретним повторенням. Унікальний ідентифікатор зустрічі можна зберегти для подальшого використання під час надсилання оновлень до зустрічі.&lt;/p&gt;
&lt;h2 id=&#34;створення-запиту-на-зустріч-з-повторенням&#34;&gt;&lt;strong&gt;Створення запиту на зустріч з повторенням&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Наступний зразок коду показує, як це реалізувати.&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;надіслати-запит-оновлення-призначення&#34;&gt;&lt;strong&gt;Надіслати запит оновлення призначення&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Для надсилання оновлення попередньої зустрічі потрібен унікальний ідентифікатор. Наведений приклад коду показує, як можна надіслати запит оновлення цієї зустрічі&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: Підтримка багатопотоковості в поштових клієнтах</title>
      <link>/email/uk/net/multi-threading-support-in-mail-clients/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/multi-threading-support-in-mail-clients/</guid>
      <description>
        
        
        &lt;p&gt;Поштові клієнти, такі як ImapClient і Pop3Client, дозволяють використовувати їх у багатопоточному середовищі. Поштові клієнти можуть мати одне або кілька підключень до сервера. Для керування набором підключень в середині клієнтів використовується пул підключень. Кількість підключень, які можуть бути створені та використані одночасно, обмежується властивістю CredentialsByHostClient.MaxConnectionsPerServer. Це значення можна встановити рівним 1 або більшому. За замовчуванням воно дорівнює 10. Для підключення реалізовано чергу команд, щоб підтримувати багатопоточні операції. Команди реалізують прості операції, визначені протоколом, такі як Noop, Authenticate тощо. Користувач може ініціювати виконання більшої кількості команд, ніж доступних підключень. Однак вони будуть виконані лише тоді, коли клієнт зможе створити підключення для операції.&lt;/p&gt;
&lt;h2 id=&#34;методи-використання-поштових-клієнтів-у-багатопоточному-середовищі&#34;&gt;&lt;strong&gt;Методи використання поштових клієнтів у багатопоточному середовищі&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Поштові клієнти мають таку поведінку:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Якщо MaxConnectionsPerServer = 1, клієнт створює 1 з’єднання, виконує автентифікацію та авторизацію. Це з’єднання підтримується у робочому стані до моменту, коли клієнт буде звільнений. Усі операції з різних потоків направляються в одну чергу команд, розміщену в головному з’єднанні.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Якщо MaxConnectionsPerServer &amp;gt; 1, клієнт створює необхідну кількість з’єднань, виконує автентифікацію та авторизацію для кожного з’єднання. Одне з’єднання зарезервовано як головне з’єднання. Це з’єднання підтримується у робочому стані до моменту, коли клієнт буде звільнений. Інші з’єднання створюються та звільняються за потребою. Максимальна кількість таких з’єднань визначається властивістю MaxConnectionsPerServer, наприклад, якщо MaxConnectionsPerServer = 2, то одне зарезервовано як головне з’єднання, а друге використовується як додаткове для операцій, які виконуються в інших потоках. Аналогічно, якщо MaxConnectionsPerServer = 3, то перше з’єднання зарезервовано як головне, а два інші використовуються як додаткові для операцій в інших потоках. У випадку надходження запиту на з’єднання від нового потоку, і коли всі з’єднання вже зайняті, клієнт чекає, доки кількість використаних з’єднань не зменшиться. Це дуже важливий момент, який пояснює, чому правильне звільнення з’єднань є таким важливим.&lt;/p&gt;
&lt;h2 id=&#34;приклади&#34;&gt;&lt;strong&gt;Приклади&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Користувач може виконувати операції в різних потоках кількома способами. Їх можна розділити на два типи:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Користувач використовує асинхронні (Begin/End) методи, визначені в клієнті. У цьому випадку поштовий клієнт запускає нові потоки за потреби. У клієнті реалізована черга задач (будь ласка, не плутайте її з чергою команд у з’єднанні). Задача може бути виконана, якщо з’єднання доступне. Коли кількість використаних з’єднань стає меншою за межеве значення, клієнт створює нове з’єднання, створює потік для поточної задачі і виконує її. Приклад використання асинхронних операцій:&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; Користувач може створювати потоки, використовуючи такі об’єкти, як Thread, ThreadPool, Task або будь‑які інші призначені для цього об’єкти. Також користувач може використовувати потоки, створені в сторонньому коді. При цьому клієнт має два моделі поведінки&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;a.&lt;/strong&gt; Якщо користувач не створює додаткових з’єднань для операцій у потоці, всі операції для цього потоку будуть відправлені в чергу команд головного з’єднання. Приклад операцій у додатковому потоці без створення нового з’єднання, всі транзакції виконуються через головне з’єднання:&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; Коли користувач виконує метод створення нового з’єднання для додаткового потоку, цей потік блокується, поки значення квоти для нових з’єднань не буде змінено, щоб дозволити нове з’єднання. Потім нове з’єднання створюється. Це з’єднання встановлюється як дефолтне з’єднання для всіх операцій у цьому потоці. Після завершення всіх операцій у цьому потоці з’єднання має бути звільнене. Для створення нових з’єднань використовуйте метод CredentialsByHostClient.CreateConnection. Цей метод повертає об’єкт, який реалізує інтерфейс IDisposable. Для звільнення з’єднання треба викликати метод Dispose. Створення та звільнення з’єднання повинні виконуватись всередині потоку, у якому виконуються поштові операції. Спроба створити нове з’єднання у потоці, в якому був створений поштовий клієнт, призводить до помилки, оскільки цей потік у даний момент не може бути використаний для створення нового з’єднання. Також створення нового з’єднання неможливе, коли MaxConnectionsPerServer = 1. Приклад коду створення нового з’єднання в додатковому потоці:&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;рекомендації&#34;&gt;&lt;strong&gt;Рекомендації&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Варто зазначити, що якщо користувач надсилає всі команди через головне з’єднання, може виникнути ситуація, коли команди з різних потоків будуть перемішані. Користувач повинен розуміти, які команди залежать від їх послідовності, і вжити заходів для синхронізації таких команд. Також необхідно враховувати можливість виконання команд у різних сеансах (IMAP/POP3). Найбільш ресурсоємними операціями є, наприклад, FetchMessage, AppendMessage та Send. Ймовірно, має сенс виконувати ці операції у новому потоці і новому з’єднанні. Але швидкі операції, такі як Delete, доцільно виконувати через головне з’єднання. Зверніть увагу, що ініціалізація нового з’єднання є достатньо витратною операцією.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Вступ та приклади застосувань</title>
      <link>/email/uk/net/introduction-and-sample-applications/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/introduction-and-sample-applications/</guid>
      <description>
        
        
        &lt;h2 id=&#34;сценарії-використання-asposeemailmail&#34;&gt;&lt;strong&gt;Сценарії використання Aspose.Email.Mail&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;У цій статті пропонуються різні можливі варіанти використання Aspose.Email для .NET, зокрема щодо функцій програмування електронної пошти, які надає компонент.&lt;/p&gt;
&lt;h3 id=&#34;програмне-забезпечення-для-розсилки-новин&#34;&gt;&lt;strong&gt;Програмне забезпечення для розсилки новин&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email&#34;&gt;Aspose.Email.Mail&lt;/a&gt; API можна використовувати для створення надійного застосунку розсилки новин. Використовуючи підтримку Aspose.Email щодо додавання вбудованих об’єктів (наприклад, зображень, звуків тощо), можна створити багаті HTML‑розсилки новин з зображеннями (та іншими вбудованими об’єктами). За допомогою функції масової розсилки API Aspose.Email.Mail також можливо надсилати величезні масові листи за обмежений час. Aspose.Email.Mail також надає можливість створення шаблонів листа‑злиття, що може бути використана для створення шаблону розсилки новин. Шаблон розсилки можна застосовувати для виконання листа‑злиття під час надсилання масових розсилок новин. Існує багато інших можливих завдань, які Aspose.Email.Mail може виконувати у застосунку e‑mail маркетингу.&lt;/p&gt;
&lt;h3 id=&#34;інші-інструменти-маркетингу&#34;&gt;&lt;strong&gt;Інші інструменти маркетингу&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Подібно до застосунків розсилки новин, багато інших типів програмного забезпечення можна створити за допомогою Aspose.Email.Mail. Використовуйте його для створення e‑mail маркетингу, масових розсилок та e‑campaign, і багато іншого.&lt;/p&gt;
&lt;h3 id=&#34;ділові-додатки&#34;&gt;&lt;strong&gt;Ділові додатки&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Mail можна використовувати майже у всіх типах бізнес‑застосунків для виконання утилітних завдань:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Сповіщення електронною поштою: Надсилайте сповіщення, щоб інформувати користувачів про події.&lt;/li&gt;
&lt;li&gt;Запити на зустрічі: надсилайте бізнес‑запити на зустрічі, використовуючи підтримку iCalendar в Aspose.Email.Mail.&lt;/li&gt;
&lt;li&gt;Електронна розсилка запланованих звітів: звіти є невід&amp;rsquo;ємною частиною більшості бізнес‑застосунків. Багато бізнес‑звіту генерується періодично. Використовуйте Aspose.Email.Mail для розсилки запланованих звітів електронною поштою.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;поштові-клієнти&#34;&gt;&lt;strong&gt;Поштові клієнти&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Mail також можна використовувати в поштових клієнтах для надсилання звичайних листів. Він підтримує вкладення, вбудовані об’єкти, події iCalendar, злиття листів, розсилку масових листів тощо, тому Aspose.Email.Mail є найкращим варіантом для створення Windows‑ або веб‑застосунків поштових клієнтів.&lt;/p&gt;
&lt;h2 id=&#34;зразок-застосунку-asposeemailmail&#34;&gt;&lt;strong&gt;Зразок застосунку Aspose.Email.Mail&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Щоб продемонструвати використання Aspose.Email.Mail, ми створимо застосунок під назвою &amp;lsquo;My First Email&amp;rsquo;, що демонструє, як сформувати електронне повідомлення за допомогою &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;Клас MailMessage&lt;/a&gt; а потім надішліть його за допомогою класу SmtpClient.&lt;/p&gt;
&lt;h3 id=&#34;mail--кроки-створення-зразкового-додатку&#34;&gt;&lt;strong&gt;Mail : Кроки створення зразкового додатку&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Будь ласка, дотримуйтесь наведених нижче кроків, щоб створити застосунок &amp;lsquo;My First Mail&amp;rsquo; за допомогою Aspose.Email.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Відкрийте Visual Studio.&lt;/li&gt;
&lt;li&gt;У меню &lt;strong&gt;File&lt;/strong&gt; виберіть &lt;strong&gt;New&lt;/strong&gt;, потім &lt;strong&gt;Project&lt;/strong&gt;. (Виберіть створення Windows‑застосунку на C# або VB.NET).&lt;/li&gt;
&lt;li&gt;Якщо у вас є ліцензія, застосуйте її, щоб користуватися повною версією Aspose.Email.&lt;/li&gt;
&lt;li&gt;Імпортуйте DLL Aspose.Email у застосунок, клацнувши правою кнопкою миші &lt;strong&gt;Reference&lt;/strong&gt; у Solution Explorer.&lt;/li&gt;
&lt;li&gt;Розробіть ваш Windows‑застосунок: створіть інтерфейс, що приймає три поля: &lt;strong&gt;From&lt;/strong&gt;, &lt;strong&gt;To&lt;/strong&gt; та &lt;strong&gt;Message&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Двічі клацніть кнопку &lt;strong&gt;Send&lt;/strong&gt; у режимі дизайну та напишіть код у редакторі.&lt;/li&gt;
&lt;li&gt;Створіть екземпляр класу MailMessage і використайте його властивості для формування електронного листа. (Екземпляри класу MailMessage використовуються для створення листів, які передаються SMTP‑серверу для доставки за допомогою класу SmtpClient).&lt;/li&gt;
&lt;li&gt;Створіть екземпляр класу SmtpClient та використайте його властивості для надсилання електронного листа.&lt;/li&gt;
&lt;li&gt;Протестуйте ваш Windows‑застосунок, натиснувши F5.&lt;/li&gt;
&lt;li&gt;Введіть адреси у поля &lt;strong&gt;From&lt;/strong&gt; та &lt;strong&gt;To&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Введіть повідомлення у поле &lt;strong&gt;Message Body&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Клацніть &lt;strong&gt;Send&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Вищенаведені кроки описані нижче: двічі клацніть кнопку &lt;strong&gt;Send&lt;/strong&gt; у режимі дизайну та додайте наведений код:&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;При підключенні до сервера з увімкненим SSL потрібно встановити наступні властивості об’єкта SMTPClient&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;висновок&#34;&gt;&lt;strong&gt;Висновок&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; це дуже потужний компонент, за допомогою якого розробники можуть виконувати майже всі завдання, пов’язані з електронною поштою, такі як надсилання багатопотокових масових листів, використання листа‑злиття, додавання вкладень, вбудовування зображень та звуків у листи, додавання подій iCalendar до листів, отримання листів та багато іншого.&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; реалізує протокол Post Office Protocol v3 (POP3) у .NET framework. Дозволяє .NET‑розробникам додавати функції запиту та отримання листів у свої застосунки без занурення у деталі протоколу та складність роботи з електронною поштою та мережею. Aspose.Email.Pop3 підтримує всі команди, визначені у стандартному протоколі POP3, і надає прості у використанні інтерфейси разом з компактною та інтуїтивною моделлю об’єктів. Це значно знижує типову криву навчання для .NET‑розробників.&lt;/p&gt;
&lt;h3 id=&#34;pop3--основні-можливості&#34;&gt;&lt;strong&gt;Pop3 : Основні можливості&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Як частина Aspose.Email, Aspose.Email.Pop3 розроблений спеціально для .NET і написаний на керованому C# коді. Він дозволяє:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Підключення та вхід до POP3‑серверів.&lt;/li&gt;
&lt;li&gt;Підтримка APOP.&lt;/li&gt;
&lt;li&gt;Запит повідомлень.&lt;/li&gt;
&lt;li&gt;Отримання повідомлень.&lt;/li&gt;
&lt;li&gt;Повна підтримка асинхронного стилю програмування.&lt;/li&gt;
&lt;li&gt;Підтримка SSL.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;сценарії-asposeemailpop3&#34;&gt;&lt;strong&gt;Сценарії Aspose.Email.Pop3&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Pop3 може бути використаний розробниками в різних сценаріях. Нижче наведено кілька прикладів.&lt;/p&gt;
&lt;h3 id=&#34;автоматизація-ділової-електронної-пошти&#34;&gt;&lt;strong&gt;Автоматизація ділової електронної пошти&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Pop3 можна використовувати для запиту поштових скриньок та отримання електронних листів. Він плавно працює з компонентом відправки листів Aspose.Email.Mail. Aspose.Email повністю підтримує автоматизацію електронної пошти. Надсилайте листи за допомогою Aspose.Email.Mail і отримуйте їх за допомогою Aspose.Email.Pop3. Завантажені листи потім можна аналізувати за допомогою Aspose.Email.Mime.&lt;/p&gt;
&lt;h3 id=&#34;поштові-клієнти-1&#34;&gt;&lt;strong&gt;Поштові клієнти&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Pop3 можна використовувати у поштових клієнтах для отримання листів.&lt;/p&gt;
&lt;h3 id=&#34;pop3--зразковий-додаток&#34;&gt;&lt;strong&gt;Pop3 : Зразковий додаток&lt;/strong&gt;&lt;/h3&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;. Цей клас має багато функцій, але ми зосередимося на підключенні до сервера POP3 та отриманні листів. Приклад показує, як створити застосунок у Visual Studio, а також приклади коду, що забезпечують роботу застосунку. Дотримуйтесь наведених нижче кроків, щоб створити зразковий застосунок за допомогою Aspose.Email.Pop3.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Відкрийте Visual Studio.&lt;/li&gt;
&lt;li&gt;У меню &lt;strong&gt;File&lt;/strong&gt; виберіть &lt;strong&gt;New&lt;/strong&gt;, а потім &lt;strong&gt;Project&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Виберіть Windows‑застосунок на C# або VB.NET.&lt;/li&gt;
&lt;li&gt;Імпортуйте Aspose.Email.dll у застосунок, клацнувши правою кнопкою миші &lt;strong&gt;Reference&lt;/strong&gt; у Solution Explorer.&lt;/li&gt;
&lt;li&gt;Тепер спроектуйте Windows‑застосунок, як показано нижче.&lt;/li&gt;
&lt;li&gt;Створіть екземпляр класу Pop3Client.&lt;/li&gt;
&lt;li&gt;Встановіть у цьому екземплярі ім&amp;rsquo;я хоста POP3, логін та пароль.&lt;/li&gt;
&lt;li&gt;Викличте функції Connect() та Login() у Pop3Client.&lt;/li&gt;
&lt;li&gt;Створіть екземпляр MailMessage і отримайте перший лист у вашому обліковому записі, викликавши функцію FetchMessage(). Це переносить перший лист з вашого облікового запису у екземпляр MailMessage.&lt;/li&gt;
&lt;li&gt;Використовуйте властивості From, Subject та HtmlBody екземпляра MailMessage, щоб побачити відправника, тему та тіло повідомлення.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Вищенаведені кроки продемонстровані у наведених нижче прикладах коду. Використовуйте наступний код за будь‑якою кнопкою або у події OnLoad форми.&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;Для серверів з увімкненим SSL потрібно змінити наступні властивості об’єкта 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; реалізує протокол Internet Message Access Protocol (IMAP) у .NET‑framework&amp;rsquo;ах. Aspose.Email.Imap дозволяє .NET‑розробникам швидко додавати можливості IMAP до своїх застосунків, не розбираючись у деталях протоколу. Компонент підтримує отримання та завантаження листів, перевірку статусу листів (новий/прочитаний/непрочитаний) тощо.&lt;/p&gt;
&lt;h3 id=&#34;imap--основні-можливості&#34;&gt;&lt;strong&gt;Imap : Основні можливості&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Imap дозволяє:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Отримати листи.&lt;/li&gt;
&lt;li&gt;Завантажуйте листи.&lt;/li&gt;
&lt;li&gt;Перелічуйте листи у різних папках.&lt;/li&gt;
&lt;li&gt;Перевірте статус листів.&lt;/li&gt;
&lt;li&gt;Працюйте з MailMessage.&lt;/li&gt;
&lt;li&gt;Працюйте з підтримкою SSL.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;використання-asposeemailimap&#34;&gt;&lt;strong&gt;Використання Aspose.Email.Imap&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Imap реалізує протокол Internet Message Access Protocol у .NET‑framework&amp;rsquo;ах. За його допомогою розробники можуть легко запитувати та керувати листами на IMAP‑сервері, а також створювати, видаляти або перейменовувати поштові папки. Використовуючи Aspose.Email.Imap, розробники можуть скористатися можливостями протоколу IMAP за допомогою простих у використанні API. Вони можуть отримувати доступ до листів з будь‑якого ПК, оскільки листи залишаються збереженими на сервері. За допомогою Aspose.Email.Imap розробники можуть створювати веб‑ або десктоп‑застосунки, які отримують і маніпулюють листами з IMAP‑серверів. Aspose реалізував протокол IMAP відповідно до інтернет‑аутентифікації та стандартів RFC. Тому Aspose.Email.Imap — це безпечна та повнофункціональна реалізація протоколу IMAP з легко зрозумілою моделлю об’єктів та інтерфейсами.&lt;/p&gt;
&lt;h3 id=&#34;imap--приклад-застосунку&#34;&gt;&lt;strong&gt;Imap : Приклад застосунку&lt;/strong&gt;&lt;/h3&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;. Ми створюємо невеликий застосунок, який отримує кількість електронних листів у вашому IMAP‑акаунті. Дотримуйтесь наведених нижче кроків, щоб створити зразковий застосунок за допомогою Aspose.Email.Imap.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Відкрийте Visual Studio.&lt;/li&gt;
&lt;li&gt;У меню &lt;strong&gt;File&lt;/strong&gt; виберіть &lt;strong&gt;New&lt;/strong&gt;, а потім &lt;strong&gt;Project&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Виберіть Windows‑застосунок на C# або VB.NET.&lt;/li&gt;
&lt;li&gt;Імпортуйте Aspose.Email.dll у цей застосунок, клацнувши правою кнопкою миші &lt;strong&gt;Reference&lt;/strong&gt; у Solution Explorer.&lt;/li&gt;
&lt;li&gt;Створіть екземпляр ImapClient, передавши назву сервера IMAP, логін та пароль.&lt;/li&gt;
&lt;li&gt;Викличте функцію Connect() у екземплярі ImapClient, щоб підключитися до серва.&lt;/li&gt;
&lt;li&gt;Викличте функцію SelectFolder() у екземплярі ImapClient, щоб обрати папку, в якій потрібно підрахувати кількість повідомлень.&lt;/li&gt;
&lt;li&gt;Тепер викличте властивість CurrentFolder.TotalMessageCount екземпляра ImapClient, щоб отримати кількість листів.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;imap--приклади-коду&#34;&gt;&lt;strong&gt;Imap : Приклади коду&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Нижченаведені приклади коду розміщуються за кнопкою або у події OnLoad форми. Вони показують, як реалізувати вищенаведені кроки за допомогою 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;Для серверів пошти з увімкненим SSL встановіть наступні властивості об’єкта 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; дозволяє розробникам керувати листами на Microsoft Exchange Server. Використовуючи цей компонент, ви можете підключатися, перелікати повідомлення та завантажувати листи з поштової скриньки Exchange Server без необхідності розуміти деталі протоколу. Компонент підтримує перелік повідомлень, надсилання листів, завантаження повідомлень та збереження їх у форматах eml або msg на локальному диску тощо.&lt;/p&gt;
&lt;h3 id=&#34;exchange--основні-можливості&#34;&gt;&lt;strong&gt;Exchange : Основні можливості&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Exchange дозволяє вам:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Підключатися до Microsoft Exchange Server.&lt;/li&gt;
&lt;li&gt;Перераховувати листи у скриньках Exchange.&lt;/li&gt;
&lt;li&gt;Перераховувати електронні листи з різних папок, наприклад Inbox, Sent, Deleted або Drafts.&lt;/li&gt;
&lt;li&gt;Видаляти повідомлення в будь‑якій папці на Exchange Server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;використання-asposeemailexchange&#34;&gt;&lt;strong&gt;Використання Aspose.Email.Exchange&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;За допомогою Aspose.Email.Exchange розробники можуть отримати доступ до поштових скриньок Exchange Server з їхніх .NET застосунків. Він надає простий у використанні API для керування електронною поштою на серверах Exchange. Розробники можуть створювати консольні, настільні чи веб-застосунки, які керують електронною поштою у скриньках Exchange.&lt;/p&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;. Ми створюємо простий десктопний застосунок, який підключається до поштової скриньки Exchange Server, отримує список повідомлень у папці Inbox та відображає їх у формі Windows.&lt;/p&gt;
&lt;h3 id=&#34;exchange--кроки-прикладу-застосунку&#34;&gt;&lt;strong&gt;Exchange : Кроки прикладу застосунку&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Відкрийте Microsoft Visual Studio.&lt;/li&gt;
&lt;li&gt;Створіть новий проєкт. (Виберіть мову за вашим вибором C# або VB.NET)&lt;/li&gt;
&lt;li&gt;Додайте посилання на Aspose.Email.dll у ваш проект, клацнувши правою кнопкою миші по проєкту та вибравши &lt;strong&gt;Add Reference&lt;/strong&gt; у меню.&lt;/li&gt;
&lt;li&gt;Створіть форму Windows, схожу на наведену нижче:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Щоб успішно запустити застосунок, потрібні правильні облікові дані для доступу до Exchange Server. Тут ми отримуємо інформацію про облікові дані — URI Exchange Server, ім&amp;rsquo;я користувача, пароль та домен — з форми Windows. Це дуже проста демонстрація, тому властивості повідомлень — тема, відправник і отримувач — просто відображаються у listbox.&lt;/p&gt;
&lt;h3 id=&#34;exchange--приклади-коду&#34;&gt;&lt;strong&gt;Exchange : Приклади коду&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Додайте наступний код у обробник події click кнопки &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--вивід&#34;&gt;&lt;strong&gt;Exchange : Вивід&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Цей скриншот показує повідомлення, отримані з Exchange Server. Метод ListMessages() повертає базову інформацію, таку як тема, від, до та ID повідомлення. Щоб отримати повне повідомлення, викличте метод ExchangeClient.SaveMessage(). (Використання ExchangeClient.SaveMessage() описано у статті &lt;a href=&#34;/email/net/working-with-exchange-mailbox-and-messages/#saving-messages&#34;&gt;Збереження повідомлень з поштової скриньки Exchange Server у форматах EML та 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) — це інтернет-стандарт, який розширює формат електронної пошти, щоб підтримувати текст у наборі символів, відмінному від US-ASCII, не‑текстові вкладення, багаточастинні тіла повідомлень та заголовкову інформацію у не‑ASCII наборах символів. Aspose.Email.Mime реалізує протокол MIME у .NET‑фреймворках. Він діє як транслятор, оскільки може читати електронну пошту з файлу (.eml тощо) або з пам’яті (рядок). Потім він розбирає файл або рядок електронної пошти на змістовні частини. Якщо ви хочете обробляти файл електронної пошти без занурення у деталі протоколу MIME, наприклад, щоб витягнути вкладення, використовуйте Aspose.Email.Mime.&lt;/p&gt;
&lt;h3 id=&#34;основні-функції&#34;&gt;&lt;strong&gt;Основні функції&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aspose.Email.Mime відмінно працює з Aspose.Email.Pop3 та 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; отримує повідомлення електронної пошти з вказаної скриньки.&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; надсилає повідомлення електронної пошти у вказану скриньку.&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; є зв’язком між двома вищезгаданими і аналізує повідомлення електронної пошти.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Скасування запитів на зустріч за допомогою календаря</title>
      <link>/email/uk/net/cancelling-meeting-requests-with-calendar/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/cancelling-meeting-requests-with-calendar/</guid>
      <description>
        
        
        &lt;p&gt;Ви можете надіслати запит на скасування зустрічі за допомогою Aspose.Email, використовуючи об’єкт класу Appointment. Потрібна вихідна інформація про запит на зустріч, щоб скасувати його. У прикладі в цій статті спочатку надсилається запит на зустріч, інформація зберігається в базі даних, а потім запит скасовується на підставі ідентифікатора повідомлення.&lt;/p&gt;
&lt;h2 id=&#34;надсилання-запитів-на-зустріч&#34;&gt;&lt;strong&gt;Надсилання запитів на зустріч&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Перш ніж ми зможемо &lt;a href=&#34;/email/uk/net/cancelling-meeting-requests-with-calendar/#cancelling-meeting-request&#34;&gt;скасувати запити на зустрічі&lt;/a&gt;, нам потрібно надіслати декілька:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Спочатку створіть екземпляр типу SmtpClient для надсилання повідомлення.&lt;/li&gt;
&lt;li&gt;Для збору інформації про учасників ми створили таблицю даних, щоб користувачі могли вводити імена та адреси людей, яким слід надіслати запрошення.&lt;/li&gt;
&lt;li&gt;Після виконання циклу for-each по колекції Rows у таблиці, збережіть всю інформацію про учасників у колекції MailAddressCollection.&lt;/li&gt;
&lt;li&gt;Створіть екземпляр класу MailMessage та необхідні властивості, такі як From, To і Subject.&lt;/li&gt;
&lt;li&gt;Створіть екземпляр типу Appointment і вкажіть місце, час початку, час закінчення, організаторів та учасників.&lt;/li&gt;
&lt;li&gt;Збережіть всю інформацію у базі даних SQL Server. Робота з БД виконується у методі SaveIntoDB.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Наступний фрагмент коду показує, як надсилати запити на зустріч.&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;скасування-запиту-на-зустріч&#34;&gt;&lt;strong&gt;Скасування запиту на зустріч&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Щоб скасувати запит на зустріч, спочатку отримайте ID повідомлення електронної пошти. Оскільки ми зберегли цю інформацію у базі даних для цього прикладу, її можна легко отримати знову. Ми використали таблицю для завантаження всіх надісланих повідомлень. Скріншот форми наведено нижче:&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;Вибір рядка, для якого слід надіслати запит на скасування.&lt;/li&gt;
&lt;li&gt;Натисніть &lt;strong&gt;Send Cancel Request&lt;/strong&gt;, щоб відправити запит.&lt;/li&gt;
&lt;li&gt;Код отримує ID з обраного рядка таблиці та запитує базу даних, щоб отримати інформацію про учасника, повідомлення та календар.&lt;/li&gt;
&lt;li&gt;Створіть екземпляри класу Calendar та &lt;a href=&#34;https://apireference.aspose.com/email/net/aspose.email/mailmessage&#34;&gt;MailMessage&lt;/a&gt;
класи, які використовують інформацію, отриману з бази даних.&lt;/li&gt;
&lt;li&gt;Використайте метод Appointment.CancelAppointment() для надсилання запиту на скасування.&lt;/li&gt;
&lt;li&gt;Надішліть лист за допомогою &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;Наступний фрагмент коду показує, як скасувати запит на зустріч.&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: Перша програма з Aspose.Email.Outlook</title>
      <link>/email/uk/net/first-application-with-aspose-email-outlook/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/first-application-with-aspose-email-outlook/</guid>
      <description>
        
        
        &lt;p&gt;У цьому розділі демонстровано, як використовувати &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email.mapi/&#34;&gt;Aspose.Email.Mapi&lt;/a&gt;. Ми створюємо невеликий застосунок, який завантажує файл Outlook‑повідомлення (TestMessage.msg) і відображає тему, адреси відправника та одержувача, а також вміст тіла у формі Windows. Дотримуйтесь цих кроків, щоб створити свою першу програму з використанням Aspose.Email.Outlook.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;У Visual Studio у меню &lt;strong&gt;File&lt;/strong&gt; виберіть &lt;strong&gt;New&lt;/strong&gt;, потім &lt;strong&gt;Project&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Оберіть створення Windows‑застосунку на C# або VB.NET.&lt;/li&gt;
&lt;li&gt;Імпортуйте бібліотеку Aspose.Email DLL у застосунок, клацнувши правою кнопкою миші &lt;strong&gt;Reference&lt;/strong&gt; у вікні Solution Explorer. Це буде Windows‑застосунок, який лише показуватиме інформацію, що міститься у файлі повідомлення.&lt;/li&gt;
&lt;li&gt;Створіть екземпляр &lt;a href=&#34;http://www.aspose.com/api/net/email/aspose.email.mapi/MapiMessage&#34;&gt;MapiMessage&lt;/a&gt; клас, задаючи шлях до файлу листа.&lt;/li&gt;
&lt;li&gt;Використайте публічні властивості для відображення теми, відправника, одержувача та вмісту у елементах Windows.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Реалізація наведених вище кроків продемонстрована нижче у наступному фрагменті коду. Використайте цей код за кнопкою &lt;strong&gt;Load Msg File&lt;/strong&gt; або у події OnLoad форми.&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: Пул з&#39;єднань реформований</title>
      <link>/email/uk/net/connection-pool-refactored/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/email/uk/net/connection-pool-refactored/</guid>
      <description>
        
        
        &lt;p&gt;З випуском Aspose.Email 19.3 пул з&amp;rsquo;єднань був реформований. Нові &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient&#34;&gt;EmailClient&lt;/a&gt; введено клас, який зрештою замінить &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/credentialsbyhostclient&#34;&gt;CredentialsByHostClient&lt;/a&gt; клас. The &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient&#34;&gt;EmailClient&lt;/a&gt; клас забезпечує &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/properties/connectionasgmtmode&#34;&gt;ConnectionAsgmtMode&lt;/a&gt; властивості, яка визначає режим розподілу з&amp;rsquo;єднань у багатопотоковому середовищі. &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/properties/connectionasgmtmode&#34;&gt;EmailClient.ConnectionAsgmtMode&lt;/a&gt; встановлюється за допомогою &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/connectionasgmttype&#34;&gt;ConnectionAsgmtType&lt;/a&gt; перелічуваний.&lt;/p&gt;
&lt;h2 id=&#34;типи-з&#34;&gt;&lt;strong&gt;Типи з&amp;rsquo;єднань&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Існують наступні три типи з&amp;rsquo;єднань:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Основне з&amp;rsquo;єднання: це з&amp;rsquo;єднання створюється та знищується разом з поштовим клієнтом. Його не можна створювати або знищувати вручну.&lt;/li&gt;
&lt;li&gt;З&amp;rsquo;єднання за замовчуванням: користувач може створювати з&amp;rsquo;єднання за замовчуванням для потоків за допомогою &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt; метод. Якщо існує з&amp;rsquo;єднання за замовчуванням, всі методи клієнта, виконані в потоці, будуть неявно використовувати це з&amp;rsquo;єднання. На один потік може існувати лише одне з&amp;rsquo;єднання за замовчуванням. Воно може бути створене вручну або автоматично. Це залежить від властивості EmailClient.ConnectionAsgmtMode. Ці з&amp;rsquo;єднання можна створити вручну за допомогою &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; метод. Якщо з&amp;rsquo;єднання за замовчуванням не використовується (залежно від режиму розподілу з&amp;rsquo;єднань), замість нього неявно використовується основне з&amp;rsquo;єднання.&lt;/li&gt;
&lt;li&gt;Незалежні з&amp;rsquo;єднання: це з&amp;rsquo;єднання, які не прив&amp;rsquo;язані до потоків. Їх можна створювати вручну і їх необхідно явно передавати як параметр методу. Ці з&amp;rsquo;єднання можна створити вручну за допомогою &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection&#34;&gt;EmailClient.CreateConnection()&lt;/a&gt; метод або &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; метод.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;типи-розподілу-з&#34;&gt;&lt;strong&gt;Типи розподілу з&amp;rsquo;єднань&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Щоб налаштувати &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/properties/connectionasgmtmode&#34;&gt;EmailClient.ConnectionAsgmtMode&lt;/a&gt; властивості, &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/connectionasgmttype&#34;&gt;ConnectionAsgmtType&lt;/a&gt; перелічуваний тип використовується. Типи розподілу, надані &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/connectionasgmttype&#34;&gt;ConnectionAsgmtType&lt;/a&gt; перераховані нижче.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ConnectionAsgmtType.UseMainOrDefault Цей режим використовується за замовчуванням у клієнтах електронної пошти. Клієнт електронної пошти використовує основне з’єднання для всіх операцій з кількох потоків, якщо з’єднання за замовчуванням не створене, або якщо з’єднання не передано явно як параметр методу. Основне з’єднання — це з’єднання, створене одночасно з клієнтом електронної пошти. Користувач може створювати з’єднання за замовчуванням для потоків з &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt; метод. Якщо для потоку створено з&amp;rsquo;єднання за замовчуванням, воно використовується неявно для всіх методів клієнта електронної пошти, які викликаються в цьому потоці. Якщо з&amp;rsquo;єднання за замовчуванням для потоку не створено, використовується основне з&amp;rsquo;єднання для всіх методів клієнта, які викликаються в цьому потоці. Користувач також може створювати з&amp;rsquo;єднання, не прив&amp;rsquo;язані до потоків (не за замовчуванням), за допомогою &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt; метод. Якщо користувач хоче використовувати інші з&amp;rsquo;єднання (не основне і не за замовчуванням), він має передати це з&amp;rsquo;єднання явно як параметр методу, який він бажає використати. Користувач може додатково створювати будь-яку кількість з&amp;rsquo;єднань. З&amp;rsquo;єднання за замовчуванням може бути лише одне на потік. Зверніть увагу, що з&amp;rsquo;єднання за замовчуванням працюють коректно, якщо користувач використовує об’єкти Thread для багатозадачності. Якщо користувач використовує ConnectionPool або об’єкти Task для багатозадачності, цей режим може призвести до неправильного поводження програми. Щоб уникнути цієї проблеми, користувач повинен вручну звільнити з&amp;rsquo;єднання за замовчуванням (якщо він його використовує) в кінці виконання коду.&lt;/li&gt;
&lt;li&gt;ConnectionAsgmtType.UseMain Клієнт електронної пошти використовує основне з’єднання для всіх операцій з кількох потоків. Основне з’єднання — це з’єднання, створене одночасно з клієнтом електронної пошти. Користувач не може створювати з’єднання за замовчуванням. Користувач може створювати з’єднання, не пов’язані з потоками (не за замовчуванням), за допомогою &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt; метод. Якщо користувач хоче використовувати інші з&amp;rsquo;єднання (не основне і не за замовчуванням), він повинен передати це з&amp;rsquo;єднання явно як параметр методу, який він збирається використовувати. &lt;/li&gt;
&lt;li&gt;ConnectionAsgmtType.UseDefault Клієнт електронної пошти неявно використовує лише з’єднання за замовчуванням для всіх операцій з кількох потоків. Основне з’єднання в цьому режимі не використовується. Якщо з’єднання за замовчуванням не було створене для певного потоку (перший виклик методу клієнта електронної пошти), клієнт створює з’єднання за замовчуванням неявно для потоку перед виконанням першої операції. Користувач не може створювати з’єднання за замовчуванням для потоків з &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt;метод, оскільки вони створюються автоматично. Коли для потоку створюється з&amp;rsquo;єднання за замовчуванням, воно використовується неявно для всіх методів клієнта електронної пошти, які викликаються в цьому потоці. Користувач також може створювати з&amp;rsquo;єднання, які не прив&amp;rsquo;язані до потоків (не з&amp;rsquo;єднання за замовчуванням), за допомогою &lt;a href=&#34;https://apireference.aspose.com/net/email/aspose.email.clients/emailclient/methods/createconnection/index&#34;&gt;CreateConnection&lt;/a&gt;метод. Якщо користувач хоче використовувати інші з&amp;rsquo;єднання (не основне і не за замовчуванням), він повинен передати це з&amp;rsquo;єднання явно як параметр методу, який він збирається використовувати. Користувач може додатково створювати будь-яку кількість з&amp;rsquo;єднань. На один потік може бути використане лише одне з&amp;rsquo;єднання за замовчуванням. Зверніть увагу, що з&amp;rsquo;єднання за замовчуванням працюють коректно, якщо користувач використовує об’єкти Thread для багатозадачності. Якщо користувач використовує ConnectionPool або об’єкти Task для багатозадачності, цей режим може призвести до неправильного поводження програми. Щоб уникнути цієї проблеми, користувач повинен вручну звільнити з&amp;rsquo;єднання за замовчуванням в кінці виконання коду.&lt;/li&gt;
&lt;/ul&gt;

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