Среда, 24.04.2024, 08:03 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
delphicode » Delphi » Вопросы по Delphi » как корректно завершить работу с smtp
как корректно завершить работу с smtp
vvova15Дата: Четверг, 11.08.2011, 08:55 | Сообщение # 1
Участник
Зарегистрирован: 24.04.2010
Группа: Пользователи
Сообщений: 83
Статус: Offline
понадобилось написать mail спамилку посмотрел за почтовой мышью через socketsniff(wireshark не воспринимает флэшмодем от мтс как сетевое устройство, но сейчас не об этом), и попробовал сделать так же. не заработало.немного почитав описание протокола и авторизации на smtp я поправил код и таки реализовал отправку писем с мэйл.ру почтовика. интересует вопрос: как корректно отключиться от сервера?.
вот код отправки и лог
Code

function GetIP:string;
var
    p: PHostEnt;
    name: array[0..MAX_PATH-1] of CHAR;
    w:wsadata;
begin
   wsastartup($101,w);
    ZeroMemory(@name, MAX_PATH);
    gethostname(name, MAX_PATH);
    P := gethostbyname(name);
    if p <> NIL then
      Result := inet_ntoa(pinaddr(p.h_addr_list^)^)
    else
      Result := '127.0.0.1';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
tcpclient1.Connect;
memo1.Lines.Add(tcpclient1.Receiveln());
tcpclient1.Sendln('HELO ['+getip+']');
memo1.Lines.Add('HELO ['+getip+']');
memo1.Lines.Add(tcpclient1.Receiveln());
tcpclient1.Sendln('AUTH LOGIN');
memo1.Lines.Add('AUTH LOGIN');
memo1.Lines.Add(tcpclient1.Receiveln());
tcpclient1.Sendln('di52b3ZhMTU=');
memo1.Lines.Add('di52b3ZhMTU=');
memo1.Lines.Add(tcpclient1.Receiveln());
tcpclient1.Sendln('мой попроль в базе64');
memo1.Lines.Add('опять мой пороль в базе64');
memo1.Lines.Add(tcpclient1.Receiveln());
tcpclient1.Sendln('MAIL FROM:<v.vova15@mail.ru>');
memo1.Lines.Add('MAIL FROM:<v.vova15@mail.ru>');
memo1.Lines.Add(tcpclient1.Receiveln());
tcpclient1.Sendln('RCPT TO:<codemaster@xakep.ru>');
memo1.Lines.Add('RCPT TO:<codemaster@xakep.ru>');

memo1.Lines.Add(tcpclient1.Receiveln());
tcpclient1.Sendln('DATA');
memo1.Lines.Add('DATA');
memo1.Lines.Add(tcpclient1.Receiveln());
tcpclient1.Sendln('Subject: Ýòî òåìà ïèñüìà'#13#10+
'To: codemaster@xakep.ru '#13#10+
'X-Mailer: X-mailer'#13#10+
'Îòäåëèëè çàãîëîâêè ïóñòîé ñòðîêîé, è òåïåðü ïèøåì òåêñò ïèñüìà...'#13#10 +
'À ÷òîáû çàêîí÷èòü ââîä ïèñüìà, íóæíî íà îòäåëüíîé ñòðîêå ââåñòè òî÷êó.'#13#10+
'.',#13#10'.');
memo1.Lines.Add('Subject: Ýòî òåìà ïèñüìà'#13#10+
'To: codemaster@xakep.ru '#13#10+
'X-Mailer: X-mailer'#13#10+
'Îòäåëèëè çàãîëîâêè ïóñòîé ñòðîêîé, è òåïåðü ïèøåì òåêñò ïèñüìà...'#13#10+
'À ÷òîáû çàêîí÷èòü ââîä ïèñüìà, íóæíî íà îòäåëüíîé ñòðîêå ââåñòè òî÷êó.'#13#10+
'.');
memo1.Lines.Add(tcpclient1.Receiveln());
end;



лог работы:



ICQ 185-398


Сообщение отредактировал dolphin - Четверг, 11.08.2011, 14:18
 
gravitasДата: Четверг, 11.08.2011, 12:07 | Сообщение # 2
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Ты не знаешь как отключить сокет, или не знаешь, как разлогиниться на сервере?

TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
vvova15Дата: Четверг, 11.08.2011, 16:44 | Сообщение # 3
Участник
Зарегистрирован: 24.04.2010
Группа: Пользователи
Сообщений: 83
Статус: Offline
уже все, решил проблему:
попробывал вместо helo посылать ehlo, тогда сервер знает команды rset и quit.
так же выводит поддерживаемые типы авторизации. осталось сделать парсинг поддерживаемых типов авторизации и будет работать практически везде. только на гымэйл не будет - там через ssl. на яндексе и мэйлру через plain метод пашет.
уже перенес код на сишарп и буду делать спамилку



ICQ 185-398


Сообщение отредактировал vvova15 - Четверг, 11.08.2011, 16:46
 
delphicode » Delphi » Вопросы по Delphi » как корректно завершить работу с smtp
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz