Файл: Разработка клиентского приложения передачи электронной почты с применением протоколов SMTP и TCP на платформе WIN32.pdf
Добавлен: 28.06.2023
Просмотров: 83
Скачиваний: 2
Контрольный пример реализации проекта
Для проверки правильности работы программы отправляется тестовое письмо – заполняется поле «Email», «Тема» и «Сообщение».
Рисунок 4. Отправка тестового письма
Результатом нажатия кнопки «Отправить» будет отправка электронного письма адресату (в данном случае на свою же почту).
Рисунок 5. Получение письма
Заключение
Необходимость использования электронной почты очевидна: удобство, быстрота, дешевизна и возможность передавать информацию любого объема в любую точку мира. Современные почтовые программы превратились из простого средства коммуникации в приложения для повышения производительности труда, которые помогают и на работе, и дома.
SMTP — требующий соединения текстовый протокол, по которому отправитель сообщения связывается с получателем посредством выдачи командных строк и получения необходимых данных через надёжный канал, в роли которого обычно выступает TCP-соединение.
Результатом выполнения курсовой работы на тему «Разработка клиентского приложения передачи электронной почты с применением протоколов SMTP и TCP на платформе WIN32» стала программа, содержащая в себе методы реализации протоколов электронной почты SMTP и TCP. Программа представляет собой удобный и понятный пользовательский интерфейс.
Используемые источники
- Национальная электронная библиотека им. Н. Э. Баумана: https://ru.bmstu.wiki
- XServer.ru онлайн библиотека: http://www.xserver.ru/
- Википедия: https://ru.wikipedia.org/
Приложение 1. Исходный код программы
<?php
$config['smtp_username'] = 'imp31h@gmail.com'; //Адрес своего почтового ящика.
$config['smtp_port'] = '465'; // Порт работы.
$config['smtp_host'] = 'ssl://smtp.gmail.com'; //сервер для отправки почты
$config['smtp_password'] = '***********'; //Измените пароль
$config['smtp_debug'] = true; //Если Вы не хотите видеть сообщения ошибок, укажите false вместо true
$config['smtp_charset'] = 'utf-8'; //кодировка сообщений. (windows-1251 или utf-8, итд)
$config['smtp_from'] = 'МегаСервис'; //Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого"
$sendInfo = null;
function smtpmail($to='', $mail_to, $subject, $message, $headers='') {
global $config;
$SEND = "Date: ".date("D, d M Y H:i:s") . " UT\r\n";
$SEND .= 'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
if ($headers) $SEND .= $headers."\r\n\r\n";
else
{
$SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
$SEND .= "To: \"=?".$config['smtp_charset']."?B?".base64_encode($to)."=?=\" <$mail_to>\r\n";
$SEND .= "MIME-Version: 1.0\r\n";
$SEND .= "Content-Type: text/html; charset=\"".$config['smtp_charset']."\"\r\n";
$SEND .= "Content-Transfer-Encoding: 8bit\r\n";
$SEND .= "From: \"=?".$config['smtp_charset']."?B?".base64_encode($config['smtp_from'])."=?=\" <".$config['smtp_username'].">\r\n";
$SEND .= "X-Priority: 3\r\n\r\n";
}
$SEND .= $message."\r\n";
if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
if ($config['smtp_debug']) echo $errno."<br>".$errstr;
return false;
}
if (!server_parse($socket, "220", __LINE__)) return false;
fputs($socket, "HELO " . $config['smtp_host'] . "\r\n");
if (!server_parse($socket, "250", __LINE__)) {
if ($config['smtp_debug']) echo '<p>Не могу отправить HELO!</p>';
fclose($socket);
return false;
}
fputs($socket, "AUTH LOGIN\r\n");
if (!server_parse($socket, "334", __LINE__)) {
if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизаци.</p>';
fclose($socket);
return false;
}
fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
if (!server_parse($socket, "334", __LINE__)) {
if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
fclose($socket);
return false;
}
fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
if (!server_parse($socket, "235", __LINE__)) {
if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
fclose($socket);
return false;
}
fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
if (!server_parse($socket, "250", __LINE__)) {
if ($config['smtp_debug']) echo '<p>Не могу отправить комманду MAIL FROM: </p>';
fclose($socket);
return false;
}
fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");
if (!server_parse($socket, "250", __LINE__)) {
if ($config['smtp_debug']) echo '<p>Не могу отправить комманду RCPT TO: </p>';
fclose($socket);
return false;
}
fputs($socket, "DATA\r\n");
if (!server_parse($socket, "354", __LINE__)) {
if ($config['smtp_debug']) echo '<p>Не могу отправить комманду DATA</p>';
fclose($socket);
return false;
}
fputs($socket, $SEND."\r\n.\r\n");
if (!server_parse($socket, "250", __LINE__)) {
if ($config['smtp_debug']) echo '<p>Не смог отправить тело письма. Письмо не было отправленно!</p>';
fclose($socket);
return false;
}
fputs($socket, "QUIT\r\n");
fclose($socket);
return TRUE;
if(isset($_POST['submit'])) {
$mail_to = $_POST['mailTo'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$from = "email@example.com"; // тут можно указать почту свою.
$headers = "From:" . $from;
$to = "toto";
smtpmail($to, $mail_to, $subject, $message);
}
}
function server_parse($socket, $response, $line = __LINE__) {
global $config;
while (@substr($server_response, 3, 1) != ' ') {
if (!($server_response = fgets($socket, 256))) {
if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
return false;
}
}
if (!(substr($server_response, 0, 3) == $response)) {
if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
return false;
}
return true;
}
?>
<!DOCTYPE html>