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

Вниз

Отправка почты с помощью winsock   Найти похожие ветки 

 
LanCoder   (2004-04-07 02:49) [0]

Уважаемые форумчане, столкнулся с проблемой, при добавлении в свой проект IdSMTP и IDMessages, размер откомпилированного файла увеличивается с 47 Кб до 235Кб, что очень не желательно в моём случае. Именно поэтому я решил попробовать отправлять почту с помощью сокетов, но все мои старания заканчивались неудачами и вот теперь приходится просить о помощи у вас. Возможно у когото завалялся фрагментик программы реализующий отправку почты на 1 адрес, через smtp, а также с несколькими аттачментами. Буду очень признателен за оказанную вами помощь.


 
Rouse_ ©   (2004-04-07 09:31) [1]

Вопрос вот в чем: что ты такое пишешь, с таким маленьким размером да еще с поддержкой отправки почты?!


 
Digitman ©   (2004-04-07 09:44) [2]


> решил попробовать отправлять почту с помощью сокетов


а IdSMTP, по-твоему, это не "сокет" ? это "шмокет" ?


> все мои старания заканчивались неудачами


ну показывай ... свои "старания" ..


 
LanCoder   (2004-04-13 02:41) [3]

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


 
Alexis ©   (2004-04-13 13:54) [4]

2 Rouse-судя по мейлу автора, троян :)


 
AndersoNRules ©   (2004-04-13 22:33) [5]

Shas naydu :
vot,derji:

unit Mapi;

interface
uses Windows,Sysutils,Classes;
function SendMail(RecName,Address,Subject,Attachment:String):boolean;
function IsOnline:boolean;

implementation
uses Mapi;
function SendMail(RecName,Address,Subject,Attachment:string):boolean;
var MapiMessage:TMapiMessage;
   MapiFileDesc:TMapiFileDesc;
   MapiRecipDesc:TMapiRecipDesc;
   i:integer;  s:string;
begin
MapiRecipDesc.ulReserved:=0;
MapiRecipDesc.ulRecipClass:=MAPI_TO;
MapiRecipDesc.lpszName:=PChar(RecName);
MapiRecipDesc.lpszAddress:=PChar(Address);
MapiRecipDesc.ulEIDSize:=0;
MapiRecipDesc.lpEntryID:=nil;

MapiFileDesc.ulReserved:=0;
MapiFileDesc.flFlags:=0;
MapiFileDesc.nPosition:=0;
MapiFileDesc.nPosition:=PChar(Attachment);
MapiFileDesc.lpszFileName:=nil;
MapiFileDesc.lpFileType:=nil;

MapiMessage.ulReserved:=0;
MapiMessage.lpszSubject:=nil;
MapiMessage.lpszNoteText:=Pchar(Subject);
MapiMessage.lpszMessageType:=nil;
MapiMessage.lpszDateReceived:=nil;
MapiMessage.lpszConversationID:=nil;
MapiMessage.flFlags:=0;
MapiMessage.lpOriginator:=nil;
MapiMessage.nRecipCount:=1;
MapiMessage.lpRecips:=@MapiRecipDesc;
if Length(Attachment)>0 then
begin
MapiMessage.nFileCount:1;
MapiMessage.lpFiles:=@MapiFileDesc;
end
else
begin
MapiMessage.nFileCount:=0;
MapiMessage.lpFiles:=nil;
end;
Result:=MapiSendMail(0,0,MapiMessage,MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEWSESSION,0)=SUCCESS_SUCCESS;
end;

function IsOnline:boolean;
var  RASConn: TRASConn;  dwSize,dwCount: DWORD;
begin
RASConns.dwSize:= SizeOf(TRASConn);
dwSize:= SizeOf(RASConns);
Res:!RASEnumConnectionsA(@RASConns, @dwSize, @dwCount);
Result:= (Res = 0) and (dwCount > 0);
end;
end.

esli budet rabotati,s tebya pivo  :)  joke


 
Rouse_ ©   (2004-04-13 22:50) [6]

unit Mapi;
...
uses Mapi;


верх гениальности...

Res:!RASEnumConnectionsA(@RASConns, @dwSize, @dwCount);
Это тоже юмор...


 
AndersoNRules ©   (2004-04-14 15:51) [7]

Unit ya potom sluchayno nazval Mapi.


 
LanCoder   (2004-04-23 07:56) [8]

Спасибо за внимание!!!

Если не секрет, почему не работает ниже приведённый пример, ведь по идее всё правильно, единственное, что я не когда не создавал сам это классы и объекты, я поглядел в Дэлфовый Хэлп там вроде так, как у меня? И ещё вопрос может можно обойтись без всей этой лабуды, а то я создавал класс TMain только для того чтобы работали события TClientSocketa. Кстати визуальный аналог, отлично работает, присылая мне при этом письмо с аттачментом, а этот даже не коннектится к серверу.

==========================================
program Project3;

uses
 Classes, Dialogs,ScktComp,sysutils;

type
 TMain = class(TComponent)
   cl:TClientSocket;
   Procedure SendMail(CFrom,CTo,Csmtp,Ctext:string);
   Procedure clRead(Sender: TObject; Socket: TCustomWinSocket);
   Procedure clConnect(Sender: TObject; Socket: TCustomWinSocket);
 end;
{==================CONSTANTS==========================}
const z = "Content-Type: text/html;"+
       "charset="koi8-r""+
"Content-Transfer-Encoding: quoted-printable"+

