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

Вниз

NMSMTP? или IdSMTP?   Найти похожие ветки 

 
Djon007 ©   (2004-02-02 22:10) [0]

Добрый вечер мастера! есть проблема мне нужно через  IdSMTP приложить файл к отправки.Это вобще можно зделать?
или же как в NMSMTP включить Authentication?
Зарание спосибо.


 
Soi ©   (2004-02-03 06:30) [1]

Попробуй вот так:


uses  Mapi;

function SendEMail(Handle: THandle; Mail: TStrings): Cardinal;
type
 TAttachAccessArray = array [0..0] of TMapiFileDesc;
 PAttachAccessArray = ^TAttachAccessArray;
var
 MapiMessage: TMapiMessage;
 Receip: TMapiRecipDesc;
 Attachments: PAttachAccessArray;
 AttachCount: Integer;
 i1: integer;
 FileName: string;
 dwRet: Cardinal;
 MAPI_Session: Cardinal;
 WndList: Pointer;
begin
 dwRet := MapiLogon(Handle,
   PChar(""),
   PChar(""),
   MAPI_LOGON_UI or MAPI_NEW_SESSION,
   0, @MAPI_Session);

 if (dwRet <> SUCCESS_SUCCESS) then
 begin
   MessageBox(Handle,
     PChar("Error while trying to send email"),
     PChar("Error"),
     MB_ICONERROR or MB_OK);
 end
 else
 begin
   FillChar(MapiMessage, SizeOf(MapiMessage), #0);
   Attachments := nil;
   FillChar(Receip, SizeOf(Receip), #0);

   if Mail.Values["to"] <> "" then
   begin
     Receip.ulReserved := 0;
     Receip.ulRecipClass := MAPI_TO;
     Receip.lpszName := StrNew(PChar(Mail.Values["to"]));
     Receip.lpszAddress := StrNew(PChar("SMTP:" + Mail.Values["to"]));
     Receip.ulEIDSize := 0;
     MapiMessage.nRecipCount := 1;
     MapiMessage.lpRecips := @Receip;
   end;

   AttachCount := 0;

   for i1 := 0 to MaxInt do
   begin
     if Mail.Values["attachment" + IntToStr(i1)] = "" then
       break;
     Inc(AttachCount);
   end;

   if AttachCount > 0 then
   begin
     GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount);

     for i1 := 0 to AttachCount - 1 do
     begin
       FileName := Mail.Values["attachment" + IntToStr(i1)];
       Attachments[i1].ulReserved := 0;
       Attachments[i1].flFlags := 0;
       Attachments[i1].nPosition := ULONG($FFFFFFFF);
       Attachments[i1].lpszPathName := StrNew(PChar(FileName));
       Attachments[i1].lpszFileName :=
         StrNew(PChar(ExtractFileName(FileName)));
       Attachments[i1].lpFileType := nil;
     end;
     MapiMessage.nFileCount := AttachCount;
     MapiMessage.lpFiles := @Attachments^;
   end;

   if Mail.Values["subject"] <> "" then
     MapiMessage.lpszSubject := StrNew(PChar(Mail.Values["subject"]));
   if Mail.Values["body"] <> "" then
     MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values["body"]));

   WndList := DisableTaskWindows(0);
   try
   Result := MapiSendMail(MAPI_Session, Handle,
     MapiMessage, MAPI_DIALOG, 0);
   finally
     EnableTaskWindows( WndList );
   end;

   for i1 := 0 to AttachCount - 1 do
   begin
     StrDispose(Attachments[i1].lpszPathName);
     StrDispose(Attachments[i1].lpszFileName);
   end;

   if Assigned(MapiMessage.lpszSubject) then
     StrDispose(MapiMessage.lpszSubject);
   if Assigned(MapiMessage.lpszNoteText) then
     StrDispose(MapiMessage.lpszNoteText);
   if Assigned(Receip.lpszAddress) then
     StrDispose(Receip.lpszAddress);
   if Assigned(Receip.lpszName) then
     StrDispose(Receip.lpszName);
   MapiLogOff(MAPI_Session, Handle, 0, 0);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 mail: TStringList;
begin
 mail := TStringList.Create;
 try
   mail.values["to"] := "Receiver-Email@test.xyz";
   mail.values["subject"] := "Hello";
   mail.values["body"] := "blah";
   mail.values["body"] := "blah";
   mail.values["attachment0"] := "C:\Test.txt";
   // mail.values["attachment1"]:="C:\Test2.txt";
   sendEMail(Application.Handle, mail);
 finally
   mail.Free;
 end;
end;



 
Djon007 ©   (2004-02-03 20:44) [2]

<Soi>
нет мне нужно примерно так:
var
  LMsg : TIdMessage;
 Addr : TIdEMailAddressItem;
begin
   LMsg.From.Text:="";
   Addr:=LMsg.Recipients.Add();
   Addr.Text:="";
   LMsg.Subject:="";
    <Здесь приложить файл к отправки как?>


 
stone ©   (2004-02-04 14:06) [3]

with LMsg do
   begin
    TIdAttachment.Create(LMsg.MessageParts, "C:\Test.txt");


 
Djon007 ©   (2004-02-04 20:51) [4]

благодорююю......


 
DillerXX ©   (2004-02-04 21:11) [5]

Я не понял или это я глючу или ещё что-то... Я создаю idSMTP а когда пишу
var
 LMsg : TIdMessage;
то он говорит что не знает такого класса! Что это?


 
Djon007 ©   (2004-02-04 21:17) [6]

глюк:)


 
Djon007 ©   (2004-02-05 20:48) [7]

А как это дело правильно поставить
( TIdAttachment.Create(LMsg.MessageParts, "C:\Test.txt");)
чтоб работоло........

   LMsg.From.Text:="";
   Addr:=LMsg.Recipients.Add();
   Addr.Text:="";
   LMsg.Subject:="";
   TIdAttachment.Create(LMsg.MessageParts, "C:\Test.txt");
   E.Send(LMsg);
   E.Disconnect();
   Caption:="E-Mail Sending";


 
dr Tr0jan ©   (2004-02-13 06:44) [8]

А как удалить приаттаченный файл из письма?



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

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

Наверх




Память: 0.49 MB
Время: 0.034 c
1-1080646782
Mazer
2004-03-30 15:39
2004.04.18
Автоматически загрузить в Image картинку jpg, gif, bmp... как?


3-1079606356
SnapIn
2004-03-18 13:39
2004.04.18
Как увидеть данные из .ORA


6-1076419526
Павел
2004-02-10 16:25
2004.04.18
WinSocket, Proxy серверы и чат...


1-1080935930
Rosik
2004-04-02 23:58
2004.04.18
Про WebBrowser. Помогите плиз.


8-1071569422
Ivolg
2003-12-16 13:10
2004.04.18
Перемотка