Fórum Abrir Cliente de Email Padrao #232751
17/05/2004
0
Gostaria de saber se existe alguma DLL ou API que carregue o Cliente de Email Padrao e que nos permita formatar a mensagem (informando assunto, corpo da mensagem e , o mais importante, permitindo atachar um arquivo) ?
Se possível, uma solução que não necessite configuração de servidor smtp.
Agradeço desde já qualquer ajuda.
Abraços,
Daniel Almeida.
Dwng
Curtir tópico
+ 0Posts
17/05/2004
Fer_nanda
function EnviarEmailPadrao(const De, Para, Assunto, Texto, Arquivo: string; Confirma: Boolean): Integer; var Msg: TMapiMessage; lpSender, lpRecepient: TMapiRecipDesc; FileAttach: TMapiFileDesc; SM: TFNMapiSendMail; MAPIModule: HModule; Flags: Cardinal; begin // cria propriedades da mensagem FillChar(Msg, SizeOf(Msg), 0); with Msg do begin if (Assunto <> ´´) then lpszSubject := PChar(Assunto); if (Texto <> ´´) then lpszNoteText := PChar(Texto); // remetente if (De <> ´´) then begin lpSender.ulRecipClass := MAPI_ORIG; lpSender.lpszName := PChar(De); lpSender.lpszAddress := PChar(De); lpSender.ulReserved := 0; lpSender.ulEIDSize := 0; lpSender.lpEntryID := nil; lpOriginator := @lpSender; end; // destinatário if (Para <> ´´) then begin lpRecepient.ulRecipClass := MAPI_TO; lpRecepient.lpszName := PChar(Para); lpRecepient.lpszAddress := PChar(Para); lpRecepient.ulReserved := 0; lpRecepient.ulEIDSize := 0; lpRecepient.lpEntryID := nil; nRecipCount := 1; lpRecips := @lpRecepient; end else lpRecips := nil; // arquivo anexo if (Arquivo = ´´) then begin nFileCount := 0; lpFiles := nil; end else begin FillChar(FileAttach, SizeOf(FileAttach), 0); FileAttach.nPosition := Cardinal($FFFFFFFF); FileAttach.lpszPathName := PChar(Arquivo); nFileCount := 1; lpFiles := @FileAttach; end; end; // carrega dll e o método para envio do email MAPIModule := LoadLibrary(PChar(MAPIDLL)); if MAPIModule = 0 then Result := -1 else try if Confirma then Flags := MAPI_DIALOG or MAPI_LOGON_UI else Flags := 0; @SM := GetProcAddress(MAPIModule, ´MAPISendMail´); if @SM <> nil then Result := SM(0, Application.Handle, Msg, Flags, 0) else Result := 1; finally FreeLibrary(MAPIModule); end; end;
Espero ter ajudado
Gostei + 0
17/05/2004
Dwng
Quanto a limitação de 1 arquivo atachado: era sua necessidade ou você encontrou problemas?
Valeu Fernanda!
DWNG.
Gostei + 0
17/05/2004
Fer_nanda
if (Arquivo = ´´) then begin nFileCount := 0; lpFiles := nil; end else begin FillChar(FileAttach, SizeOf(FileAttach), 0); FileAttach.nPosition := Cardinal($FFFFFFFF); FileAttach.lpszPathName := PChar(Arquivo); nFileCount := 1; lpFiles := @FileAttach; end;
Eu tentei fazer uma função separada só pra isso... mas não deu certo, na época uma das dicas q me passaram era pra fazer uma função recurssiva só para atachar os arquivos.. mas não consegui alterar a função.
Caso vc consiga mealguma coisa, ou alguém tiver alguma dica. Agradeço.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)