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
procedure GetSettings;
procedure SaveSettings;
public
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;
SMTP.Host := ledHost.Text;
SMTP.Port := 25;
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);
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.