Selecao DevMedia QUERO SER PRIME

Fórum Enviar e-mail automaticamente ... #347298

13/10/2007

0

Olá amigos,

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

Francisco.riva1

Responder

Posts

13/10/2007

Rm

Talvez para começar a responder tua pergunta...

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


Responder

Gostei + 0

14/10/2007

Francisco.riva1

Olá RM,

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.


Responder

Gostei + 0

14/10/2007

Rm

Pode ser a definição do host tipo

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


Responder

Gostei + 0

15/10/2007

Massuda

Socket Error # 11004
Basicamente é o que o RM escreveu sobre o nome do host.

Esse erro significa que você informou um nome de host que parece ser válido mas não corresponde a um IP conhecido.


Responder

Gostei + 0

15/10/2007

Francisco.riva1

Olá amigos,

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.


Responder

Gostei + 0

15/10/2007

Powerlog Tecnologia

Colega, veja se esse post te ajuda:

http://forum.devmedia.com.br/viewtopic.php?t=82873&highlight=mkmail


Responder

Gostei + 0

15/10/2007

Massuda

devo estar com problema na autenticação certo ? (Username e Password do componente idSMTP).
Para fazer login, mude a propriedade [b:6930f3f4b2]TIdSMTP.AuthType[/b:6930f3f4b2] para [b:6930f3f4b2]atLogin[/b:6930f3f4b2].


Responder

Gostei + 0

15/10/2007

Francisco.riva1

Olá amigos,

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.


Responder

Gostei + 0

15/10/2007

Massuda

<usuario@ig.com.br> Sender Address rejected: Access denied
O servidor SMTP está reclamando que o rementente é um email que não pertence ao domínio do servidor SMTP. No seu caso, o servidor é do Terra, mas o rementente é do iG. Isso é feito para impedir abusos por parte dos usuários.


Responder

Gostei + 0

15/10/2007

Francisco.riva1

Olá Massuda,

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,


Responder

Gostei + 0

16/10/2007

Massuda

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. Significa nesse caso que o remetente (sender, from) tem que ser do mesmo domínio do servidor SMTP. Note que existem servidores que não reclamam disso, pois ou não se importam que você abuse do servidor ou fazem algum outro tipo de verificação.

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.


Responder

Gostei + 0

16/10/2007

Francisco.riva1

Só se existir alguma configuração adicional caso o domínio seja diferente ...

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.


Responder

Gostei + 0

16/10/2007

Massuda

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.

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.


Responder

Gostei + 0

16/10/2007

Francisco.riva1

Olá Massuda,

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.


Responder

Gostei + 0

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

Aceitar