"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">"+
"<HTML><HEAD>"+
"<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dkoi8-r">"+
"<META content=3D"MSHTML 6.00.2800.1264" name=3DGENERATOR>"+
"<STYLE></STYLE>"+
"</HEAD>"+
"<BODY bgColor=3D#ffffff><STRONG><FONT face=3D"Bodoni MT" size=3D2>"+
"<DIV>"+
"<HR>"+
"</DIV>"+
"<DIV></FONT></STRONG><FONT size=3D2>>>from Kasper with=20"+
"Love...<BR>>>Watch my WebCam online @ <A=20"+
"href=3D"http://www.fromUA.net/web/">http://www.fromUA.net/web/</A></FONT>="+
"</DIV>"+
"<DIV><STRONG><FONT face=3D"Bodoni MT" ="+
"size=3D2></FONT></STRONG> </DIV>"+
"<DIV><FONT size=3D2>Legal Restrictions<BR>Copyright =BF 2001-2003 ="+
"kasperUA&#8482;. All=20"+#10+
"rights reserved.<BR>Except as otherwise indicated elsewhere in this ="+
"publication,=20"+#10+
"with respect to a particular portion, file, or document, any person is ="+
"hereby=20"+#10+
"authorized to view, copy, print, and distribute this document subject to ="+
"the=20"+#10+
"following conditions:<BR>The document may be used for informational,=20"+
"non-commercial purposes only.</FONT></DIV></BODY></HTML>";

{=======================CONSTANTS========================}

var  SFrom,STo,smtp,text,k:string;
    Main:TMain;

Procedure TMain.clRead(Sender: TObject; Socket: TCustomWinSocket);
begin  
k:=socket.ReceiveText;
showmessage(k);
end;

Procedure TMain.clConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
socket.SendText("HELO "+Smtp+#10);
sleep(500);
socket.SendText("MAIL FROM:"+SFrom+#10);
sleep(500);
socket.SendText("RCPT TO:"+STo+#10);
sleep(500);
socket.SendText("DATA"+#10);
sleep(500);
socket.SendText(Text+#10);
sleep(500);
socket.SendText("."+#10);

end;

Procedure TMain.SendMail(CFrom,CTo,Csmtp,Ctext:string);
begin
SFrom:=CFrom;
STo:=CTo;
Smtp:=CSmtp;
text:=CText;
 try
   cl:=TClientSocket.Create(Main);
   cl.OnRead:=clRead;
   cl.OnConnect:=clConnect;
   if cl.Active then begin
   cl.Close;
   Exit;
 end;
   cl.Host:=Smtp;
   cl.Port:=25;
   cl.active:=true;
   cl.Open;
 except
   cl.Close;
   cl.Active:=false;
   cl.Destroy;
 end;
end;

begin
 Main:=TMain.Create(nil);
 Main.sendmail("my@mail.ru", "my@mail.ru","smtp.mymail.ru",z);
 repeat
 until k <> "";
 Main.cl.Close;
 Main.cl.Active:=false;
 Main.cl.Destroy;
end.
==========================================


 
Polevi ©   (2004-04-23 08:05) [9]

cl:=TClientSocket.Create(Main);
  cl.OnRead:=clRead;
  cl.OnConnect:=clConnect;
  if cl.Active then begin //вот это зачем ?????
  cl.Close;
  Exit;
end;

  cl.active:=true; //это тоже зачем ?
  cl.Open;

 неправыильно отслыать чтото в OnConnect
 это нужно делать в OnWrite и без всяких sleep(500)
 
 и вообще, зачем использовать асинхронный режим елси не понимаешь его сути ? это не самый простой способ, используй блокирующий


 
LanCoder   (2004-04-23 16:00) [10]

Я не сильно разбираюсь в этом, объясни если не трудно или дай ссылку на доку


 
LanCoder   (2004-04-23 17:13) [11]

И главная проблема не в этом, это всё просто напросто не работает в консольном приложении, почему может ктото знает ответ?


 
Polevi ©   (2004-04-23 18:37) [12]

потомучто ты не выбираешь сообщения из очереди потока


 
LanCoder   (2004-04-24 07:05) [13]

Polevi ©, объясни пожалуйста поподробнее, а то чё не делаю не помогает.


 
Polevi ©   (2004-04-24 09:31) [14]

var
 Msg:TMsg;
begin
Main:=TMain.Create(nil);
Main.sendmail("my@mail.ru", "my@mail.ru","smtp.mymail.ru",z);
while GetMessage(msg,0,0,0) do
 DispatchMessage(msg);
Main.Free;
end;


 
0gnev.sky   (2004-05-06 08:49) [15]

LanCoder: если ты пишешь с использованием TServer/ClientSocket"a -- у тебя, имхо, размерчик должен и так подскочить :)) только API может реализовать маленький размер, а ты маленький, что б на нем программить ...


 
Klev   (2004-05-07 22:04) [16]

>Rouse_ ©   (07.04.04 09:31) [1]
Маленький размер - это 8-20 кб, а 47 - это уже много.



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

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

Наверх




Память: 0.51 MB
Время: 0.041 c
4-1085569904
Werewolf
2004-05-26 15:11
2004.07.04
Выполнение кода, когда мое приложение неактивно.


14-1087299782
NeyroSpace
2004-06-15 15:43
2004.07.04
Мелодии для мобильных телефонов


1-1087560647
DimonNew
2004-06-18 16:10
2004.07.04
Нестандартные окна


14-1087192062
ИМХО
2004-06-14 09:47
2004.07.04
Что за фигня...


1-1087566561
Артем
2004-06-18 17:49
2004.07.04
Вопрос по WebBrowser