Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Команды SMTP серверов


Страницы:   1 2

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]

не нашел


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо