Envio de email pelo OutLook

25/10/2004

0

Amigos...
Tenho um projeto de envio de email que foi desenvolvido por outro programador a algum tempo.
Ele funciona legal, e envia o email pelo OutLook deixando uma cópia nos itens enviados como meu gerente quer.
Só que agora eu tenho que anexar arquivos nos emails a serem enviados, e eu gostaria de saber se existe uma maneira de fazer isso no código que já existe ou se tenho que refazer este código.
Segue o código:

AssignFile(Arq_mail, sFileN );
Rewrite(Arq_mail);
writeLn(Arq_mail,´From: ´);
writeLn(Arq_mail,´To: ´+ sMailDest );
writeLn(Arq_mail,´Cc: ´+ sCopia );
writeLn(Arq_mail,´Bcc: ´+ sCopiaOculta );
writeLn(Arq_mail,´Subject: ´+ sSubject );
writeLn(Arq_mail,´Date: ´);
writeLn(Arq_mail,´MIME-Version: 1.0´);
writeLn(Arq_mail,´Content-Type: multipart/alternative;´);
writeLn(Arq_mail,´ boundary=´----=_NextPart_000_003E_01C33CDC.81459AC0´´);
writeLn(Arq_mail,´X-Priority: 3´);
writeLn(Arq_mail,´X-MSMail-Priority: Normal´);
writeLn(Arq_mail,´X-Unsent: 1´);
writeLn(Arq_mail,´X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165´);
writeLn(Arq_mail,´ ´);
writeLn(Arq_mail,´This is a multi-part message in MIME format.´);
writeLn(Arq_mail,´ ´);
writeLn(Arq_mail,´------=_NextPart_000_003E_01C33CDC.81459AC0´);
writeLn(Arq_mail,´Content-Type: text/plain;´);
writeLn(Arq_mail,´ charset=´iso-8859-1´´);
writeLn(Arq_mail,´Content-Transfer-Encoding: quoted-printable´);
writeLn(Arq_mail,´ ´);

