Ajuda - Busca - Membros - Calendário
Versão Completa: E-mail - Resolvido
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
Vivendo&Aprendendo
Olá Galerinha

Necessito de um código que quando clico em um botão ele abra o Outlook mas já com um arquivo anexado.


Alexandre
Progr'amador
Olá Alexandre.
Tenta isso:

Declare a unit MAPI na cláusula uses

CODE
function TForm1.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;


E num button por exemplo:

CODE
EnviarEmailPadrao(remetente, destinatário,assunto,corpo_da_mensagem,arquivo_anexo,false);


Qualquer dúvida, posta ae, flw!!!

Abs. wink.gif
Vivendo&Aprendendo
Olá amigo

Vlw pela ajuda...

Mas,.... Sou um pouco inexperiente nessa área de envio de e-mail e um pouco em programação, entaum se for possível vc me explicar esse código ou enviar um menos complicado...

Esse código abre o Outlock ou envia pelo sistema mesmo...


Alexandre
Progr'amador
Olá Alexandre.
Ai vai um exemplo bem bacana que eu montei.

enviar e-mail para o outlook

qualquer dúvida posta ae falow!!!


Abs. wink.gif
Vivendo&Aprendendo
Vlw Amigão


Vou testar aki e posto a resposta neste post


QUE DEUS TE ABENÇOE


Alexandre
Vivendo&Aprendendo
Amigo

Testei aki o sistema e é o seguinte tentei enviar uma arquivo txt do e-mail aslalexandre@hotmail.com para o alexandre.lima@bertin.com.br e não enviou e nem deu erro.

O que pode ser??

Desculpe o tormento.

Alexandre
Progr'amador
Como assim?
Mais abriu o outlook, como o arquivo anexado e tudo mais?

Qual é a versão do seu delphi?
Vivendo&Aprendendo
Não abriu nem o Outlook e uso o Delphi 7.


Alexandre
Progr'amador
o problema pode ser a configuração do seu outlook, sua conta ta configura corretamente lá?
é estranho cara ohmy.gif , deveria funcionar!!!
Vivendo&Aprendendo
Amigão vou reconfigurar o meu outlook e minha conta, e lhe dou a resposta neste post.... tem como fazer isso sem abrir o outlook....... Desculpe por abusar da sua vontade...



hehehehe



Alexandre
Progr'amador
bom vc quer dizer enviar direto do delphi.
no delphi 7 tem o componente IdSMTP na paleta Indy Clients.
so não sei como usar.

Só que já ouvi falar que todos os provedores requerem autenticação do servidor e com isso não daria certo tambem. (Não tenho certeza disso)

de qual forma não custa tentar né?

e quem souber usar esse componente (IdSMTP) galera, posta ae flw!!!

Abs.
Vivendo&Aprendendo
Kra

Agora ele abriu o outloook certinho mas não envia a mensagem para o destino que coloco da o seguinte erro:

Sua mensagem não foi recebida por um ou mais dos destinatários.

Assunto: teste
Enviada em: 26/10/2004 09:45

Não foi possível encontrar os seguintes destinatários:

'alexandre.lima@bertin.com.br' em 26/10/2004 09:45
Nenhuma de suas contas de email pôde enviar mensagem para este destinatário.


Será que o hotmail não aceita?


Alexandre
Progr'amador
é amigo, acredito que seja a questao da autenticação.

se voce escrever direto no outlook, envia normalmente?
Vivendo&Aprendendo
Kra

O outlook não esta conseguindo estabelecer uma conexão com o hotmail, tem como esse código verificar qual o gerenciador de mail que esta como padrão na máquina e utilizar ele?


Alexandre
Progr'amador
Cara o problema é Outlook x Hotmail.
O Hotmail usa servidor de e-mail HTTP e não o POP3, e no outlook num tem essa opção (ou não achei), fiz um teste aki no Outlook Express e ele envia normalmente, só que eu num entendo esse negócio direito naum. sad.gif
Pra usar o Outlook vc tinha que usar outro provedor.

Abs.
Vivendo&Aprendendo
Amigão esse problema já esta resolvido pois o sindicato no qual estou desenvovendo esta aplicação forneceu e-mail para todos os escritórios que irão utilizar esse sistama e o mail usa POP3, agora só mais uma dívida que postei no post anterior tem como o sistema verificar qual o gerenciador de mail padrão do computador e usar ele tipo assim outlook ou incredimail?

Não fica bravo não sou perguntador mesmo.....hehehehe


Alexandre
Progr'amador
QUOTE (Vivendo&Aprendendo @ Oct 26 2004, 11:49 AM)
Não fica bravo não sou perguntador mesmo.....hehehehe

Olá Alexandre.

Num esqueta com isso não cara, afinal esse forum é pra isso mesmo, eu fasso isso por prazer mesmo! flw!!! biggrin.gif

Com relação a sua pergunta, infelizmente sad.gif eu ainda num sei não cara, mas sempre é bom agente aprender, por isso vou pesquisar sobre esse assunto, e se encontrar alguma coisa eu posto aki, e se alguem souber POSTA ae galera.

Abs. wink.gif
Vivendo&Aprendendo
Vlw Amigão


A vc foi de enorme ajuda para mim.... e eu vou pesquisar sobre aquilo tb e se encontrar posto e quem souber posta ai para nós...........vlw


Vou testar com o POP3 e te digo se deu certo..


qual o seu mail???

Alexandre
Progr'amador
Ae

elienaicm@ig.com.br

Ate+
Vivendo&Aprendendo
Kra vlw pela ajuda o código que vc me passou deu certinho, manda de qualquer servidor para qualquer servidor...



Mais uma vez Obrigado.... Vcs do forum são demais


Vc deve voltar para a equipe de MODERADORES o mais rápido possível vc e o CAPABLANCA são muito bons nisso... estou aprendendo muito com vcs dois.


Vlw


Alexandre - Vivendo&Aprendendo
Progr'amador
Valeu alexandre, pela força.

Obrigado. wink.gif

Então, Resolvido...
Vivendo&Aprendendo
Sim kra resolvido....


Vlw pela ajuda e sempre que eu precisar eu te procuro hehehehehe


Flw
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.