Fórum Enviando email usando MAPI #260758

01/12/2004

0

Amigos....
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

Mariana

Responder

Posts

01/12/2004

Huderson

olá

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


Responder

Gostei + 0

01/12/2004

Emerson Nascimento

acho que você precisa acrescentar o código abaixo no corpo do seu email, imediatamente antes da sua tabela:

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...


Responder

Gostei + 0

12/09/2005

O4pr3ndiz

é muito lento pra enviar uma lista de 50emails, chega a travar minha maquina... Alguem pode me ajudar com um codigo q enviei html para uma lista de 50 emails??

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...


Responder

Gostei + 0

12/09/2005

Massuda

Qual a melhor opção o MAPI ou INDY?
MAPI vai gerar os emails e deixá-los na caixa de saída do programa de email padrão do sistema (vai ser o programa que o usuário geralmente utiliza para ler/escrever emails).

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.


Responder

Gostei + 0

12/09/2005

O4pr3ndiz

Muito obrigado... mas preciso de mais uma ajuda pra poder implemetar esta funçao MAPI pois ocorre o seguinte erro no meu codigo..

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..


Responder

Gostei + 0

12/09/2005

Massuda

[Hint] Unit1.pas(133): Value assigned to ´PRecip´ never used
Isso não é um erro. É apenas um aviso do compilador sobre o fato da variável PRecip ter recebido um valor que nunca é utilizado. Mas o código que gerou esse aviso não é o postado neste tópico, certo?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar