Ir para conteúdo
Fórum Script Brasil
  • 0

Como Faiz Pra Envia E-mail Pelo Delphi?


Guest xMetalx

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

amigo...beleza??

Uma Dica:

segue abaixo uma função.

Eu uso ela a um bom tempo e funciona perfeitamente:

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; 

No Botão coloque:

CODEprocedure TForm1.BitBtn5Click(Sender: TObject);

var

mail: TStringList;

begin

mail := TStringList.Create;

try

mail.values['to'] := 'Email@test.xyz'; ///AQUI VAI O EMAIL DO DESTINATARIO///

mail.values['subject'] := 'Hello'; ///AQUI O ASSUNTO///

mail.values['body'] := 'blah'; ///AQUI O TEXTO NO CORPO DO EMAIL///

mail.values['attachment0'] := 'C:\Test.txt'; ////AQUI O ENDEREÇO ONDE ENCONTRAM OS ARQUIVOS//

mail.values['attachment1']:='C:\Test2.txt'; ///IDEM - NO ATTACHMENT1 TEM QUE COLOCAR A SEQUNCIA DO EMAIL A QUAL DESEJA ENVIAR EXEMPLO: ATTACHMENT1

sendEMail(Application.Handle, mail);

finally

mail.Free;

end;

end;

Espero Ter Ajudado

Fwl...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...