writeLn(Arq_mail,´------=_NextPart_000_003E_01C33CDC.81459AC0´);
writeLn(Arq_mail,´Content-Type: text/html;´);
writeLn(Arq_mail,´ charset=´iso-8859-1´´);
writeLn(Arq_mail,´Content-Transfer-Encoding: quoted-printable´);
writeLn(Arq_mail,´ ´);
writeLn(Arq_mail,´<!DOCTYPE HTML PUBLIC ´-//W3C//DTD HTML 4.0 Transitional//EN´>´);
writeLn(Arq_mail,´<HTML><HEAD>´);
writeLn(Arq_mail,´<META http-equiv=3DContent-Type content=3D´text/html; = charset=3Diso-8859-1´>´);
writeLn(Arq_mail,´<META content=3D´MSHTML 6.00.2800.1170´ name=3DGENERATOR>´);
writeLn(Arq_mail,´<STYLE></STYLE>´);
writeLn(Arq_mail,´</HEAD>´);
writeLn(Arq_mail,´<BODY bgColor=3D#fffff0>´);
writeLn(Arq_mail,´´);
For nQtLines := 0 to memoHtml.Lines.Count - 1 do
writeLn(Arq_mail, memoHtml.Lines.Strings[nQtLines]);

CloseFile(Arq_mail);
{$I+}
if lAbrir Then
ShellExecute(Handle,´open´, PChar( sFileN ), nil, nil, SW_SHOWNORMAL);

Desde já agradeço

Mariana


Mariana

Mariana

Responder

Posts

25/10/2004

Mahdak

Colega baixe o Dicas E truques Delphi no Site: www.lloydsoft.hpg.ig.com.br
-------------------------------------------------------

esse exemplo achei lá...


Enviar um email
smtp.postmessage.toAddress := ´StringList (por ex uma listbox´;
smtp.postmessage.FromAdreess := ´ex: meu_email@123.pt´;
smtp.userid := ´ex: user@123.pt´
smtp.host := ´ex: smtp@123.pt´
smtp.postmessage.subject := ´Assunto´
smtp.postmessage.body := ´Texto da mensagem (stringlist)´

smtp.connect;
smtp.sendmail;
smtp.disconnect;
Contribuição:
O Anonymous.nick enviou um complemento explicando melhor o procedimento para enviar um e-mail usando o Delphi.

Fazer um aplicativo completo para manipulação de e-mails é um tanto trabalhoso e não é o assunto desta dica. Muitas vezes, porém, queremos apenas dar ao nosso software a capacidade de enviar simples e-mails. Isto é fácil, especialmente porque o Delphi5 nos oferece o componente TNMSMTP (paleta FastNet) que faz praticamente todo o trabalho para nós. Precisamos apenas alterar algumas propriedades e chamar alguns métodos para que a mensagem seja enviada. Vamos para a prática:

1. Coloque um componente TNMSMTP no form.

2. Coloque um botão e no evento OnClick deste botão escreva:

procedure TForm1.Button1Click(Sender: TObject);
begin

{ Seu servidor SMTP }
NMSMTP1.Host := ´smtp.servidor.com.br´;

{ Porta SMTP, **NÃO MUDE ISTO** }
NMSMTP1.Port := 25;

{ Nome de login do usuário }
NMSMTP1.UserID := ´MeuLogin´;

{ Conecta ao servidor }
NMSMTP1.Connect;

{ Se ocorrer algum erro durante a conexão com o servidor, avise! }
if not NMSMTP1.Connected then
raise Exception.Create(´Erro de conexão´);

with NMSMTP1.PostMessage do begin
{ Seu e-mail }
FromAddress := ´meuemail@meuserver.com.br´;

{ Seu nome }
FromName := ´Meu Nome´;

{ E-mail do destinatário }
ToAddress.Clear;
ToAddress.Add(´destinatario@servidor.com.br´);

{ Assunto da mensagem }
Subject := ´Assunto da mensagem´;

{ Corpo da mensagem }
Body.Clear;
Body.Add(´Primeira linha da mensagem´);
Body.Add(´Segunda linha da mensagem´);
Body.Add(´´); { Linha em branco }
Body.Add(´Última linha da mensagem´);

{ Anexar arquivos(Se não quiser anexar arquivos, apague as 3 linhas seguintes) }

Attachments.Clear;

{ Endereço do anexo }
Attachments.Add(´c:\diretorio\arquivo.ext´);

end;

{ Manda o e-mail }
NMSMTP1.SendMail;
{ Disconecta do servidor }
NMSMTP1.Disconnect;
end;


Pronto! É só fazer as adaptações necessárias e você terá envio de e-mails em sua aplicação.

Observações:
Para enviar o mesmo e-mail para vários destinatário de uma só vez basta adicionar os endereços de e-mails de todos os destinatários em NMSMTP1.PostMessage.ToAddress.


Responder

16/04/2014

Everton Santos

ESTA FUNCAO ENVIA E-MAIL COM UM ANEXO para VARIOS DESTINATARIOS (NAO IMPORTA SE O PARAMETRO VIER SEPARADO POR VIRGULA OU PONTO-VIRGULA)
A ROTINA MONTA DESTINATARIOS CUIDA DISSO. E VAI DIRETO PARA A CAIXA DE SAIDA DO OUTLOOK


function MontaDestinatariosEmail(Emails:String) : TStringList;
var
Lista : TStringList;
begin
Lista := TStringList.Create;
Lista.Clear;
Emails := ReplaceStr(Emails,',',';');
if POS(';',Emails) = 0 then
Lista.Add(Copy(Emails,1,Length(Emails))) // NESTE CASO TEM SÓ UM E_MAIL
else
ExtractStrings([';'],[' '],pchar(Emails),Lista);
result := Lista;
end;

function EnviaEmailOutlook(Destinatarios,Anexo,Assunto,Texto : String) : Boolean;
const olMailItem = 0;
var
Outlook: OLEVariant;
MailItem: Variant;
i : Integer;
wDestinatarios : TStringList;
begin
try
Outlook := GetActiveOleObject('Outlook.Application') ;
except
Outlook := CreateOleObject('Outlook.Application') ;
end;
MailItem := Outlook.CreateItem(olMailItem) ;
wDestinatarios := TStringList.Create;
wDestinatarios.Clear;
wDestinatarios := MontaDestinatariosEmail(Destinatarios);
for i:=0 to wDestinatarios.Count-1 do
begin
MailItem.Recipients.Add(wDestinatarios[i]) ;
end;
MailItem.Subject := Assunto;

MailItem.Body := Texto;
if FileExists(Anexo) then
MailItem.Attachments.Add(Anexo) ;
MailItem.Send;
VarClear(Outlook);
Result := True;
end;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar