Enviar Email com Delphi
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.
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
Curtidas 0
Respostas
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
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
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
Host=smtp.gmail.com
Username=izaiasgomes@gmail.com
Password=********
Porta=465
GOSTEI 0
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
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
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
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
27/08/2013
vou testa com o Email da yahoo
GOSTEI 0
Izaias Bezerra
27/08/2013
tb não vai, chegar se o email for da yahoo tb
GOSTEI 0
Izaias Bezerra
27/08/2013
O meu Delhhi xe3 tem alguma coisa a ver
GOSTEI 0
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
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
27/08/2013
Ewerton vc conseguir ver
GOSTEI 0
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.
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
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]
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
27/08/2013
Obrigado mais uma vez pela sua atenção
vou fazer hoje, acredito que vai dar certo desta vez
vou fazer hoje, acredito que vai dar certo desta vez
GOSTEI 0
Izaias Bezerra
27/08/2013
Quais as configurações que são feitas na minha conta da yahoo ????
GOSTEI 0
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
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
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
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
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;
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