Главная страница
Программирование
-->Статья 1  
Статья 2  
Статья 3  
Статья 4  
WinGate
eMule
Востановление
Программы
Спонсоры
Друзья
 
 



Отправка почты

1. Отправка почты.
2. Получение списка процессов
3. Работа с сокетами в смысле клиент - сервер
4. Скрипт на Perl для выкачивания файлов (для Avaga.ru и не только)

Ну и по мере рождения новых идей...


Отправка почты.

Все вроде как просто в Delphi введено ряд компонент которые значительно облегчают работу с и-нетом. Один из таких компанентов является NMSMTP, преднозанченный для отправки почты. Прежде всего определимся что отсылать в нашем примере будем только текст, на самом деле можно присоеденять файлы, это не заключает в себе ни какой сложности, посколько как мне кажется главное в нашем деле понять суть, а дальше само пойдет... :)

Расмотрим основные методы и свойства данного компонента:

Свойства и методы необходимые для работы с сервером
Название Тип Описание
Host String адрес smtp сервера
UserID String Пользователь smtp сервера
Connect procedureПроизводит подключение к серверу
DisconnectprocedureПроизводит отсоединение от сервера
Connectedboolean Отображает состояние login
True- клиент подключен к серверу
False- соответствено отключен от сервера
SendMailprocedureОтправка сообщения
PostMessageTMessageСообщение (Письмо по нашему)


Свойства и методы необходимые для работы с PostMessage
Название Тип Описание
FromAddressstringe-mail отправителя
FromName stringОт кого письмецо имя владельца
ToAddressstringe-mail получателя
ToCarbonCopystringe-mail кому пошлется копия данного сообщения
ToBlindCarbonCopystringe-mail кому пошлется копия копии данного сообщения
SubjectstringТема письма
Body.TextTStringТекст сообщения
Attachments.TextstringПути и имена прикрепленных файлов
LocalProgramstringИмя программы с помощью которой было отправленно
данное письмо
DatestringДата отправления
ReplyTostringe-mail адрес на который придет ответ


Вот вродебы и все теперь можно приступать к написанию программы...

1.Прожде всего создаем новый проект
2.Потом помещаем на форму Form1:
Memo1:TMemo - для сообщения;
Edit1:TEdit - для адреса отправителя;
Edit2:TEdit - для имени отправителя;
Edit3:TEdit - для адреса получателя;
Edit4:TEdit - для Темы письма;
Edit5:TEdit - для имя пользователя smtp сервера;
Edit6:TEdit - для адреса smtp сервера;
Button1:TButton - Для отправки сообщения;

Процедурки:

{Данная вызывается при показе формы}
procedure TForm1.FormShow(Sender: TObject);
var
 str    :PChar;
 i      :DWORD;
begin
 i:=$100;
 GetMem(str,i+1);
 GetUserName(str,i); {Получаем имя пользователя компьютера}
 Edit5.Text:=str;
 FreeMem(str);
end;

{Данная вызывается при нажатиии кнопки Button1}
procedure TForm1.Button1Click(Sender: TObject);
begin
{Если мы подключены к серверу то разорвем соединение}
 if NMSMTP1.Connected then NMSMTP1.Disconnect;

{Заполняем все необходимые поля для подключения к серверу}
  NMSMTP1.UserID := Edit5.Text;
  NMSMTP1.Host := Edit4.Text;
{Конектимся к серверу}
  NMSMTP1.Connect;
{Если конект удачный то заполняем данные для сообщения}
  if NMSMTP1.Connected then
  begin
    NMSMTP1.PostMessage.FromAddress := Edit1.Text;
    NMSMTP1.PostMessage.FromName := Edit2.Text;
    NMSMTP1.PostMessage.ToAddress.Text := Edit3.Text;
    NMSMTP1.PostMessage.Subject := Edit4.Text;
    NMSMTP1.PostMessage.ToCarbonCopy.Text := '';
    NMSMTP1.PostMessage.ToBlindCarbonCopy.Text := '';
    NMSMTP1.PostMessage.Body.Text := Memo1.Text;

{А сдесь можно указать имена приатаченых файлов
    для этого нужно например
    NMSMTP1.PostMessage.Attachments.Text:='c:\autoexec.bat';}
    NMSMTP1.PostMessage.Attachments.Text := '';
    NMSMTP1.PostMessage.LocalProgram := '';
    NMSMTP1.PostMessage.Date:='';
    NMSMTP1.PostMessage.ReplyTo:='';
{Отсылаем письмо}
    NMSMTP1.SendMail;
{Отсоеденяемся}
    NMSMTP1.Disconnect;
{Выдаем сообщение о том что все прошло отлично}
    ShowMessage('Message send ok!');
  end
  else
{Выдаем сообщение о том что мы не приконектились к серверу}
    ShowMessage('You need to connect before you can send your message');
end;
Скачать пример программы можно сдесь.

Вот и Все!


Ну на сегодня хватит дальше продолжу чуть позже...