Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Команды SMTP серверов   Найти похожие ветки 

 
DelphiN! ©   (2004-02-05 19:33) [0]

Вот научился отправлять письма через сокеты, а как приложить файл не знаю, подскажите команду с параметром, для отправки вложенного в письмо файла(команду SMTP сервера)

Заранее благодарен


 
Iks   (2004-02-05 20:08) [1]

Поищи на форуме


 
DelphiN! ©   (2004-02-05 20:19) [2]

не нашел


 
DelphiN! ©   (2004-02-06 07:13) [3]

Ну народ, не может быть чтобы никто не знал!


 
dr Tr0jan ©   (2004-02-06 09:07) [4]

Аттачи к письму приделываются, как заголовок. Поищи инфу о кодировании файлов в MIME или UUE.


 
Reindeer Moss Eater ©   (2004-02-06 09:09) [5]

Аттач в письме - это не команда.
Аттач в письме - это боди письма, соответствующим образом сформированное.


 
Andersen ©   (2004-02-06 14:33) [6]

http://borland.xportal.ru/forum/viewtopic.php?t=4409&highlight=%EF%EE%F1%FB%EB%EA%E0+%EC%FB%EB%E0

Правда на С. Гы!


 
DelphiN! ©   (2004-02-06 21:45) [7]

>Andersen ©  Огромное спасибо


 
DelphiN! ©   (2004-02-07 08:11) [8]

Почему-то когда добавил дополнительную инфу о письме оно вообще перестало отсылаться. Вот код:

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-07 19:57) [9]

Удалено модератором
Примечание: Создание пустых сообщений


 
DelphiN! ©   (2004-02-07 20:29) [10]

Почему-то вот так почта отправляется нормально:

   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-09 20:09) [11]

Ну неужели до этого никто через сокеты почту не отправлял?

Я точно знаю, что моя ошибка в структуре письма, вернее в построении запроса к смтп серверу


 
Verg ©   (2004-02-10 00:30) [12]

Судя по твоему коду, все это для тебя намного сложнее, чем ты себе даже представить можешь....
Прислушайся к

Reindeer Moss Eater ©   (06.02.04 09:09) [5]

Начни с RFC822, продолжи любыми документами с упоминаниями о MIME....
Далее скачай, например, библиотеку классов
http://www.ararat.cz/synapse/
Там, среди прочих прелестей, попробуй разобраться (в контексте изученного в RFC) с такими сорцами, как
MIMEinLn.pas MIMEmess.pas MIMEpart.pas


 
Erik ©   (2004-02-10 12:07) [13]

Ну ты и извращенц! А использовать Indy религия непозволяет?


 
Fay ©   (2004-02-10 17:59) [14]

2Erik ©
Indy приходят и уходят. Сокеты остаются. Не сбивай человека с верного пути.


 
DelphiN! ©   (2004-02-11 21:39) [15]

Ну а всеже где у меня во втором варианте ошибка, я ведь письмо вроде правильно по стандарту оформил


 
Александр   (2004-02-12 11:52) [16]

Я вот тоже очень давно пытаюсь отправить письмо но чё-то пока без успешно. Пришли если можешь свой вариант проги я пришлю тебе свой по почте.


 
Fay ©   (2004-02-12 16:34) [17]

Я, наверное, невнимательно читал DelphiN! ©   (07.02.04 20:29) [10] ... Но мне показалось, что автор пытается работать с сокетом синхронно. Причём без всяких на то оснований.


 
DelphiN! ©   (2004-02-12 16:41) [18]

> Fay © Что вы пониаете под словом синхронно?
 Я отсылаю данные побайтно. Сначало отсылаю побайтно одну команду(строку) потом другую и т.д


 
Fay ©   (2004-02-12 17:38) [19]

Всё ясно.


 
Rouse_ ©   (2004-02-12 20:11) [20]

> [19] Fay ©   (12.02.04 17:38)
Ну перехода на асинхронку я тут не заметил, следовательно работает стандартно...

> [18] DelphiN! ©   (12.02.04 16:41)
А вы попробуйте скопировать файл из директории в директорию блоками по (к примеру) 64 Кб и по одному байту. Разницу заметили? Тогда зачем нагружать так линию и отсылать побайтно?...
Далее, прежде чем переслать двоичные данные их нужно сначала переконвертировать...
Как прикреплять Вам уже сказали...

PS: за WSAStartUp(257, wsadata); повбывав бы ;) Разве нельзя писать код согласно стандартам?


 
Fay ©   (2004-02-13 12:32) [21]

2 Rouse_ ©   (12.02.04 20:11) [20]
>> следовательно работает стандартно...
Синхронно = стандартно?



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.027 c
7-1076682950
Шурик Ш
2004-02-13 17:35
2004.04.18
Забыл... Как запустить из своего приложения другой EXE-шник?


8-1063264030
lex
2003-09-11 11:07
2004.04.18
Как создать Overlay Surfaces?


14-1080103983
Alexey
2004-03-24 07:53
2004.04.18
ABC Компонента для дельфи 7, где взять?


1-1080910923
*pavel
2004-04-02 17:02
2004.04.18
CRC


3-1079602943
terra
2004-03-18 12:42
2004.04.18
Проблемы с ADOQuery