Форум: "Сети";
Текущий архив: 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