Пол дня курил RFC по SMTP, так и не смог правильно составить тело. Покажите, где ошибка: Code: procedure Sends(str : String); var i: integer; begin for i:=1 to Length(str) do if send(sock,str[i],1,0)=SOCKET_ERROR then exit; end; //--------------------- var MailFrom ='[email protected]'; MailTo = '[email protected]'; CRLF = #13+#10; Body = 'My-Mail-Body'; MySmtp = '127.0.0.1'; subject = 'My-Mail-Subj'; procedure SendMail; begin WSAStartUp($0101, wsadata); sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); Addr.sin_family:=PF_Inet; Addr.sin_port:=HtoNS(25); Addr.sin_addr.S_addr:=Inet_Addr(PChar(MySmtp)); FillChar(Addr.sin_zero,SizeOf(Addr.sin_zero),0); Connect(sock,Addr,sizeof(Addr)); Sends('EHLO s0l.name'+CRLF); Sends('AUTH LOGIN'+CRLF); Sends('bG9naW4='+CRLF); Sends('cGFzc3dvcmQ='+CRLF); Sends('MAIL FROM:'+MailFrom+CRLF); Sends('RCPT TO:'+MailTo+CRLF); Sends('DATA'+CRLF); Sends('To:'+MailTo+CRLF); Sends('Subject:'+Title+CRLF); Sends('From:'+'<'+MailFrom+'>'+CRLF Sends(Body+CRLF); Shutdown(sock, SD_Both); CloseSocket(sock); WSACleanup; - Такс. Теперь работает, но я непонимаю, почему письма идут без авторизации, т.е. можно убрать Code: Sends('AUTH LOGIN'+CRLF); Sends('bG9naW4='+CRLF); Sends('cGFzc3dvcmQ='+CRLF и все-равно доходит
технически - сделано грамотно и без ошибок. только зачем цикл - vari: integer; begin for i:=1 to Length(str) do ... можно и напрямую мессагу запилить. ладно, не столь и важно. а вот: Sends('bG9naW4='+CRLF); Sends('cGFzc3dvcmQ='+CRLF); уже другое. имхо, это генерируется random и для каждой пост-мессаги должны быть уникальными.
Ты ошибаешься, это всего-навсего данные для авторизации в BASE64, которые нужно передавать после AUTH LOGIN Я не понимаю почему письма уходят без авторизации. Эти 2 строки можно не передавать и все-равно все доставляется...
OK, это диалог ассемблитца с дельфистом )) для проверки отправленных/полученных пакетов используется GPGrelay - sites.inka.de/tesla/gpgrelay.html все комманды и ответы сохраняются в логах, и почему же blitz не имеет проблем с авторизацией? )
2 altblitz >>>технически - сделано грамотно и без ошибок<<<<<<< Извеняюсь за выражение, но тут пздц как криво и через жопу написано ) Ни единой проверки. (ни сокет не проверен на валидность, ни коннект) Оформление кода - ужас. HtoNS - просто порадовало (Delphi дает свободу, но зачем на столько ей пользоваться) Но главное: Кто будет считывать ответ сервака и анализировать ответ на предмет кодов ошибок.? Вообще возьми любой снифер (тотже CommView ) и посмотри что передается по сети и что отвечает сервак(если лень делать считывание) Также после посылки тела письма ставится CRLF[точка]CRLF и потом желательно послать команда прощания с серваком. Если ты не уверен в чем то, то лучше не пиши этого вообще и не сбивай людей с толку. Потому что выдумывать у тебя получается плоховато. Или пиши это в болталке, там модер по строже и быстрее потрёт это. P.S. Письма без авторизации уходят - это всеголишь настройки smtp сервака. Ты для теста делай через яндекс или mail.ru или любой другой нормальный сервис и там ты сразу увидиш что без авторизации ничто никуда не уйдет. Если юзаеш small http server для smtp то там есть галочка - разрешить/запретить анонимную отправку почты. Также и в других может быть подобная опция
Проверки я специально вырезал, т.к. это лишний код в моем вопросе. В исходнике все проверки ответов и статусов на месте. О снифере я как-то не думал... Значит я неправильно понял данную команду. А вот за это спасибо огромное!
Вот кстати проверки необходимы, писал многопоточный СМТП брут, зачастую когда сервер чехлил и не успевал выдать подтверждение 334 на то что принял логин - брут сразу пихал пароль и после этого либо чехлеж до таймаута, либо неверные логин и пароль.. Да и на начальных стадиях удобнее следить за работой каждого другого сервера
еще раз повторю - технически ТС написал прогу без ошибок, прав абсолютно на 100%. дело тут в другом, в принимающей стороне - pop3 севреры гугл, майл.ру откидывают мейл с приватных SMTP серверов. давно известная шняга ;//
Может не в тему, помогите пожалуйста настроить Small HTTP Server 3.05.72a для восстановления почты из корзины mail.ru... Нашел статейку но как воспользоваться ума не приложу... Почта там была очень важная....