Fórum Enviando email usando MAPI #260758
01/12/2004
0
Estou utilizando a função para enviar email com anexo pelo OutLook:
function EnviarEMail(const De, Para, COculta, 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);
//lpszMessageType := ´r:\dese\executaves\FCCTC1-54.eml´;
// 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;
// cópia oculta
if (COculta <> ´´) then
begin
lpRecepient.ulRecipClass := MAPI_BCC;
lpRecepient.lpszName := PChar(COculta);
lpRecepient.lpszAddress := PChar(COculta);
lpRecepient.ulReserved := 0;
lpRecepient.ulEIDSize := 0;
lpRecepient.lpEntryID := nil;
nRecipCount := 1;
lpRecips := @lpRecepient;
end;
// 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 begin
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;
end;
A função funciona bem, mas agora só estou com um único problema: eu monto um código html de como quero gerar o corpo do meu email, e guardo este código em um componente MEMO, só que a hora que passo o memo para a geração do email, o corpo do email no OutLook aparece os códigos HTML, e não a tabela que eu gostaria que aparecesse.
Será que alguém consegue me enterder?
Tem como fazer com que a tabela apareça no corpo do email ao invés do código? É que montei bem legal uma tabela para cotação, com cores e fontes diferentes, e gostaria que o corpo do email saísse assim. Será que é possível?
Desde já agradeço
Mariana
Mariana
Curtir tópico
+ 0Posts
01/12/2004
Huderson
pelo que eu entendi vc precisa enviar um html e que ele seja exibido para o destinatario com uma pagina web.
Bem, caso seja isto eu utilizei o componente da paleta indy, neste forum tem uma mensagem sobre o q eu fiz é so procurar
Espero ter ajudado
Um abraço
Gostei + 0
01/12/2004
Emerson Nascimento
Memo1.Lines.Add(´MIME-Version: 1.0´); Memo1.Lines.Add(´Content-Type: multipart/alternative;´); Memo1.Lines.Add(´ boundary="----=_NextPart_000_003E_01C33CDC.81459AC0"´); Memo1.Lines.Add(´X-Priority: 3´); Memo1.Lines.Add(´X-MSMail-Priority: Normal´); Memo1.Lines.Add(´X-Unsent: 1´); Memo1.Lines.Add(´X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165´); Memo1.Lines.Add(´ ´); Memo1.Lines.Add(´This is a multi-part message in MIME format.´); Memo1.Lines.Add(´ ´); Memo1.Lines.Add(´´------=_NextPart_000_003E_01C33CDC.81459AC0´); Memo1.Lines.Add(´Content-Type: text/plain;´); Memo1.Lines.Add(´ charset="iso-8859-1"´); Memo1.Lines.Add(´Content-Transfer-Encoding: quoted-printable´); Memo1.Lines.Add(´´ ´); Memo1.Lines.Add(´------=_NextPart_000_003E_01C33CDC.81459AC0´); Memo1.Lines.Add(´Content-Type: text/html;´); Memo1.Lines.Add(´ charset="iso-8859-1"´); Memo1.Lines.Add(´Content-Transfer-Encoding: quoted-printable´); Memo1.Lines.Add(´ ´); Memo1.Lines.Add(´<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">´); Memo1.Lines.Add(´<HTML><HEAD>´); Memo1.Lines.Add(´<META http-equiv=3DContent-Type content=3D"text/html; = charset=3Diso-8859-1">´); Memo1.Lines.Add(´<META content=3D"MSHTML 6.00.2800.1170" name=3DGENERATOR>´); Memo1.Lines.Add(´<STYLE></STYLE>´); Memo1.Lines.Add(´</HEAD>´); Memo1.Lines.Add(´<BODY bgColor=3D#fffff0>´); Memo1.Lines.Add(´´);
A partir daqui você monta a sua tabela....
espero que seja isso...
Gostei + 0
12/09/2005
O4pr3ndiz
Qual a melhor opção o MAPI ou INDY????
Naum consegui usar a funçao do MAPI utilizada no forum podem me ajudar dando um exemplos de utilização..
Obrigado...
Gostei + 0
12/09/2005
Massuda
INDY irá gerar e enviar os emails, por isso me parece uma opção melhor.
Entretanto, dependendo do cliente o próprio programa enviar emails usando INDY pode não ser permitido (já tive casos assim); nesse caso, a única alternativa é usar MAPI.
Gostei + 0
12/09/2005
O4pr3ndiz
destinatario:=´o4pr3ndiz@gmail.com´;
assunto:=´assunto´;
body:=´corpo´;
n:=1;
Enviamail(n, destinatario, assunto,body);
[Hint] Unit1.pas(133): Value assigned to ´PRecip´ never used
(se quiser posso lhe enviar para q veja)...
Mais uma vez obrigado..
Gostei + 0
12/09/2005
Massuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)