Ver Mensaje Individual
  #1  
Antiguo 05-03-2009
lduron lduron is offline
Miembro
 
Registrado: jun 2006
Posts: 30
Reputación: 0
lduron Va por buen camino
Sobre envío de correo en Delphi 7

Hola amigos de Club Delphi!

Alguien puede ayudarme con este código:

Código Delphi [-]
 
unit EnviarCorreo;
interface
uses
  inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient,
  IdSMTP, ComCtrls, StdCtrls, Buttons, ExtCtrls, IdBaseComponent, IdMessage;
type
  TForm1 = class(TForm)
    pnlBottom: TPanel;
    Body: TMemo;
    ledAttachment: TLabeledEdit;
    btnAttachment: TBitBtn;
    ledSubject: TLabeledEdit;
    pnlTop: TPanel;
    ledHost: TLabeledEdit;
    ledFrom: TLabeledEdit;
    ledTo: TLabeledEdit;
    ledCC: TLabeledEdit;
    btnSendMail: TBitBtn;
    StatusMemo: TMemo;
    MailMessage: TIdMessage;
    SMTP: TIdSMTP;
    AttachmentDialog: TOpenDialog;
    procedure btnSendMailClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnAttachmentClick(Sender: TObject);
    procedure SMTPStatus(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
  private
    { Private declarations }
    procedure GetSettings;
    procedure SaveSettings;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.GetSettings;
var
  ini : TIniFile;
begin
  Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  try
    ledHost.Text := ini.ReadString('SMTP','Host','');
    ledFrom.Text := ini.ReadString('MAIL','From','');
    ledTo.Text   := ini.ReadString('MAIL','To','');
    ledCC.Text   := ini.ReadString('MAIL','CC','');
  finally
    ini.Free;
  end;
end;
procedure TForm1.SaveSettings;
var
  ini : TIniFile;
begin
  Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  try
    ini.WriteString('SMTP','Host',ledHost.Text);
    ini.WriteString('MAIL','From',ledFrom.Text);
    ini.WriteString('MAIL','To'  ,ledTo.Text);
    ini.WriteString('MAIL','CC'  ,ledCC.Text);
  finally
    ini.Free;
  end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  GetSettings;
end;
procedure TForm1.btnSendMailClick(Sender: TObject);
begin
  StatusMemo.Clear;
  //setup SMTP
  SMTP.Host := ledHost.Text;
  SMTP.Port := 25;
  //setup mail message
  MailMessage.From.Address := ledFrom.Text;
  MailMessage.Recipients.EMailAddresses := ledTo.Text + ',' + ledCC.Text;
  MailMessage.Subject := ledSubject.Text;
  MailMessage.Body.Text := Body.Text;
  if FileExists(ledAttachment.Text) then
    TIdAttachment.Create(MailMessage.MessageParts, ledAttachment.Text);
  //send mail
  try
    try
      SMTP.Connect(1000);
      SMTP.Send(MailMessage);
    except on E:Exception do
      StatusMemo.Lines.Insert(0, 'ERROR: ' + E.Message);
    end;
  finally
    if SMTP.Connected then SMTP.Disconnect;
  end;
end;
procedure TForm1.btnAttachmentClick(Sender: TObject);
begin
  if AttachmentDialog.Execute then
    ledAttachment.Text := AttachmentDialog.FileName;
end;
procedure TForm1.SMTPStatus(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
  StatusMemo.Lines.Insert(0,'Status: ' + AStatusText);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SaveSettings;
end;
end.

Al momento de ejecutarlo me manda el siguiente error:

Código:
 
Status: Disconnected.
Status: Disconnecting.
ERROR: 5.7.0 Must issue a STARTTLS command first. 5sm528965qwg.34
Status: Connected.
Status: Connecting to 74.125.93.111.
Status: Resolving hostname smtp.gmail.com.
Muchas gracias de antemano por su ayuda.

Última edición por dec fecha: 05-03-2009 a las 20:37:56. Razón: Poner las correspondientes etiquetas
Responder Con Cita