Jump to content

[Ajuda] Envio de e-mail


CanonTG
 Share

Recommended Posts

Boas, estou a usar um TIdMessage e um TIdSMTP.

Mas não me envia e-mails, alguem sabe o que se passa? ou alguém me pode dar outra sugestão de envio de e-mails.



procedure TForm3.Button1Click(Sender: TObject);
begin
with idSMTP do
 begin
	Host:='smtp.gmail.com';
	Port:=465;
	idSMTP.UseTLS:= true;
	Username:='meuEmail@gmail.com';
	Password:='minhaPass';
	Connect;


 end;

with idMessage do
 begin
 Body.Add('');
 Body.Add('LOGIN: ' );
 Body.Add('SENHA: ' );
 Body.Add('');
	From.Address:='meuEmail@gmail.com'; // E-mail da autenticação
	From.Name:='S d'; // Nome de quem está enviando (remetente)
	Recipients.EMailAddresses:= 'md@gmail.com'; // E-mail que vai receber as informações
	Subject :='dsdsds';
	ContentType:='text/html';
 end;
try
idSMTP.Send(idMessage);
finally
idSMTP.Disconnect;
end;

end;

Edited by CanonTG
Link to comment
Share on other sites

O método varia um bocado entre versões da suite Indy usadas...

Mas é mais ou menos isto:

Para enviares mail pelo gmail (ou outro com SSL), tens algumas configurações extra:

1. idSMTP.AuthType deve ser = a satDefault

2. Adicionas ao form um componente de SSL: TIdSSLIOHandlerSocketOpenSSL (Ex. mailSSL : TIdSSLIOHandlerSocketOpenSSL;)

a) Defines a opção Destination = Host + : + Port (Exemplo, mailSSL.Destination:='smtp.gmail.com:465';

b) Defines o host e o port do componente SSL

c) Defines a propriedade ioHandler do idSMTP para o teu componente para o componente SSL (Ex.: idSMTP.ioHandler:=mailSSL)

Verifica se a tua versão suporta essas definições.

Diz alguma coisa se precisares...

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Eu mudei o código e envia.

Se enviar só um e-mail não ha problema vou enviar o segundo e da o seguinte erro: socket error 10038


var
  idSMTP1: TIdSMTP;
  idmessage1: TIdMessage;
  textomsg: TidText;
  IdSSL: TIdSSLIOHandlerSocketOpenSSL;
begin
  try
  idSMTP1 := TIdSMTP.create(nil);
  idmessage1 := TIdMessage.create(nil);

  // configura servidor SMTP
  idSMTP1.Host := 'smtp.gmail.com';
  idSMTP1.Username := 'c@gmail.com';
  idSMTP1.Password := 'senha';
  idSMTP1.ConnectTimeout := 20000;

  // configurações adicionais servidor SMTP com autenticação
  with idSMTP1 do
  begin
	 IdSSL := nil;
	 try
		port := 465;
		IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create( nil );
		IdSMTP1.IOHandler := IdSSL;
		UseTLS := utUseImplicitTLS;
	 except
		on E: Exception do
		begin
		   IOHandler := TIdIOHandler.MakeDefaultIOHandler( nil );
		   UseTLS := utNoTLSSupport;
		end;
	 end;
	 if Assigned(IdSSL) then
	 begin
		IdSSL.SSLOptions.Method := sslvSSLv3;
		IdSSL.SSLOptions.Mode := sslmClient;
	 end;
  end;
  idSMTP1.AuthType := IdSMTP.satDefault;

  // configurando mensagem
  idmessage1.Clear;
  idmessage1.CharSet:='iso-8859-1';
  idmessage1.Encoding := MeMIME;
  idmessage1.ContentType:='multipart/related'   ;
  idmessage1.from.address := 'c@gmail.com';  // e-mail do remetente

  // e-mail destinatario									  |
  idmessage1.recipients.emailaddresses := 'ma0@gmail.com';

  // Assunto (titulo E-mail)
  idmessage1.subject := 'Teste de SSL gmail';

  // Corpo da Mensagem (use aqui um HTML ou texto que deseja enviar
  // juntamente com a mensagem.
  textomsg := TIdText.Create(idmessage1.MessageParts);
  textomsg.Body.Text := 'Prezado Cliente, este é um teste de email com SSL no gmail';
  textomsg.ContentType := 'text/html';

  idSMTP1.Connect;
  idSMTP1.Authenticate;
  idSMTP1.send(idmessage1);
  idSMTP1.Disconnect;

  ShowMessage('Sucesso!');
  finally
  idmessage1.Free;
  idSSL.Free;
  IdSMTP1.Free;
  end;
end;

Edited by CanonTG
Link to comment
Share on other sites

Faz debug e tenta perceber em que linha te dá esse erro.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.