Delphi用Indy10发邮件的单元,超简单
来源:互联网 发布:淘宝店铺活动方案 编辑:程序博客网 时间:2024/06/18 18:42
unit USendMail;interfaceuses SysUtils, Classes, IdSMTP, IdMessage, IdAttachmentFile;/// <summary>/// 邮件发送/// </summary>/// <param name="Smtp">邮件服务器主机 例如:smtp.qq.com</param>/// <param name="Port">邮件服务器端口 默认:25</param>/// <param name="User">邮件用户名,需要加上xxxx@qq.com</param>/// <param name="Pass">邮件密码</param>/// <param name="MailTo">邮件接收人,多个时用“;”分隔</param>/// <param name="MailCC">邮件抄送接收人,多个时用“;”分隔</param>/// <param name="Subject">邮件主题</param>/// <param name="Content">邮件内容</param>/// <param name="Attachment">附件文件,多个文件名用“;”分隔</param>/// <returns></returns>function SendMail(Smtp: string; Port: Word; User, Pass, MailTo, MailCC, Subject, Content, Attachment: string): Integer; stdcall;implementationfunction SendMail(Smtp: string; Port: Word; User, Pass, MailTo, MailCC, Subject, Content, Attachment: string): Integer; stdcall;var FSMTP: TIdSMTP; FMailMessage: TIdMessage; SL: TStrings; I: Integer;begin FSMTP := TIdSMTP.Create(nil); FMailMessage := TIdMessage.Create(nil); FMailMessage.CharSet := 'utf-8'; FSMTP.Host := Smtp; FSMTP.Port := Port; FSMTP.Username := User; FSMTP.Password := Pass; SL := TStringList.Create; SL.Delimiter := ';'; try {Mail To} SL.DelimitedText := MailTo; if SL.Count > 0 then for I := 0 to SL.Count - 1 do FMailMessage.Recipients.Add.Address := SL[I]; {Mail CC} SL.DelimitedText := MailCC; if SL.Count > 0 then for I := 0 to SL.Count - 1 do FMailMessage.CCList.Add.Address := SL[I]; {Subject and Content} FMailMessage.Subject := Subject; FMailMessage.Body.Text := Content; {Attachment} SL.DelimitedText := Attachment; if SL.Count > 0 then for I := 0 to SL.Count - 1 do with TIdAttachmentFile.Create(FMailMessage.MessageParts, SL[I]) do begin ContentType := 'application/octet-stream'; ContentDisposition := 'attachment'; ContentTransfer := 'base64'; end; finally SL.Free; end; try try FSMTP.Connect(); FSMTP.Send(FMailMessage); Result := 0; except on E:Exception do Result := -1; end; finally if FSMTP.Connected then FSMTP.Disconnect; end; FMailMessage.Free; FSMTP.Free;end;end.