Главная страница
    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.5 MB
Время: 0.034 c
3-1080024659
Trap
2004-03-23 09:50
2004.04.18
Создание системной базы данных Microsoft Jet


1-1080638553
Basilio
2004-03-30 13:22
2004.04.18
Можно ли сохранять/загружать из файла множества? (set of ...)


14-1080332230
Три х
2004-03-26 23:17
2004.04.18
Брысь :)


14-1080125132
Фикус
2004-03-24 13:45
2004.04.18
Какой выбрать движок для портала?


1-1080885974
V-Isa
2004-04-02 10:06
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский