Материал: ММиВА. Лабораторная работа 4

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рисунок 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