Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

Команды 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.038 c
14-1080114653
vidiv
2004-03-24 10:50
2004.04.18
Прикол NTFS под названием Поток файла (или чтото вроде)


1-1080411855
leonidus
2004-03-27 21:24
2004.04.18
Как получить текущее время с точностью до миллисекунд?


14-1080208845
PVOzerski
2004-03-25 13:00
2004.04.18
А не завести ли на сайте отдельный форум по FreePascal?


9-1063702955
z1r[0]
2003-09-16 13:02
2004.04.18
Dibы черно-белые


3-1080098317
Максим
2004-03-24 06:18
2004.04.18
Запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский