Jump to content
Fórum Script Brasil
  • 0

Como Enviar Email Através Do Delphi?


Guest sllc
 Share

Question

Olá,

Alguém tem aí alguma rotina em delphi para envio de emails?

Tenho um cadastro com vários nomes e emails em banco de dados interbase e gostaria de fazer um formulário para montar a mensagem a ser enviada, depois seria despachar esta mensagem para cada registro do banco de dados.

Se alguém puder ajudar, desde já agradeço muito.

Obrigado.

Sergio

Link to comment
Share on other sites

19 answers to this question

Recommended Posts

  • 0

ENVIANDO EMAIL USANDO O COMPONENTE INDY NO DELPHI7

Veremos neste artigo como é fácil enviar email utilizando o componente Indy presente no delphi 7.

Apresentaremos abaixo uma simples aplicação, basta você ter um pouco de criatividade e dar asas a sua imaginação...

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;

Fonte: Portal

Link to comment
Share on other sites

  • 0

Obrigado, Jonas.

Era isso que eu estava precisando.

Mas, sem querer abusar de sua boa vontade, como faço para enviar cópias para outros emails. Tentei fazer um listbox com outros endereços de email e usar a propriedade CCList do componente idMessage, mas não deu certo. Poderia por obséquio me ajudar mais um pouco?

Obrigado mais uma vez.

Sergio

Link to comment
Share on other sites

  • 0

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;
ou pode usar esta configuração
//Configuração do IdMessage (dados da mensagem)

  IdMessage1.From.Address := '[email protected]';                         //e-mail do remetente
  IdMessage1.Recipients.EMailAddresses := '[email protected]';      //e-mail do destinatário
  IdMessage1.Subject := 'Assunto do e-mail';                                   //Assunto
  IdMessage1.Body.Add('Mensagem do e-mail');                               //Corpo da mensagem

como mandar para mais de um endereço:

IdMessage1.Recipients.EMailAddresses := '[email protected] ; [email protected] ; [email protected]';

Edited by Jhonas
Link to comment
Share on other sites

  • 0
Guest Silas Aguiar
No evento onclick do botão btEnviar:

procedure TForm1.btEnviarClick(Sender: TObject);
var Anexo : Integer;
begin
IdMessage.[b]Recipients.[/b]EMailAddresses := edtPara.Text;
IdMessage.Subject := edtAssunto.Text;
IdMessage.Body := mmMensagem.Lines;
ou pode usar esta configuração
//Configuração do IdMessage (dados da mensagem)

  IdMessage1.From.Address := '[email protected]';                         //e-mail do remetente
  IdMessage1.Recipients.EMailAddresses := '[email protected]';      //e-mail do destinatário
  IdMessage1.Subject := 'Assunto do e-mail';                                   //Assunto
  IdMessage1.Body.Add('Mensagem do e-mail');                               //Corpo da mensagem

como mandar para mais de um endereço:

IdMessage1.Recipients.EMailAddresses := '[email protected] ; [email protected] ; [email protected]';

____________________

Boa tarde, tentei fazer mas deu erro no

IdMessage.Recipients.EMailAddresses := edtPara.Text;

expecificamente no Recipients,

se poderem me ajudar ficarei grato, até...

Link to comment
Share on other sites

  • 0
Guest Deblyn

Olá, eu tenho uma pequna dúvida.... eu vou precisar importar os e-mail que vou utilizar.

esses arquivos serão txt, xls, csv e pdf.

o que eu quero fazer é o seguinte: clico em "Importar Contatos" e escolho o arquivo que contém os e-mails, depois disso crio a mensagem e clico em enviar e a mensagem vai ser enviada para todos os destinatários daquele arquivo.

Mas não estou conseguindo fazer isso. O meu enviar funciona normalmente. Estou no momento tentando importar uma lista em txt para ver se funciona vejam o código abaixo:

If ComboBoxDestinatario.Text = '' Then

Begin

IF OpenDialogImportarContatos.Execute Then

Begin

ListaEmail:= OpenDialogImportarContatos.Files.Text;

ListaTemp.Text := ListaEmail;

IdMessage1.Recipients.Add.Address := ListaTemp.DelimitedText; //ComboBoxDestinatario.Items.Text; //'[email protected]';

End

Else

IdMessage1.Recipients.Add.Address:=ComboBoxDestinatario.Items.Text;

e tenho o seguite erro: Access violation at adress AC558BFF. Read of address AC558BFF.

o que devo fazer?

Link to comment
Share on other sites

  • 0
IdMessage1.Recipients.Add.Address:=ComboBoxDestinatario.Items.Text;

e tenho o seguite erro: Access violation at adress AC558BFF. Read of address AC558BFF.

o que devo fazer?

O erro está parecendo que esta no IdMessage1.Recipients.Add.Address

verifique se o seu combobox tem mais de um item .. se tiver, voce deve usar ponto e virgula para separa-los

abraço

Link to comment
Share on other sites

  • 0
Guest Visitante

Ih, agora eu não to conseguindo enviar mais nada

procedure TFormFormularioEmail.BitBtEnviarClick(Sender: TObject);

var Anexo : Integer;

begin

IdMessage1.From.Address:= '[email protected];

IdMessage1.From.Name:= 'Teste';

IdMessage1.Recipients.EMailAddresses:= '[email protected]';

IdMessage1.Subject:= EdAssunto.Text;

IdMessage1.Body:= RIchEdit1.Lines;

IdSMTP1.Host:= 'smtp.temasistemas.com.br';

IdSMTP1.Port:= 25;

IdSMTP1.Username:= '[email protected]';

IdSMTP1.Password:= 'xxx';

IdSMTP1.Connect(0);

if IdSMTP1.Connected then

begin

IdSMTP1.Send(IdMessage1);

IdSMTP1.Disconnect;

ShowMessage('Email enviado com sucesso!');

end

else

begin

IdSMTP1.Disconnect;

ShowMessage('Não foi possível se conectar com seu servidor de email!');

end;

end;

dá erro de DESTINATARIO não VALIDO/INVALID RECIPIENT

tirei todo o código que tinha antes e coloquei só esse aí e não tá funcionando :P

Link to comment
Share on other sites

  • 0

Olá Jhonas, já tentei refazer do zero, exclui tudo e refiz mas ainda continuo com o mesmo erro =/

eu estou utilizando o delphi 7 mesmo, mas agora não sei por que cargas d'água não estou conseguindo enviar mais os e-mails e ainda não tenho a mínima ideia de como vou fazer para inserir uma imgem no richedit e importar a lista de contatos.....

Link to comment
Share on other sites

  • 0

Olá novamente, bom já consegui resolver o problema do programa não estar mais enviando e-mail, mas ainda tenho a dúvida quanto ao fato de anexar uma lista de contatos, será que poderia me ajudar?

Link to comment
Share on other sites

  • 0

Tentei fazer desta forma, mas o e-mail só é enviado para o 1º usuário da lista, criei um botão para importar, um Memo1 invisivel e o código ficou assim:

If OpenDialogImportarContatos.Execute Then
Memo1.Lines.Text := OpenDialogImportarContatos.Files.Text;
IdMessage1.Recipients.EMailAddresses := Memo1.Lines.Text;

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...