Fórum Enviar e-mail automaticamente ... #347298
13/10/2007
0
Não tenho conhecimento de como funcionam os SMTP´s, MAPI´s, etc ...
Mas gostaria que minha aplicação me enviasse, automaticamente, um e-mail em caso de erros críticos.
Tem alguma forma simples de enviar e-mail automaticamente pelo Delphi (e-mail´s simples só contendo texto) para minha conta de e-mail ?
Ps. Uso o Delphi 7.
Obrigado,
Abraços.
Francisco.riva1
Curtir tópico
+ 0Posts
13/10/2007
Rm
Para mandar email segue dica que adaptei e usei com sucesso para enviar email com anexo (não é teu caso) pdf gerado por power PDF.
Pode adaptar e colocar para ser executada nas exceções .Falta ver como pegar o texto da exceção.
Espero que ajude..
No Delphi crie um novo projeto.
Salve a Unit com o nome UEmail e o projeto como Email.
Utilize os seguintes componentes:
3 Labels:
Altere as propriedades Caption respectivamente para: (Para, Assunto, Mensagem)
2 Edits
Altere as propriedades Name respectivamente para:(edtPara, edtAssunto);
Apague o conteúdo das propriedades Text;
1 ListBox
Altere a propriedade Name para:(lbxAnexos)
1 Componente Memo
Altere a propriedade Name para:(mmMensagem);
Apague o conteúdo da propriedade lines.
3 Componentes Bitbtn
Altere as propriedades Caption respectivamente para:(Anexar,Enviar,Fechar)
Altere as propriedades Name respectivamente para:(btAnexar,btEnviar,btFechar)
Agora insira um componente OpenDialog da palheta Dialogs
Altere a propriedade Name para:(odAnexos)
Insira um componente IdMessage, da palhete Indy Misc
Configure a propriedades From|Address com o email do remetente e From|Name com o
nome do remetente
Altere a propriedade Name para:(IdMessage)
Insira um componente IdSMTP da palheta IndyClients
Configure as propriedades Host com o endereço IP ou o DNS do servidor de email,
por exemplo: smtp.uol.com.br
Configure as propriedades Password e Username, para se autenticar no servidor,
caso seja necessário.
Altere a propriedade name para:(IdSMTP)
Agora vamos aos códigos:
No evento onclick do botão btAnexos:
procedure TForm1.btAnexarClick(Sender: Tobject);
begin
if odAnexos.Execute then
lbxAnexos.Items.Add(odAnexos.FileName);
end;
No evento onclick do botão btFechar:
procedure TForm1.btFecharClick(Sender: Tobject);
begin
Application.Terminate;
end;
No evento onclick do botão btEnviar:
procedure TForm1.btEnviarClick(Sender: TObject);
var Anexo : Integer;
begin
IdMessage.Recipients.EMailAddresses := edtPara.Text;
IdMessage.Subject := edtAssunto.Text;
IdMessage.Body := mmMensagem.Lines;
//Manipulando os Anexos
for Anexo := 0 to lbxAnexos.Items.Count-1 do
TIdAttachment.Create(idmessage.MessageParts, TFileName(lbxAnexos.Items.Strings[Anexo]));
IdSMTP.Connect;
try
IdSMTP.Send(IdMessage);
finally
IdSMTP.Disconnect;
end;
Application.MessageBox(´Email enviado com sucesso!´, ´Confirmação´,
MB_ICONINFORMATION + MB_OK);
end;
Valeu, até a próxima.
Alessandro Martarello
Fim da dica.
Saudações RM
Gostei + 0
14/10/2007
Francisco.riva1
A dica ajudou sim, mas ainda não consegui enviar o e-mail ...
Deu o seguinte erro: Socket Error # 11004, sabe o que pode ser ?
Abraços.
Gostei + 0
14/10/2007
Rm
smtp.nho.terra.com.br
revise o smtp de sua conta e coloque nas propriedades do componente.
Revise user e senha também
É o que me ocorre agora.
SDS/RM
Gostei + 0
15/10/2007
Massuda
Esse erro significa que você informou um nome de host que parece ser válido mas não corresponde a um IP conhecido.
Gostei + 0
15/10/2007
Francisco.riva1
Realmente eu tinha errado ao digitar o nome do Host do componente idSMTP, agora acertei e apareceu mais um erro vejam:
Must Authenticate!
devo estar com problema na autenticação certo ?
(Username e Password do componente idSMTP).
ps. peguei Username e Password de Outlook->ferramentas->contas->aba e-mail->propriedades->servidores->servidor de entrada de e-mails (nome da conta e senha)
é isso mesmo ?
Parecia muito simples enviar e-mail ... :(
Abraços,
Obrigado pela atenção.
Gostei + 0
15/10/2007
Powerlog Tecnologia
http://forum.devmedia.com.br/viewtopic.php?t=82873&highlight=mkmail
Gostei + 0
15/10/2007
Massuda
Gostei + 0
15/10/2007
Francisco.riva1
Muito obrigado pela paciência de todos ... agora funcionou ... o e-mail é enviado!
Vejam as propriedades principais que usei para enviar e-mail para o terra (utilizando o componente Indy presente no delphi 7):
No componente idSMTP:
AuthType = atLogin
Host = smtp.sjp.terra.com.br
Password = senha
Usuario = usuario
No componente idMessage:
Recipients.EMailAddresses := ´usuario@terra.com.br´;
From -> Address = usuario@terra.com.br
From -> Name = nome do usuario
PS. Interessante é que se no From -> Address (Remetente), coloco um e-mail diferente do destino, tipo: usuario@ig.com.br dá o seguinte erro:
<usuario@ig.com.br> Sender Address rejected: Access denied
Só funcionou com: From->Address = Recipients.EMailAddresses
(ou seja, Remetente = Destino)
Se quiserem resolver mais essa :(
Mas para o que precisava esta funcionando blz :)
Obrigado a todos.
Gostei + 0
15/10/2007
Massuda
Gostei + 0
15/10/2007
Francisco.riva1
Isso significa que remetente e destino tem que ser do mesmo domínio do servidor SMTP (não necessariamente ter endereço idêntico). :)
Não seria natural o e-mail ter um remetente independente do destino (não importando se é terra, ig, uol, etc ... já que no caso do remetente apenas estar informando quem esta enviando o e-mail) ?
Abraços,
Gostei + 0
16/10/2007
Massuda
Claro, pode ser que o administrador do seu servidor SMTP tenha imposto essa condição. Isso é relativamente comum, embora eu não espere que isso ocorra num servidor ´público´ como é o do Terra.
Gostei + 0
16/10/2007
Francisco.riva1
Caso contrário, existe essa restrição no terra (smtp.sjp.terra.com.br), pois a única coisa que mudo é o From -> Address de usuario@terra.com.br (que funciona) para usuario@ig.com.br (que dá msg de advertência). :(
Abraços,
Francisco.
Gostei + 0
16/10/2007
Massuda
No seu caso, o servidor SMTP não vai deixar você enviar um email fingindo ser usuário do iG. Se você quer que qualquer resposta ao seu email vá para o iG, use a propriedade TIdMessage.ReplyTo.
Gostei + 0
16/10/2007
Francisco.riva1
Agora que conseguiu entender o que vinha tentando explicar :( ...
´O que eu disse é que geralmente o remetente/from tem que ser do mesmo domínio do servidor SMTP, mas o destinatário/to pode ser qualquer um.´
Deixei o terra como remetente e coloquei o ig como destinatário, só para testar ... e funcionou !
Agora sim, entendido e funcionando :)
Muito obrigado pela atenção.
Abraços.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)