如何让文件夹中的所有图片打包上传到指定的邮箱中? 如题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 两个问题:1.压缩,可以使用第三方的,也可以直接调用winrar命令行参数2.发送邮件,indy有现成的组件,可以发送附件 procedure TForm1.Button1Click(Sender: TObject);beginsmtp := TIdSMTP.Create(nil);smtp.AuthenticationType := atLogin;smtp.Host := 'smtp.163.com';smtp.Username := '###'; //用户名smtp.Password := '******'; //密码msgsend := TIdMessage.Create(nil);msgsend.Recipients.EMailAddresses := '[email protected]'; //收件人地址(多于一个的话用逗号隔开)msgsend.From.Text := '###@163.com'; //自己的邮箱地址msgsend.Subject := 'test'; //邮件标题msgsend.Body.Text := RichEdit1.Text; //邮件内容TIdAttachment.Create(msgsend.MessageParts, 'C:\temp\1.jpg'); //添加附件trysmtp.Connect();try smtp.Authenticate;smtp.Send(msgsend);ShowMessage('发送成功');exceptShowMessage('邮件发送失败');end;exceptShowMessage('无法连接邮件服务器!');end;smtp.Disconnect;end; 编译通过,运行,就报错,哪位知道是怎么回事? 我用你的代码。在Delphi6下测试,一次就通过,而且发送成功,而且正常收到。你的办法正好用。 我正打算用你提供的代码写一个简单的邮件发送模块。另外,我只发了一个38K的Png图片。 贴点代码:发送邮件的线程,不合适的自己改改。TState = procedure (State: string) of object; TSendMailThread = class(TThread) private FOnState: TState; public MailBox, Password: string; AddressList: string; Title: string; Context: TStringList; Attachment: TStringList; constructor Create(CreateSuspended: Boolean); destructor Destroy(); override; procedure Execute(); override; property OnState: TState read FOnState write FOnState; end;{ TSendMailThread }constructor TSendMailThread.Create(CreateSuspended: Boolean);begin inherited Create(CreateSuspended); FreeOnTerminate := true; Context := TStringList.Create; Attachment := TStringList.Create;end;destructor TSendMailThread.Destroy;begin FreeAndNil(Context); FreeAndNil(Attachment); inherited;end;procedure TSendMailThread.Execute;var i: integer; smtp: TIdSMTP; msgsend: TIdMessage;begin inherited; smtp := TIdSMTP.Create(nil); smtp.AuthenticationType := atLogin; smtp.Host := 'smtp.' + Copy(MailBox, Pos('@', MailBox) + 1, Length(MailBox)); smtp.UserId := Copy(MailBox, 1, Pos('@', MailBox) - 1); //用户名 smtp.Password := Password; //密码 msgsend := TIdMessage.Create(nil); msgsend.Recipients.EMailAddresses := AddressList; //收件人地址(多于一个的话用逗号隔开) msgsend.From.Text := MailBox; //自己的邮箱地址 msgsend.Subject := Title; //邮件标题 msgsend.Body.AddStrings(Context); //邮件内容 if Attachment.Count > 0 then begin for i := 0 to Attachment.Count - 1 do TIdAttachment.Create(msgsend.MessageParts, Attachment.Strings[i]); end; //添加附件 try OnState('正在连接邮箱...'); smtp.Connect(); OnState('正在验证用户...'); smtp.Authenticate; OnState('正在发送邮件...'); smtp.Send(msgsend); OnState('邮件发送成功...'); except OnState('邮件发送失败...'); end; smtp.Disconnect; FreeAndNil(smtp); FreeAndNil(msgsend);end;//调用procedure TFrmSendEMail.BtnSendClick(Sender: TObject);var SendMail: TSendMailThread;begin SendMail := TSendMailThread.Create(true); SendMail.MailBox := CoBMailBox.Text; //用户名 SendMail.Password := StrListPassword.Strings[CoBMailBox.ItemIndex]; //密码 SendMail.AddressList := EdtAccept.Text; //收件人地址(多于一个的话用逗号隔开); SendMail.Title := EdtTitle.Text; //邮件标题 SendMail.Context.AddStrings(MemContext.Lines);//邮件内容 if EdtAttachment.Text<> '' then SendMail.Attachment.Add(EdtAttachment.Text); SendMail.OnState := SetState; SendMail.Resume;end; EurekaLog Exception Filter, Type 是什么意思? 能取到TADOQuery的sql的表名吗? 请问各位大虾Delphi有没有象MSDN那样的学习文档啊? Delphi中这样的情况怎么处理? 关于临时表的问题(在线急用!高分求助) 生日放分:-) MTS的问题 关于TABLE的对于模糊查询的问题 关于文件输入输出的简单问题 来csdn半年了,第一次在这个版面发帖,散分先 stringgrid怎样根据值指定某个单元格的颜色? 窗口还原时组件按比例还原
1.压缩,可以使用第三方的,也可以直接调用winrar命令行参数
2.发送邮件,indy有现成的组件,可以发送附件
begin
smtp := TIdSMTP.Create(nil);
smtp.AuthenticationType := atLogin;
smtp.Host := 'smtp.163.com';
smtp.Username := '###'; //用户名
smtp.Password := '******'; //密码
msgsend := TIdMessage.Create(nil);
msgsend.Recipients.EMailAddresses := '[email protected]'; //收
件人地址(多于一个的话用逗号隔开)
msgsend.From.Text := '###@163.com'; //自己的邮箱地址
msgsend.Subject := 'test'; //邮件标题
msgsend.Body.Text := RichEdit1.Text; //邮件内容
TIdAttachment.Create(msgsend.MessageParts, 'C:\temp\1.jpg');
//添加附件
try
smtp.Connect();
try
smtp.Authenticate;
smtp.Send(msgsend);
ShowMessage('发送成功');
except
ShowMessage('邮件发送失败');
end;
except
ShowMessage('无法连接邮件服务器!');
end;
smtp.Disconnect;end;
编译通过,运行,就报错,哪位知道是怎么回事?
你的办法正好用。
另外,我只发了一个38K的Png图片。
发送邮件的线程,不合适的自己改改。
TState = procedure (State: string) of object; TSendMailThread = class(TThread)
private
FOnState: TState;
public
MailBox, Password: string;
AddressList: string;
Title: string;
Context: TStringList;
Attachment: TStringList;
constructor Create(CreateSuspended: Boolean);
destructor Destroy(); override;
procedure Execute(); override;
property OnState: TState read FOnState write FOnState;
end;{ TSendMailThread }constructor TSendMailThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
FreeOnTerminate := true;
Context := TStringList.Create;
Attachment := TStringList.Create;
end;destructor TSendMailThread.Destroy;
begin
FreeAndNil(Context);
FreeAndNil(Attachment);
inherited;
end;procedure TSendMailThread.Execute;
var
i: integer;
smtp: TIdSMTP;
msgsend: TIdMessage;
begin
inherited;
smtp := TIdSMTP.Create(nil);
smtp.AuthenticationType := atLogin;
smtp.Host := 'smtp.' + Copy(MailBox, Pos('@', MailBox) + 1, Length(MailBox));
smtp.UserId := Copy(MailBox, 1, Pos('@', MailBox) - 1); //用户名
smtp.Password := Password; //密码
msgsend := TIdMessage.Create(nil);
msgsend.Recipients.EMailAddresses := AddressList; //收件人地址(多于一个的话用逗号隔开)
msgsend.From.Text := MailBox; //自己的邮箱地址
msgsend.Subject := Title; //邮件标题
msgsend.Body.AddStrings(Context); //邮件内容
if Attachment.Count > 0 then
begin
for i := 0 to Attachment.Count - 1 do
TIdAttachment.Create(msgsend.MessageParts, Attachment.Strings[i]);
end;
//添加附件
try
OnState('正在连接邮箱...');
smtp.Connect();
OnState('正在验证用户...');
smtp.Authenticate;
OnState('正在发送邮件...');
smtp.Send(msgsend);
OnState('邮件发送成功...');
except
OnState('邮件发送失败...');
end; smtp.Disconnect;
FreeAndNil(smtp);
FreeAndNil(msgsend);
end;//调用
procedure TFrmSendEMail.BtnSendClick(Sender: TObject);
var
SendMail: TSendMailThread;
begin
SendMail := TSendMailThread.Create(true);
SendMail.MailBox := CoBMailBox.Text; //用户名
SendMail.Password := StrListPassword.Strings[CoBMailBox.ItemIndex]; //密码
SendMail.AddressList := EdtAccept.Text; //收件人地址(多于一个的话用逗号隔开);
SendMail.Title := EdtTitle.Text; //邮件标题
SendMail.Context.AddStrings(MemContext.Lines);//邮件内容
if EdtAttachment.Text<> '' then
SendMail.Attachment.Add(EdtAttachment.Text);
SendMail.OnState := SetState;
SendMail.Resume;
end;