Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Enviar Email

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Delphi Enviar Email

    Veremos nesse artigo como criar uma aplicação que envia e-mails. É claro que serve muito mais como aprendizagem do que um programa para se ganhar dinheiro, tendo em vista que já temos vários programas, até já inclusos com o sistema operacional, como o Outlook, Eudora, entre outros.
    Vamos ao trabalho então:

    1. Crie um novo projeto no Delphi;

    2. Dê uma interface amigável ao seu projeto, algo como a figura abaixo:


    3. Insira no formulário um componente OpenDialog, na palheta Dialog;

    4. Um componente IdMessage na palheta Indy Misc e configure as propriedades From|Adress, com o e-mail do remetente e From|Name com o nome do remetente;

    5. Um componente IdSMTP na palheta Indy Clients e configura as propriedades Host com o endereço IP ou o DNS do seu servidor de email, por exemplo: smtp.uol.com.br, e as propriedades Password e Username, para se autenticar no servidor, caso necessário;

    6. No botão anexar digite o seguinte código:
    Código:
    begin
    if odAnexos.Execute then
    ListBox1.Items.Add(odAnexos.FileName);
    end;
    7. No botão enviar digite o seguinte código:
    Código:
    procedure TForm1.Button2Click(Sender: TObject);
    var xAnexo : Integer;
    begin
    IdMessage.Recipients.EMailAddresses := edtPara.Text;
    IdMessage.CCList.EMailAddresses := edtCC.Text;
    IdMessage.BccList.EMailAddresses := edtCCO.Text;
    
    //Trata a Prioridade da mensagem
    case cbxPrioridade.ItemIndex of
    0 : IdMessage.Priority := mpHigh;
    1 : IdMessage.Priority := mpNormal;
    2 : IdMessage.Priority := mpLow;
    end;
    
    IdMessage.Subject := edtAssunto.Text;
    IdMessage.Body := mmMensagem.Lines;
    
    if cbxConfirmaLeitura.Checked then
    IdMessage.ReceiptRecipient.Text := IdMessage.From.Text; // Auto Resposta
    
    //Tratando os arquivos anexos
    for xAnexo := 0 to ListBox1.Items.Count-1 do
    TIdAttachment.create(idmessage.MessageParts, TFileName(ListBox1.Items.Strings[xAnexo]));
    
    IdSMTP.Connect;
    try
    IdSMTP.Send(IdMessage);
    finally
    IdSMTP.Disconnect;
    end;
    Application.MessageBox('Email enviado com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK);
    end;
    Pronto agora é só testar! Esse é um dos exemplos usando os componentes Indy que veremos em nossa coluna.

    Vejam abaixo o código completo.
    Código:
    interface
    
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
    IdTCPClient, IdMessageClient, IdSMTP, StdCtrls;
    
    type
    TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    edtPara: TEdit;
    edtCC: TEdit;
    edtCCO: TEdit;
    cbxPrioridade: TComboBox;
    edtAssunto: TEdit;
    cbxConfirmaLeitura: TCheckBox;
    mmMensagem: TMemo;
    ListBox1: TListBox;
    Button1: TButton;
    odAnexos: TOpenDialog;
    IdSMTP: TIdSMTP;
    IdMessage: TIdMessage;
    Button2: TButton;
    Label6: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    
    var
    Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if odAnexos.Execute then
    ListBox1.Items.Add(odAnexos.FileName);
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    var xAnexo : Integer;
    begin
    IdMessage.Recipients.EMailAddresses := edtPara.Text;
    IdMessage.CCList.EMailAddresses := edtCC.Text;
    IdMessage.BccList.EMailAddresses := edtCCO.Text;
    
    //Trata a Prioridade da mensagem
    case cbxPrioridade.ItemIndex of
    0 : IdMessage.Priority := mpHigh;
    1 : IdMessage.Priority := mpNormal;
    2 : IdMessage.Priority := mpLow;
    end;
    
    IdMessage.Subject := edtAssunto.Text;
    IdMessage.Body := mmMensagem.Lines;
    
    if cbxConfirmaLeitura.Checked then
    IdMessage.ReceiptRecipient.Text := IdMessage.From.Text; // Auto Resposta
    
    //Tratando os arquivos anexos
    for xAnexo := 0 to ListBox1.Items.Count-1 do
    TIdAttachment.create(idmessage.MessageParts, TFileName(ListBox1.Items.Strings[xAnexo]));
    
    IdSMTP.Connect;
    try
    IdSMTP.Send(IdMessage);
    finally
    IdSMTP.Disconnect;
    end;
    Application.MessageBox('Email enviado com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK);
    end;
    ~# Criado pela [IN]Segurança #~

  • Font Size
    #2
    então, eu ja tinha visto esse tuto.
    mas na hora de enviar sempre da 1 erro diferente
    ja tentei com 4 email diferente. yahoo, bol, hotmail, gmail.
    kd 1 da 1 erro ;x

    Comment


    • Font Size
      #3
      Pelo o que eu vi ele não falo nada sobre as configurações que devem ser feitas no smtp de acordo com cada servidor e-mail. Cada um deles como o bol, gmail, hotmail e outros atuam por uma porta diferente sendo a padrão usada pra esta a 25.

      Comment


      • Font Size
        #4
        eu sei, eu configuro com endereço smtp, com porta, password e username e mesmo assim da erro :/

        Comment


        • Font Size
          #5
          caso o smtp use conexao segura ira ter que usar essas dlls

          Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

          Comment


          • Font Size
            #6
            usa o smtp do terra que da certo sem prblemas
            sigpic

            skype e email c4p3lob8@hotmail.com

            Comment


            • Font Size
              #7
              Postado Originalmente por ²=NiXo=² Ver Post
              caso o smtp use conexao segura ira ter que usar essas dlls

              Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
              nen todos os smtp é necessário usar essas dlls.

              Comment


              • Font Size
                #8
                Postado Originalmente por weyllon Ver Post
                nen todos os smtp é necessário usar essas dlls.
                se ultilizar ssl como proteção e nescessario so no caso de conexao segura o meu server smtp mesmo nao usa mais o gmail usa.

                Comment


                • Font Size
                  #9
                  Na paleta Indy 10 tem como você poder usar o gmail ou qualquer outro que pessa ssl só por um
                  IdSSLIOHandlerSocketOpenSSL e no idsmtpclient na propiedade Iohandler atribuir o IdSSLIOHandlerSocketOpenSSL configura host e porta e no idsmtpclient na propiedade UseTls por utRequireTls

                  que funciona perfeitamente
                  ...Programando...

                  Comment


                  • Font Size
                    #10
                    é fassil usar isso pessoal
                    isso é programação basica
                    vo procura aqui um outro tutor ja que vocês não estão conseguindo
                    e se for o caso fasso até uma video aula
                    sigpic

                    Comment


                    • Font Size
                      #11
                      Postado Originalmente por L3ND4URB4N4' Ver Post
                      é fassil usar isso pessoal
                      isso é programação basica
                      vo procura aqui um outro tutor ja que vocês não estão conseguindo
                      e se for o caso fasso até uma video aula
                      E aê, achou um tuto mais explicadinho?

                      Comment

                      X
                      Working...
                      X