unit Ufsmtp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP, StdCtrls, ExtCtrls, IdMessage,IniFiles, Buttons,
ComCtrls;
type
TForm1 = class(TForm)
IdSMTP1: TIdSMTP;
Panel1: TPanel;
Panel2: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
IdMessage1: TIdMessage;
Label8: TLabel;
Button1: TButton;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
GroupBox1: TGroupBox;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Label13: TLabel;
Edit8: TEdit;
grpAttachment: TGroupBox;
lvFiles: TListView;
btnAttachment: TBitBtn;
IdMsgSend: TIdMessage;
Edit9: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure btnAttachmentClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure ReadConfiguration;
procedure ResetAttachmentListView;
end;
var
Form1: TForm1;
SmtpServerName: String;
SmtpServerPort: Integer;
SmtpServerUser: String;
SmtpServerPassword: String;
SmtpAuthType: Integer;
UserEmail: String;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ReadConfiguration;
end;
procedure TForm1.ReadConfiguration;
var
MailIni: TIniFile;
begin
MailIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Mail.ini');
with MailIni do begin
SmtpServerName := ReadString('Smtp', 'ServerName', 'smtp.server.com');
SmtpServerPort := StrToInt(ReadString('Smtp', 'ServerPort', '25'));
SmtpServerUser := ReadString('Smtp', 'ServerUser', 'your_login');
SmtpServerPassword := ReadString('Smtp', 'ServerPassword', 'your_password');
SmtpAuthType := ReadInteger('Smtp', 'SMTPAuthenticationType', 0);
UserEmail := ReadString('Email', 'PersonalEmail', 'allen@springboardtechnologies.ie');
end;
MailIni.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
IdSMTP1.AuthenticationType:=atLogin; //设置登陆类型
IdSMTP1.Username:=Edit1.Text; //设置登陆帐号
IdSMTP1.Password:=Edit2.Text; //设置登陆密码
IdSMTP1.Host:=Edit3.Text; //设置SMTP地址
IdSMTP1.Port:=strtoint(Edit4.Text); //设置端口 必须转化为整型
IdSMTP1.Connect; //开始连接服务器
except
Showmessage('连接失败,请重试!');
Exit; //连接失败 的话 退出该执行过程
end;
IdMessage1.Body.Clear; //先清空上次发送的内容
IdMessage1.MessageParts.Clear; // 附件
IdMessage1.Subject:=Edit5.Text; //设置邮件发送的标题
IdMessage1.Body.Assign(Memo1.Lines); //设置邮件发送的主体
IdMessage1.From.Address:=Edit6.Text; //设置邮件的发件人 也就是说该邮件来自什么地方
IdMessage1.Recipients.EMailAddresses:=Edit7.Text; //收件人的地址
IdMessage1.CCList.EMailAddresses := Edit8.Text; //抄送
//if FileExists(edit7.Text) then
// begin
// TIdAttachment.Create(IdMessage1.MessageParts,edit9.Text);
//TIdAttachment.Create(IdMessage1.MessageParts,edit9.Text);
// end;
try
idSMTP1.Send(IdMessage1);
idSMTP1.Disconnect;
Showmessage('邮件发送成功!');
except
idSMTP1.Disconnect;
Showmessage('邮件发送失败!');
end;
end;
procedure TForm1.btnAttachmentClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
TIdAttachment.Create(IdMsgSend.MessageParts, OpenDialog1.FileName);
ResetAttachmentListView;
end;
end;
procedure TForm1.ResetAttachmentListView;
var li: TListItem;
idx: Integer;
begin
lvFiles.Items.Clear;
for idx := 0 to Pred(IdMsgSend.MessageParts.Count) do
begin
li := lvFiles.Items.Add;
if IdMsgSend.MessageParts.Items[idx] is TIdAttachment then
begin
li.ImageIndex := 0;
li.Caption := TIdAttachment(IdMsgSend.MessageParts.Items[idx]).Filename;
li.SubItems.Add(TIdAttachment(IdMsgSend.MessageParts.Items[idx]).ContentType);
end
else
begin
li.ImageIndex := 1;
li.Caption := IdMsgSend.MessageParts.Items[idx].ContentType;
end;
end;
end;
end.