![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Команды SMTP серверов
DelphiN! © (2004-02-05 19:33:00)Вот научился отправлять письма через сокеты, а как приложить файл не знаю, подскажите команду с параметром, для отправки вложенного в письмо файла(команду SMTP сервера)
Заранее благодарен
Fay (2004-02-13 12:32:00) [1]2 Rouse_ © (12.02.04 20:11) [20]
>> следовательно работает стандартно...
Синхронно = стандартно?
Rouse_ (2004-02-12 20:11:00) [2]> [19] Fay © (12.02.04 17:38)
Ну перехода на асинхронку я тут не заметил, следовательно работает стандартно...
> [18] DelphiN! © (12.02.04 16:41)
А вы попробуйте скопировать файл из директории в директорию блоками по (к примеру) 64 Кб и по одному байту. Разницу заметили? Тогда зачем нагружать так линию и отсылать побайтно?...
Далее, прежде чем переслать двоичные данные их нужно сначала переконвертировать...
Как прикреплять Вам уже сказали...
PS: за WSAStartUp( 257, wsadata); повбывав бы ;) Разве нельзя писать код согласно стандартам?
Fay (2004-02-12 17:38:00) [3]Всё ясно.
DelphiN! (2004-02-12 16:41:00) [4]> Fay © Что вы пониаете под словом синхронно?
Я отсылаю данные побайтно. Сначало отсылаю побайтно одну команду(строку) потом другую и т.д
Fay (2004-02-12 16:34:00) [5]Я, наверное, невнимательно читал DelphiN! © (07.02.04 20:29) [10] ... Но мне показалось, что автор пытается работать с сокетом синхронно. Причём без всяких на то оснований.
Александр (2004-02-12 11:52:00) [6]Я вот тоже очень давно пытаюсь отправить письмо но чё-то пока без успешно. Пришли если можешь свой вариант проги я пришлю тебе свой по почте.
DelphiN! (2004-02-11 21:39:00) [7]Ну а всеже где у меня во втором варианте ошибка, я ведь письмо вроде правильно по стандарту оформил
Fay (2004-02-10 17:59:00) [8]2Erik ©
Indy приходят и уходят. Сокеты остаются. Не сбивай человека с верного пути.
Erik (2004-02-10 12:07:00) [9]Ну ты и извращенц! А использовать Indy религия непозволяет?
Verg (2004-02-10 00:30:00) [10]Судя по твоему коду, все это для тебя намного сложнее, чем ты себе даже представить можешь....
Прислушайся к
Reindeer Moss Eater © (06.02.04 09:09) [5]
Начни с RFC822, продолжи любыми документами с упоминаниями о MIME....
Далее скачай, например, библиотеку классов
http://www.ararat.cz/synapse/
Там, среди прочих прелестей, попробуй разобраться (в контексте изученного в RFC) с такими сорцами, как
MIMEinLn.pas MIMEmess.pas MIMEpart.pas
DelphiN! (2004-02-09 20:09:00) [11]Ну неужели до этого никто через сокеты почту не отправлял?
Я точно знаю, что моя ошибка в структуре письма, вернее в построении запроса к смтп серверу
DelphiN! (2004-02-07 20:29:00) [12]Почему-то вот так почта отправляется нормально:
procedure sendmail;
const
RcptStr : String = 'admin@delphisyte.ru';
var
wsadata: TWSADATA;
sin: TSockAddrIn;
sock: TSocket;
MySmtp : String;
iaddr: Integer;
buf: array[0..255] of char;
procedure Mys(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;
begin
MySmtp:='65.39.204.38';
mybuf := 'Message text...';
WSAStartUp(257, wsadata);
sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
sin.sin_family := AF_INET;
htons(25);
sin.sin_port := htons(25);
iaddr:=inet_addr(PChar(MySmtp));
sin.sin_addr.S_addr:=iaddr;
connect(sock,sin,sizeof(sin));
recv(sock,buf,sizeof(buf),0);
Mys('HELO delphisyte.ru'+#13+#10);
recv(sock,buf,sizeof(buf),0);
// MAIL TO:
Mys('MAIL FROM: '+RcptStr+#13+#10);
recv(sock,buf,sizeof(buf),0);
// RCPT TO:
Mys('RCPT TO: '+RcptStr+#13+#10);
recv(sock,buf,sizeof(buf),0);
// DATA
Mys('DATA'+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys(MyBuf+#13+#10);
// .
Mys(#13+#10+'.'+#13+#10);
recv(sock,buf,sizeof(buf),0);
// QUIT
Mys('QUIT'+#13+#10);
recv(sock,buf,sizeof(buf),0);
closesocket(sock);
----------------------------------------
А вот так нет:
procedure sendmail;
const
RcptStr : String = 'admin@delphisyte.ru';
var
wsadata: TWSADATA;
sin: TSockAddrIn;
sock: TSocket;
MySmtp : String;
iaddr: Integer;
buf: array[0..255] of char;
procedure Mys(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;
begin
MySmtp:='65.39.204.38';
mybuf := 'Message text...';
WSAStartUp(257, wsadata);
sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
sin.sin_family := AF_INET;
htons(25);
sin.sin_port := htons(25);
iaddr:=inet_addr(PChar(MySmtp));
sin.sin_addr.S_addr:=iaddr;
connect(sock,sin,sizeof(sin));
recv(sock,buf,sizeof(buf),0);
Mys('HELO delphisyte.ru'+#13+#10);
recv(sock,buf,sizeof(buf),0);
// MAIL TO:
Mys('MAIL FROM: '+RcptStr+#13+#10);
recv(sock,buf,sizeof(buf),0);
// RCPT TO:
Mys('RCPT TO: '+RcptStr+#13+#10);
recv(sock,buf,sizeof(buf),0);
// DATA
Mys('DATA'+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys('To: <admin@delphisyte.ru>'+#13#10);
recv(sock,buf,sizeof(buf),0);
Mys('From: <admin@delphisyte.ru>'+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys('Subject: Tema'+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys('Content-Type: text/plain; charset=Windows-1251'+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys('X-Priority: 1'+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys(MyBuf+#13+#10);
// .
Mys(#13+#10+'.'+#13+#10);
recv(sock,buf,sizeof(buf),0);
// QUIT
Mys('QUIT'+#13+#10);
recv(sock,buf,sizeof(buf),0);
closesocket(sock);
-----------------------------------------
Вот до меня просто не доходит, почему второй вариант не пашет, буду рад за помощь, заранее благодарен
DelphiN! (2004-02-07 19:57:00) [13]Удалено модератором
Примечание: Создание пустых сообщений
DelphiN! (2004-02-07 08:11:00) [14]Почему-то когда добавил дополнительную инфу о письме оно вообще перестало отсылаться. Вот код:
procedure Mys(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;
begin
MySmtp:='65.39.204.38';
WSAStartUp(257, wsadata);
sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
sin.sin_family := AF_INET;
htons(25);
sin.sin_port := htons(25);
iaddr:=inet_addr(PChar(MySmtp));
sin.sin_addr.S_addr:=iaddr;
connect(sock,sin,sizeof(sin));
recv(sock,buf,sizeof(buf),0);
Mys('HELO delphisyte.ru'+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys('MAIL FROM: '+RcptStr+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys('RCPT TO: '+RcptStr+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys('DATA'+#13+#10);
recv(sock,buf,sizeof(buf),0);
//-------Вот без этого письмо нормально отсылается --------
//Mys('TO:<admin@delphisyte.ru>'+#13+#10);
//recv(sock,buf,sizeof(buf),0);
//Mys('Subject:About Life'+#13+#10);
//recv(sock,buf,sizeof(buf),0);
//Mys('MIME-Version:1.0'+#13+#10);
//recv(sock,buf,sizeof(buf),0);
//Mys('Content-Type: multipart/mixed;'+#13+#10);
//recv(sock,buf,sizeof(buf),0);
//Mys('boundary=\"Volume182817071783177905'+#13+#10);
//recv(sock,buf,sizeof(buf),0);
//Mys('Content-Type: text/plain; charset=\"Windows-1251\"'+#13+#10);
recv(sock,buf,sizeof(buf),0);
//Mys('Content-Transfer-Encoding: 8bit'+#13+#10);
//recv(sock,buf,sizeof(buf),0);
//Mys('Content-Disposition: attachment;filename=\"D:\1.txt\"'+#13+#10);
//recv(sock,buf,sizeof(buf),0);
//--------------------------------------------------------
Mys(MyBuf+#13+#10);
Mys(#13+#10+'.'+#13+#10);
recv(sock,buf,sizeof(buf),0);
Mys('QUIT'+#13+#10);
recv(sock,buf,sizeof(buf),0);
closesocket(sock);
end;
Что я тут неправильно настрочил?
DelphiN! (2004-02-06 21:45:00) [15]>Andersen © Огромное спасибо
Andersen (2004-02-06 14:33:00) [16]http://borland.xportal.ru/forum/viewtopic.php?t=4409&highlight=%EF%EE%F1%FB%EB%EA%E0+%EC%FB%EB%E0
Правда на С. Гы!
Reindeer Moss Eater (2004-02-06 09:09:00) [17]Аттач в письме - это не команда.
Аттач в письме - это боди письма, соответствующим образом сформированное.
dr Tr0jan (2004-02-06 09:07:00) [18]Аттачи к письму приделываются, как заголовок. Поищи инфу о кодировании файлов в MIME или UUE.
DelphiN! (2004-02-06 07:13:00) [19]Ну народ, не может быть чтобы никто не знал!
DelphiN! (2004-02-05 20:19:00) [20]не нашел