Enviar Email com Delphi

Delphi

27/08/2013

Boa tarde a todos !!!

Amigos ja tentei de tudo, pesquisei aqui no forum na internet e não conseguir enviar Email com delphi usando componentes nativos do proprio delphi ou componentes de terceiros. Se alguém poder me ajuda desde ja agradeço.
Izaias Bezerra

Izaias Bezerra

Curtidas 0

Respostas

Ewerton Rodrigues

Ewerton Rodrigues

27/08/2013

var
  percor, PegaTam: integer;
begin

  // Pega o Tamanho do Texto para ver até onde o i pode ir
  PegaTam := Texto.Count;
  PegaTam := PegaTam - 1;

  // ShowMessage(IntToStr(Texto.Count));

  for percor := 0 to Texto.Count do
   begin
      // ShowMessage('O conteúdo original da linha ' + IntToStr(i) + ' é ' + Texto[i]);      
      if i < PegaTam then
      begin
        Inc(i);
      end;
   end;

  IdMessage.Recipients.EMailAddresses := LerRecebe_EmailErros;
  IdMessage.Subject :=  'Erro ' + FormPrincipal.Caption;

  //------------------------------------------------------------
  // Aqui adiciona os texto que vão ir junto com o email de erro
  //------------------------------------------------------------
  Texto.Add(ONDE_DEU_ERRO);
  // Só para dá um espaço
  OQUE_ESTA_FAZENDO := #13 + OQUE_ESTA_FAZENDO;
  Texto.Add(OQUE_ESTA_FAZENDO);
  // PegaStatus_dos_Bancos();
  // Texto.Add(COMO_ESTA_OS_BD);

  IdMessage.Body := Texto; 

  try
    TIdAttachmentFile.Create(IdMessage.MessageParts, TFileName(Caminho_APPDATA_Agente + '.......txt'));
  except
    // Não acontece NADA
  end;
  try
    TIdAttachmentFile.Create(IdMessage.MessageParts, TFileName('........'));
  except
    // Não acontece NADA
  end;

  IdSMTP.Connect;

  if LerVerMSG = True then
  begin
    ShowMessage('Conectou no email');
  end;

  try
    IdSMTP.Send(IdMessage);
  finally
    IdSMTP.Disconnect;
  end;

  if LerVerMSG = True then
  begin
    Application.MessageBox('Email enviado com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK);
  end;


Este é o código que eu uso para enviar o EMAIL onde está ...... é de propósito pois é informações minhas

O SEGREDO está no componentes idSMTP e idMESSAGE nativo do delphi mesmo é só pesquisar

até mais.
GOSTEI 0
Ewerton Rodrigues

Ewerton Rodrigues

27/08/2013

var
  percor, PegaTam: integer;
begin

  // Pega o Tamanho do Texto para ver até onde o i pode ir
  PegaTam := Texto.Count;
  PegaTam := PegaTam - 1;

  // ShowMessage(IntToStr(Texto.Count));

  for percor := 0 to Texto.Count do
   begin
      // ShowMessage('O conteúdo original da linha ' + IntToStr(i) + ' é ' + Texto[i]);      
      if i < PegaTam then
      begin
        Inc(i);
      end;
   end;

  IdMessage.Recipients.EMailAddresses := LerRecebe_EmailErros;
  IdMessage.Subject :=  'Erro ' + FormPrincipal.Caption;

  //------------------------------------------------------------
  // Aqui adiciona os texto que vão ir junto com o email de erro
  //------------------------------------------------------------
  Texto.Add(ONDE_DEU_ERRO);
  // Só para dá um espaço
  OQUE_ESTA_FAZENDO := #13 + OQUE_ESTA_FAZENDO;
  Texto.Add(OQUE_ESTA_FAZENDO);
  // PegaStatus_dos_Bancos();
  // Texto.Add(COMO_ESTA_OS_BD);

  IdMessage.Body := Texto; 

  try
    TIdAttachmentFile.Create(IdMessage.MessageParts, TFileName(Caminho_APPDATA_Agente + '.......txt'));
  except
    // Não acontece NADA
  end;
  try
    TIdAttachmentFile.Create(IdMessage.MessageParts, TFileName('........'));
  except
    // Não acontece NADA
  end;

  IdSMTP.Connect;

  if LerVerMSG = True then
  begin
    ShowMessage('Conectou no email');
  end;

  try
    IdSMTP.Send(IdMessage);
  finally
    IdSMTP.Disconnect;
  end;

  if LerVerMSG = True then
  begin
    Application.MessageBox('Email enviado com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK);
  end;


Este é o código que eu uso para enviar o EMAIL onde está ...... é de propósito pois é informações minhas

O SEGREDO está no componentes idSMTP e idMESSAGE nativo do delphi mesmo é só pesquisar

até mais.


é uma rotina que envia os erros de uma aplicação por isto você vai ver muita coisa relacionado a erros
GOSTEI 0
Izaias Bezerra

Izaias Bezerra

27/08/2013

tenho um rotina parecida com sua, mais o meu Email do Gmail, usei esta configurações, mais não enviar de jeito nenhum
Host=smtp.gmail.com
Username=izaiasgomes@gmail.com
Password=********
Porta=465
GOSTEI 0
Ewerton Rodrigues

Ewerton Rodrigues

27/08/2013

tenho um rotina parecida com sua, mais o meu Email do Gmail, usei esta configurações, mais não enviar de jeito nenhum
Host=smtp.gmail.com
Username=izaiasgomes@gmail.com
Password=********
Porta=465


Eu também tentei usando vários servidor de EMAIL Mas na época me lembro que acabei usando uma conta minha do yahoo e deu certo
AO meu ver para o email do yahoo presta é o melhor rs pois funciona

se você tiver interesse o host do YAHOO é o seguinte
smtp.mail.yahoo.com.br


Até mais
GOSTEI 0
Ewerton Rodrigues

Ewerton Rodrigues

27/08/2013

tenho um rotina parecida com sua, mais o meu Email do Gmail, usei esta configurações, mais não enviar de jeito nenhum
Host=smtp.gmail.com
Username=izaiasgomes@gmail.com
Password=********
Porta=465


Eu também tentei usando vários servidor de EMAIL Mas na época me lembro que acabei usando uma conta minha do yahoo e deu certo
AO meu ver para o email do yahoo presta é o melhor rs pois funciona

se você tiver interesse o host do YAHOO é o seguinte
smtp.mail.yahoo.com.br


Até mais


e a PORT é a 587
GOSTEI 0
Izaias Bezerra

Izaias Bezerra

27/08/2013

vou testa com o Email da yahoo
GOSTEI 0
Izaias Bezerra

Izaias Bezerra

27/08/2013

tb não vai, chegar se o email for da yahoo tb
GOSTEI 0
Izaias Bezerra

Izaias Bezerra

27/08/2013

O meu Delhhi xe3 tem alguma coisa a ver
GOSTEI 0
Ewerton Rodrigues

Ewerton Rodrigues

27/08/2013

Amanhã vou dá uma olhadinha meus componentes lá para ver que não tem nada de diferente e te respondo
Qualquer eu não responder até de tarde responde aqui de novo pois ai eu recebo um email para eu lembrar ok.

Mas creio que a questão do Delphi não atrapalha
Sendo Indy 10
GOSTEI 0
Izaias Bezerra

Izaias Bezerra

27/08/2013

Ewerton vc conseguir ver
GOSTEI 0
Kelson Palharini

Kelson Palharini

27/08/2013

Alguns e-mails utilizam segurança SSL/TSL que o componente idSMTP sozinho não reconhece. Para isso você tem que usar um componente o IdSSLIOHandlerSocketOpenSSL, ele se encontra na aba Indy I/O Handlers. No meu sistema faço assim se o cara marcar que o e-mail utiliza autenticação ai eu configuro o idSMTP dessa maneira:

idSMTP.IOHandler := idSSL;
idSMTP.UseTLS := utUseRequireTLS;

Esse idSSL é um componente do tipo IdSSLIOHandlerSocketOpenSSL ao qual eu relaciono no meu idSMTP na hora de mandar o e-mail.
Outra coisa as dll's do OpenSSL(ssleay32.dll, libeay32.dll) devem estar atualizadas na pasta do projeto ou na system32.

Faça um teste e qualquer coisa avise. Obrigado.
GOSTEI 0
Ewerton Rodrigues

Ewerton Rodrigues

27/08/2013

Aqui vou colocar uns prints para você ver como está os componentes aqui

Se você colocar igualzinho e não dê certo pode começar a ver a sua versão do delphi ai então OU o seu PC ai.

Ou se você quiser (***SE O seu email não for um email pessoal e você criou só para enviar emails***) você me passa o login e senha que eu vou testar ele aqui pois se funcionar aqui o problema é ai no seu delphi ou no seu PC.

Print´s Abaixo:
[url]
http://img401.imageshack.us/img401/5152/45jz.png

http://img109.imageshack.us/img109/494/1nnu.png

http://img703.imageshack.us/img703/4290/nz2a.png
[/url]
GOSTEI 0
Izaias Bezerra

Izaias Bezerra

27/08/2013

Obrigado mais uma vez pela sua atenção
vou fazer hoje, acredito que vai dar certo desta vez
GOSTEI 0
Izaias Bezerra

Izaias Bezerra

27/08/2013

Quais as configurações que são feitas na minha conta da yahoo ????
GOSTEI 0
Ewerton Rodrigues

Ewerton Rodrigues

27/08/2013

Nenhum

Mas veja as opções que eu te passei nas ultimas vezes se você quiser eu testo ak a sua conta e te retorno se o problema e na sua conta ou não
GOSTEI 0
Izaias Bezerra

Izaias Bezerra

27/08/2013

Bom dia

Eu acho que e na conta pq fiz do mesmo jeito que vc fez não aparece erro algum mais tb não enviar
GOSTEI 0
Izaias Bezerra

Izaias Bezerra

27/08/2013

como estou fazendo
declare no uses


ACBrNFe, smtpsend, mimemess, mimepart


function EnviarEmail(const sFrom, sTo, sCC, sAssunto, sAttachment, sAttachment2: String; sMensagem: TStrings): String;




function TUniMainModule.EnviarEmail(const sFrom, sTo, sCC, sAssunto, sAttachment, sAttachment2: String; sMensagem: TStrings): String;
var smtp : TSMTPSend;
msg_lines : TStringList;
m : TMimemess;
p : TMimepart;
begin
result := '';
try
try
m := TMimemess.create;
p := m.AddPartMultipart('mixed', nil);

if sMensagem <> nil then
m.AddPartText(sMensagem, p);

if sAttachment <> '' then
m.AddPartBinaryFromFile(sAttachment, p);

if sAttachment2 <> '' then
m.AddPartBinaryFromFile(sAttachment2, p);

m.header.tolist.add(sTo);

if sCC <> '' then
m.header.tolist.add(sCC);

m.header.From := sFrom;
m.header.subject := sAssunto;
m.EncodeMessage;

msg_lines := TStringList.Create;
smtp := TSMTPSend .Create;

//SendPercentDone(10);
msg_lines.Add(m.Lines.Text);

smtp.UserName := 'izaiasgomes@gmail.com';
smtp.Password := '*************';

smtp.TargetHost := 'smtp.gmail.com';
smtp.TargetPort := '465';

smtp.FullSSL := True;
smtp.AutoTLS := True;

//SendPercentDone(20);
if not smtp.Login() then
begin
result := 'SMTP ERROR: Login:' + smtp.EnhCodeString;
exit;
//raise Exception.Create('SMTP ERROR: Login:' + smtp.EnhCodeString);
end;

//SendPercentDone(30);
if not smtp.MailFrom(sFrom, Length(sFrom)) then
begin
result := 'SMTP ERROR: MailFrom:' + smtp.EnhCodeString;
exit;
//raise Exception.Create('SMTP ERROR: MailFrom:' + smtp.EnhCodeString);
end;

//SendPercentDone(40);
if not smtp.MailTo(sTo) then
begin
result := 'SMTP ERROR: MailTo:' + smtp.EnhCodeString;
exit;
//raise Exception.Create('SMTP ERROR: MailTo:' + smtp.EnhCodeString);
end;

//SendPercentDone(50);
if not smtp.MailData(msg_lines) then
begin
result := 'SMTP ERROR: MailData:' + smtp.EnhCodeString;
exit;
//raise Exception.Create('SMTP ERROR: MailData:' + smtp.EnhCodeString);
end;

//SendPercentDone(60);
if not smtp.Logout() then
begin
result := 'SMTP ERROR: Logout:' + smtp.EnhCodeString;
exit;
//raise Exception.Create('SMTP ERROR: Logout:' + smtp.EnhCodeString);
end;

//SendPercentDone(70);
except
On e:Exception do
begin
result := e.Message;
end;
end;
//SendPercentDone(80);
finally
msg_lines.Free;
smtp .Free;
m .Free;
//p .Free;

//SendPercentDone(100);
//FormEnviandoEmail.Close;
end;
end;
GOSTEI 0
POSTAR