Como enviar e-mail com autenticação????????
COMO ENVIAR e-mail com autenticação????????
Olá pessoal tentei montar um aplicativo para enviar email mas retorna
um erro pois a conta exige autenticação, uso o yahoo, delphi6
Obrigado
Olá pessoal tentei montar um aplicativo para enviar email mas retorna
um erro pois a conta exige autenticação, uso o yahoo, delphi6
Obrigado
Infohelp
Curtidas 0
Respostas
Radames
05/05/2004
Caro amigo,
já tive este problema e resolvi com o componente WinshoesSMTP
o NMSMTP do delphi não autentica.
obs.procure na internet é fácil de encontrar pelo nome.
um abraço,
Jorge Radamés
Analista de sistemas
informatica@clinicacpi.com.br
já tive este problema e resolvi com o componente WinshoesSMTP
o NMSMTP do delphi não autentica.
obs.procure na internet é fácil de encontrar pelo nome.
um abraço,
Jorge Radamés
Analista de sistemas
informatica@clinicacpi.com.br
GOSTEI 0
Fabio.hc
05/05/2004
[url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=16047&start=0&postdays=0&postorder=asc&highlight=email]Dê uma olhada neste tópico. (clique aqui)[/url]
GOSTEI 0
Emerson Nascimento
05/05/2004
O NMSMTP autentica sim.
o que você precisa fazer é receber e depois enviar.
ao receber você manda o nome de usuário e senha (o que faz a autenticação). depois é só receber, que já estará autenticado.
o que você precisa fazer é receber e depois enviar.
ao receber você manda o nome de usuário e senha (o que faz a autenticação). depois é só receber, que já estará autenticado.
GOSTEI 0
Emerson Nascimento
05/05/2004
[color=blue:6024c65fd8][b:6024c65fd8]Retificando e exemplificando:[/b:6024c65fd8][/color:6024c65fd8]
Para autenticar você precisa receber antes.
Instancie um componente NMPOP3 (se já não estiver instanciado).
NMPOP31.AttachFilePath := ´.´;
NMPOP31.DeleteOnRead := FALSE;
NMPOP31.ReportLevel := Status_Basic;
NMPOP31.TimeOut := 20000;
NMPOP31.Host := ´pop3.uol.com.br´;
NMPOP31.Port := 110;
NMPOP31.UserID := ´SeuLogin´;
NMPOP31.Password := ´SuaSenha´;
NMPOP31.Connect; // conecta e autentica.
if not NMPOP31.Connected then
begin
Alguma Mensagem...
end;
agora basta [b:6024c65fd8]enviar[/b:6024c65fd8] as mensagens com o NMSMTP que já estará autenticado.
creio que seja mais fácil do que trocar os componentes.
Para autenticar você precisa receber antes.
Instancie um componente NMPOP3 (se já não estiver instanciado).
NMPOP31.AttachFilePath := ´.´;
NMPOP31.DeleteOnRead := FALSE;
NMPOP31.ReportLevel := Status_Basic;
NMPOP31.TimeOut := 20000;
NMPOP31.Host := ´pop3.uol.com.br´;
NMPOP31.Port := 110;
NMPOP31.UserID := ´SeuLogin´;
NMPOP31.Password := ´SuaSenha´;
NMPOP31.Connect; // conecta e autentica.
if not NMPOP31.Connected then
begin
Alguma Mensagem...
end;
agora basta [b:6024c65fd8]enviar[/b:6024c65fd8] as mensagens com o NMSMTP que já estará autenticado.
creio que seja mais fácil do que trocar os componentes.
GOSTEI 0
Infohelp
05/05/2004
Pode me passar um exemplo!!
Obrigado!!!
Obrigado!!!
GOSTEI 0
Emerson Nascimento
05/05/2004
Coloque um componente NMPOP3 antes dos comandos do NMSMTP:
//Processo de reconhecimento no POP3 do UOL
NMPOP31.AttachFilePath := ´.´;
NMPOP31.DeleteOnRead := FALSE;
NMPOP31.ReportLevel := Status_Basic;
NMPOP31.TimeOut := 20000;
NMPOP31.Host := ´pop3.uol.com.br´; // seu servidor POP
NMPOP31.Port := 110;
NMPOP31.UserID := ´SeuLogin´;
NMPOP31.Password := ´SuaSenha´;
NMPOP31.Connect;
//Conexão não feita ele sai
//Conexão feita ele desconecta e prossegue
if not NMPOP31.Connected then exit else NMPOP31.Disconnect;
//Prosseguindo, ele agora tenta se conectar ao SMTP do UOL
NMSMTP1.ClearParams := TRUE;
NMSMTP1.Host := ´smtp.uol.com.br´ // seu servidor SMTP
NMSMTP1.Port := 25;
NMSMTP1.UserID := ´SeuLogin´
NMSMTP1.Connect;
//Conexão não feita ele sai
//Conexão feita ele prossegue
If not NMSMTP1.Connected then exit;
//Processo de envio
NMSMTP1.PostMessage.Body.Clear;
NMSMTP1.PostMessage.FromAddress := ´cliente@provedor.com.br´ // seu email
NMSMTP1.PostMessage.FromName := ´Seu Nome Completo´
NMSMTP1.PostMessage.Body.Add(´Teste de envio de email´);
NMSMTP1.PostMessage.Subject := ´Teste de Envio´;
NMSMTP1.PostMessage.ToAddress.Clear;
NMSMTP1.PostMessage.ToAddress.Add(´destino@provedordestino.com.br´); // email destino
NMSMTP1.PostMessage.ToAddress.Add(´destino2@provedordestino2.com.br´); // email destino
NMSMTP1.SendMail; // envia o email
Depois de estabelecer a conexão com o POP3 do provedor o envio pelo SMTP fica liberado, não importando em que provedor esteja conectado.
Nesse caso está sendo utilizado o POP3 e SMTP do UOL, porém vc pode simplesmente criar um e-mail no IG, IEG ou outro serviço de e-mail grátis e pronto é só utilizar a dica!
Note que nem todos os emails grátis têm serviço POP3.
[b:d8ef4e81dd]essa dica foi retirada do Delphi Dicas DTDelphi 2.6[/b:d8ef4e81dd]
//Processo de reconhecimento no POP3 do UOL
NMPOP31.AttachFilePath := ´.´;
NMPOP31.DeleteOnRead := FALSE;
NMPOP31.ReportLevel := Status_Basic;
NMPOP31.TimeOut := 20000;
NMPOP31.Host := ´pop3.uol.com.br´; // seu servidor POP
NMPOP31.Port := 110;
NMPOP31.UserID := ´SeuLogin´;
NMPOP31.Password := ´SuaSenha´;
NMPOP31.Connect;
//Conexão não feita ele sai
//Conexão feita ele desconecta e prossegue
if not NMPOP31.Connected then exit else NMPOP31.Disconnect;
//Prosseguindo, ele agora tenta se conectar ao SMTP do UOL
NMSMTP1.ClearParams := TRUE;
NMSMTP1.Host := ´smtp.uol.com.br´ // seu servidor SMTP
NMSMTP1.Port := 25;
NMSMTP1.UserID := ´SeuLogin´
NMSMTP1.Connect;
//Conexão não feita ele sai
//Conexão feita ele prossegue
If not NMSMTP1.Connected then exit;
//Processo de envio
NMSMTP1.PostMessage.Body.Clear;
NMSMTP1.PostMessage.FromAddress := ´cliente@provedor.com.br´ // seu email
NMSMTP1.PostMessage.FromName := ´Seu Nome Completo´
NMSMTP1.PostMessage.Body.Add(´Teste de envio de email´);
NMSMTP1.PostMessage.Subject := ´Teste de Envio´;
NMSMTP1.PostMessage.ToAddress.Clear;
NMSMTP1.PostMessage.ToAddress.Add(´destino@provedordestino.com.br´); // email destino
NMSMTP1.PostMessage.ToAddress.Add(´destino2@provedordestino2.com.br´); // email destino
NMSMTP1.SendMail; // envia o email
Depois de estabelecer a conexão com o POP3 do provedor o envio pelo SMTP fica liberado, não importando em que provedor esteja conectado.
Nesse caso está sendo utilizado o POP3 e SMTP do UOL, porém vc pode simplesmente criar um e-mail no IG, IEG ou outro serviço de e-mail grátis e pronto é só utilizar a dica!
Note que nem todos os emails grátis têm serviço POP3.
[b:d8ef4e81dd]essa dica foi retirada do Delphi Dicas DTDelphi 2.6[/b:d8ef4e81dd]
GOSTEI 0
Infohelp
05/05/2004
Authentication Failed!!!!! Range Check Error!!!!
me ajude!!!
ocorreu este erro, estou usando o yahoo veja:
procedure TForm1.Button1Click(Sender: TObject);
begin
//Processo de reconhecimento no POP3 do UOL
NMPOP31.AttachFilePath := ´.´;
NMPOP31.DeleteOnRead := FALSE;
NMPOP31.ReportLevel := Status_Basic;
NMPOP31.TimeOut := 20000;
NMPOP31.Host := ´pop.mail.yahoo.com.br´; // seu servidor POP
NMPOP31.Port := 110;
NMPOP31.UserID := ´seuemail@yahoo.com.br´;
NMPOP31.Password := ´suasenha´;
NMPOP31.Connect;
//Conexão não feita ele sai
//Conexão feita ele desconecta e prossegue
//if not NMPOP31.Connected then exit else NMPOP31.Disconnect;
//Prosseguindo, ele agora tenta se conectar ao SMTP do UOL
NMSMTP1.ClearParams := TRUE;
NMSMTP1.Host := ´smtp.mail.yahoo.com.br´; // seu servidor SMTP
NMSMTP1.Port := 25;
NMSMTP1.UserID := ´seuemail@yahoo.com.br´;
NMSMTP1.Connect;
//Conexão não feita ele sai
//Conexão feita ele prossegue
If not NMSMTP1.Connected then exit;
//Processo de envio
NMSMTP1.PostMessage.Body.Clear;
NMSMTP1.PostMessage.FromAddress := ´seuemail@yahoo.com.br´; // seu email
NMSMTP1.PostMessage.FromName := ´Infohelp!´;
NMSMTP1.PostMessage.Body.Add(´Teste de envio de email´);
NMSMTP1.PostMessage.Subject := ´Teste de Envio´;
NMSMTP1.PostMessage.ToAddress.Clear;
NMSMTP1.PostMessage.ToAddress.Add(´teste@bol.com.br´); // email destino
NMSMTP1.SendMail; // envia o email
end;
me ajude!!!
ocorreu este erro, estou usando o yahoo veja:
procedure TForm1.Button1Click(Sender: TObject);
begin
//Processo de reconhecimento no POP3 do UOL
NMPOP31.AttachFilePath := ´.´;
NMPOP31.DeleteOnRead := FALSE;
NMPOP31.ReportLevel := Status_Basic;
NMPOP31.TimeOut := 20000;
NMPOP31.Host := ´pop.mail.yahoo.com.br´; // seu servidor POP
NMPOP31.Port := 110;
NMPOP31.UserID := ´seuemail@yahoo.com.br´;
NMPOP31.Password := ´suasenha´;
NMPOP31.Connect;
//Conexão não feita ele sai
//Conexão feita ele desconecta e prossegue
//if not NMPOP31.Connected then exit else NMPOP31.Disconnect;
//Prosseguindo, ele agora tenta se conectar ao SMTP do UOL
NMSMTP1.ClearParams := TRUE;
NMSMTP1.Host := ´smtp.mail.yahoo.com.br´; // seu servidor SMTP
NMSMTP1.Port := 25;
NMSMTP1.UserID := ´seuemail@yahoo.com.br´;
NMSMTP1.Connect;
//Conexão não feita ele sai
//Conexão feita ele prossegue
If not NMSMTP1.Connected then exit;
//Processo de envio
NMSMTP1.PostMessage.Body.Clear;
NMSMTP1.PostMessage.FromAddress := ´seuemail@yahoo.com.br´; // seu email
NMSMTP1.PostMessage.FromName := ´Infohelp!´;
NMSMTP1.PostMessage.Body.Add(´Teste de envio de email´);
NMSMTP1.PostMessage.Subject := ´Teste de Envio´;
NMSMTP1.PostMessage.ToAddress.Clear;
NMSMTP1.PostMessage.ToAddress.Add(´teste@bol.com.br´); // email destino
NMSMTP1.SendMail; // envia o email
end;
GOSTEI 0
Infohelp
05/05/2004
Então alguem poderia me ajudar?????????????
GOSTEI 0
Nerdex
05/05/2004
// faz autenticacao antes de enviar a mensagem
idSMTP1.AuthenticationType := [color=red:f9d46e5950]atLogin[/color:f9d46e5950];
// idSMTP1.AuthenticationType := atNone;
if not idSMTP1.Connected then
idSMTP1.Connect;
try
idSMTP1.Send(Msg);
finally
idSMTP1.Disconnect;
end;
:D
//[color=red:f9d46e5950](Msg) é o nome do componente idMessage[/color:f9d46e5950]
:shock:
[u:f9d46e5950]Só mais uma dica[/u:f9d46e5950]:
Não é necessário que se use o componente POP, como vi aí acima, basta o idMessage e idSMTP, somente, mas se queres deixar sua aplicação mais pesada... a escolha é sua...
idSMTP1.AuthenticationType := [color=red:f9d46e5950]atLogin[/color:f9d46e5950];
// idSMTP1.AuthenticationType := atNone;
if not idSMTP1.Connected then
idSMTP1.Connect;
try
idSMTP1.Send(Msg);
finally
idSMTP1.Disconnect;
end;
:D
//[color=red:f9d46e5950](Msg) é o nome do componente idMessage[/color:f9d46e5950]
:shock:
[u:f9d46e5950]Só mais uma dica[/u:f9d46e5950]:
Não é necessário que se use o componente POP, como vi aí acima, basta o idMessage e idSMTP, somente, mas se queres deixar sua aplicação mais pesada... a escolha é sua...
GOSTEI 0
Infohelp
05/05/2004
mas funcioana em delphi 6?
poderia me passar exatamente um exemplo e quais componentes adicionar?
Obrigado
poderia me passar exatamente um exemplo e quais componentes adicionar?
Obrigado
GOSTEI 0
Fabio.hc
05/05/2004
Eu troquei o Fastnet pelo Indy.
No Indy consegui enviar um e-mail com uma conta que requer autenticação.
Enviando emails usando o Indy [url=http://lib.seven.com.br/ampliar.asp?codcat=1&codartigo=477](Clique aqui)[/url].
e para autenticar.
{ Senha do usuário }
IdSMTP1.Password := ´senha´;
{ Autenticação }
IdSMTP1.AuthenticationType:=atLogin;GOSTEI 0
Infohelp
05/05/2004
Então, tudo bem certinho, mas simplifiquei, o que preciso é inserir um listbox ou um memo não sei qual o mais indicado para escrever um texto no email, veja que o destino e o assunto eu coloquei com edit.text mas como faço no IdMsgSend.Body.Text(texto do email) veja que no meu projeto abaixo falta isso
procedure TForm1.Button1Click(Sender: TObject);
var
begin
// Mensagem
IdMsgSend.Subject := edit2.Text;
IdMsgSend.Body.Text := ´?????????????????´;
// Remetente
idMsgSend.From.Address := ´meuemail@yahoo.com.br´;
idMsgSend.From.Name := ´infohelp´;
IdMsgSend.ReplyTo.EMailAddresses := ´meuemail@yahoo.com.br´;
// Destinatario
IdMsgSend.Recipients.EMailAddresses := edit1.text;
// Copias
//idMsgSend.CCList.EMailAddresses := ´teste@teste.com.br, teste@terra.com.br´;
// Copias Ocultas
//idMsgSend.BccList.EMailAddresses := ´teste@teste.com.br; teste@terra.com.br´;
// Anexa um arquivo
TIdAttachment.Create(idMsgSend.MessageParts,´e:\lixo\envia_email_ind\google.gif´);
// TIdAttachment.Create(idMsgSend.MessageParts,´c:\config.sys´);
// Autenticacao - Use apenas quando o servidor exigir
SMTP.AuthenticationType := atLogin;
SMTP.UserId := ´meulogin´;
SMTP.Password := ´minhasenha´;
// Dados do Servidor
SMTP.Host := ´smtp.mail.yahoo.com.br´;
SMTP.Port := 25;
SMTP.Connect;
try
SMTP.Send(IdMsgSend);
finally
SMTP.Disconnect;
end;
end;
muito obrigado pessoal!!
procedure TForm1.Button1Click(Sender: TObject);
var
begin
// Mensagem
IdMsgSend.Subject := edit2.Text;
IdMsgSend.Body.Text := ´?????????????????´;
// Remetente
idMsgSend.From.Address := ´meuemail@yahoo.com.br´;
idMsgSend.From.Name := ´infohelp´;
IdMsgSend.ReplyTo.EMailAddresses := ´meuemail@yahoo.com.br´;
// Destinatario
IdMsgSend.Recipients.EMailAddresses := edit1.text;
// Copias
//idMsgSend.CCList.EMailAddresses := ´teste@teste.com.br, teste@terra.com.br´;
// Copias Ocultas
//idMsgSend.BccList.EMailAddresses := ´teste@teste.com.br; teste@terra.com.br´;
// Anexa um arquivo
TIdAttachment.Create(idMsgSend.MessageParts,´e:\lixo\envia_email_ind\google.gif´);
// TIdAttachment.Create(idMsgSend.MessageParts,´c:\config.sys´);
// Autenticacao - Use apenas quando o servidor exigir
SMTP.AuthenticationType := atLogin;
SMTP.UserId := ´meulogin´;
SMTP.Password := ´minhasenha´;
// Dados do Servidor
SMTP.Host := ´smtp.mail.yahoo.com.br´;
SMTP.Port := 25;
SMTP.Connect;
try
SMTP.Send(IdMsgSend);
finally
SMTP.Disconnect;
end;
end;
muito obrigado pessoal!!
GOSTEI 0
Infohelp
05/05/2004
Então, tudo bem certinho, mas simplifiquei, o que preciso é inserir um listbox ou um memo não sei qual o mais indicado para escrever um texto no email, veja que o destino e o assunto eu coloquei com edit.text mas como faço no IdMsgSend.Body.Text(texto do email) veja que no meu projeto abaixo falta isso
procedure TForm1.Button1Click(Sender: TObject);
var
begin
// Mensagem
IdMsgSend.Subject := edit2.Text;
IdMsgSend.Body.Text := ´?????????????????´;
// Remetente
idMsgSend.From.Address := ´meuemail@yahoo.com.br´;
idMsgSend.From.Name := ´infohelp´;
IdMsgSend.ReplyTo.EMailAddresses := ´meuemail@yahoo.com.br´;
// Destinatario
IdMsgSend.Recipients.EMailAddresses := edit1.text;
// Copias
//idMsgSend.CCList.EMailAddresses := ´teste@teste.com.br, teste@terra.com.br´;
// Copias Ocultas
//idMsgSend.BccList.EMailAddresses := ´teste@teste.com.br; teste@terra.com.br´;
// Anexa um arquivo
TIdAttachment.Create(idMsgSend.MessageParts,´e:\lixo\envia_email_ind\google.gif´);
// TIdAttachment.Create(idMsgSend.MessageParts,´c:\config.sys´);
// Autenticacao - Use apenas quando o servidor exigir
SMTP.AuthenticationType := atLogin;
SMTP.UserId := ´meulogin´;
SMTP.Password := ´minhasenha´;
// Dados do Servidor
SMTP.Host := ´smtp.mail.yahoo.com.br´;
SMTP.Port := 25;
SMTP.Connect;
try
SMTP.Send(IdMsgSend);
finally
SMTP.Disconnect;
end;
end;
muito obrigado pessoal!!
procedure TForm1.Button1Click(Sender: TObject);
var
begin
// Mensagem
IdMsgSend.Subject := edit2.Text;
IdMsgSend.Body.Text := ´?????????????????´;
// Remetente
idMsgSend.From.Address := ´meuemail@yahoo.com.br´;
idMsgSend.From.Name := ´infohelp´;
IdMsgSend.ReplyTo.EMailAddresses := ´meuemail@yahoo.com.br´;
// Destinatario
IdMsgSend.Recipients.EMailAddresses := edit1.text;
// Copias
//idMsgSend.CCList.EMailAddresses := ´teste@teste.com.br, teste@terra.com.br´;
// Copias Ocultas
//idMsgSend.BccList.EMailAddresses := ´teste@teste.com.br; teste@terra.com.br´;
// Anexa um arquivo
TIdAttachment.Create(idMsgSend.MessageParts,´e:\lixo\envia_email_ind\google.gif´);
// TIdAttachment.Create(idMsgSend.MessageParts,´c:\config.sys´);
// Autenticacao - Use apenas quando o servidor exigir
SMTP.AuthenticationType := atLogin;
SMTP.UserId := ´meulogin´;
SMTP.Password := ´minhasenha´;
// Dados do Servidor
SMTP.Host := ´smtp.mail.yahoo.com.br´;
SMTP.Port := 25;
SMTP.Connect;
try
SMTP.Send(IdMsgSend);
finally
SMTP.Disconnect;
end;
end;
muito obrigado pessoal!!
GOSTEI 0
Fabio.hc
05/05/2004
// Mensagem
IdMsgSend.Subject := edit2.Text;
IdMsgSend.Body.Text := ´?????????????????´;
Vc pode usar um memo.
[b:e092ab7985]IdMsgSend.Body:=Memo1.Lines;[/b:e092ab7985]
IdMsgSend.Subject := edit2.Text;
IdMsgSend.Body.Text := ´?????????????????´;
Vc pode usar um memo.
[b:e092ab7985]IdMsgSend.Body:=Memo1.Lines;[/b:e092ab7985]
GOSTEI 0
Nerdex
05/05/2004
Fábio !! - seu maçaneta de Kombi...
é assim:
IdMsgSend.Body.Add(Memo.Lines.Text);
é assim:
IdMsgSend.Body.Add(Memo.Lines.Text);
GOSTEI 0
Fabio.hc
05/05/2004
Fábio !! - seu maçaneta de Kombi...
é assim:
IdMsgSend.Body.Add(Memo.Lines.Text);
Ou assim:
IdMsgSend.Body:=Memo1.Lines;
Ou assim:
IdMsgSend.Body.Text:=Memo1.Lines.Text;
Ou assim:
IdMsgSend.BodyBody.Assign(Memo1.Lines);
GOSTEI 0
Fabio.hc
05/05/2004
Correção:
Ou assim:
IdMsgSend.Body:=Memo1.Lines;
Ou assim:
IdMsgSend.Body.Text:=Memo1.Lines.Text;
Ou assim:
IdMsgSend.Body.Assign(Memo1.Lines);
Fábio !! - seu maçaneta de Kombi...
é assim:
IdMsgSend.Body.Add(Memo.Lines.Text);
Ou assim:
IdMsgSend.Body:=Memo1.Lines;
Ou assim:
IdMsgSend.Body.Text:=Memo1.Lines.Text;
Ou assim:
IdMsgSend.Body.Assign(Memo1.Lines);
GOSTEI 0