Рисунок 28. Файл «gmail.txt» в письме Gmail почты
Автодокументация
Код исходных файлов снабжен документирующими комментариями.
Генерация документации с помощью Doxygen приведена на рис. 29-30.
Рисунок 29. Генерация документации
16
Рисунок 30. Генерация документации завершена
«Некоторые изменения в doc.cfg» описаны далее:
PROJECT_NAME = "SMTP Library & Example"
OUTPUT_LANGUAGE = Russian
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = YES
EXTRACT_STATIC = YES
RECURSIVE = YES
INLINE_SOURCES = YES
PREDEFINED = SMTP_OPENSSL
В результате чего имеем документацию (рис. 31-35).
Рисунок 31. Файлы в документации
17
Рисунок 32. Файл «smtp_client.c» в документации
Рисунок 33. Одна из функций в документации
18
Рисунок 34. Одно из перечислений в документации
Рисунок 35. Макросы в документации
ЗАКЛЮЧЕНИЕ
В результате выполнения лабораторной работы мы разработали приложение, позволяющее отправлять электронные письма с вложенными файлами, используя протокол SMTP.
19
ПРИЛОЖЕНИЯ
Далее перечислены приложения в следующем порядке:
1.Файл SMTP-библиотеки «smtp_lib/smtp_lib.h» (табл. 2).
2.Файл SMTP-библиотеки «smtp_lib/smtp_lib.c» (табл. 3).
3.Сборочный файл SMTP-библиотеки «smtp_lib/WinMakefile» /
«smtp_lib/LinuxMakefile» (табл. 4).
4.Файл SMTP-клиента «smtp_client.c» (табл. 5).
5.Общий сборочный файл «WinMakefile» / «LinuxMakefile» (табл. 6).
Таблица 2. Файл SMTP-библиотеки «smtp_lib/smtp_lib.h»
smtp_lib/smtp_lib.h
/** @file
*@brief SMTP client library
*@author Kovalenko Leonid && James Humphrey
*@version 1.00
*
*Клиентская библиотека SMTP.
*Позволяет пользователю отправлять электронные письма на сервер SMTP.
*/
#ifndef SMTP_LIB_H #define SMTP_LIB_H
#include <stddef.h> #include <stdio.h> #include <sys/types.h>
#ifndef SIZE_MAX
///Максимальное значение числа типа size_t.
#define SIZE_MAX ((size_t)(-1)) #endif // SIZE_MAX
///Основная структура данных, которая содержит контекст клиента SMTP.
///Определение находится в C-файле.
struct smtp;
/// Коды состояния вызова любой из функций библиотеки SMTP. enum smtp_status_code
{
///Операция успешно завершена.
SMTP_STATUS_OK = 0,
///Не удалось выделить память.
SMTP_STATUS_NOMEM = 1,
///Не удалось подключиться к почтовому серверу.
SMTP_STATUS_CONNECT = 2,
///Не удалось установить соединение или согласовать TLS-соединение с сервером.
SMTP_STATUS_HANDSHAKE = 3,
///Не удалось пройти аутентификацию с указанными учетными данными.
SMTP_STATUS_AUTH = 4,
///Не удалось отправить байты на сервер.
SMTP_STATUS_SEND = 5,
///Не удалось получить байты от сервера.
SMTP_STATUS_RECV = 6,
///Не удалось правильно закрыть соединение.
SMTP_STATUS_CLOSE = 7,
///SMTP-сервер отправил неожиданный код состояния.
SMTP_STATUS_SERVER_RESPONSE = 8,
///Неверный параметр.
SMTP_STATUS_PARAM = 9,
///Не удалось открыть или прочитать локальный файл.
SMTP_STATUS_FILE = 10,
///Не удалось получить местную дату и время.
SMTP_STATUS_DATE = 11,
/** Указывает последний код состояния в перечислении.
*Используется для проверки границ: status_code >= SMTP_STATUS__LAST.
*Не является кодом статуса. */
SMTP_STATUS__LAST
};
/// Типы адресов.
20