delphi发送邮件代码
根据提供的Delphi发送邮件代码,我们可以总结出以下关键知识点: ### 1. 使用 IdSMTP 组件进行邮件发送 #### 1.1 初始化 IdSMTP 组件 - `IdSMTP1.AuthenticationType := atLogin;`:设置身份验证类型为登录验证。 - `IdSMTP1.Username := Edit1.Text;`:设置 SMTP 服务器用户名。 - `IdSMTP1.Password := Edit2.Text;`:设置 SMTP 服务器密码。 - `IdSMTP1.Host := Edit3.Text;`:设置 SMTP 服务器地址。 - `IdSMTP1.Port := StrToInt(Edit4.Text);`:设置 SMTP 服务器端口。 #### 1.2 连接 SMTP 服务器 - `IdSMTP1.Connect();`:连接到 SMTP 服务器。如果连接失败,将抛出异常并显示错误信息。 ### 2. 构建邮件内容 - `IdMessage1.Body.Clear();`:清除邮件正文内容。 - `IdMessage1.Subject := Edit5.Text;`:设置邮件主题。 - `IdMessage1.Body.Assign(Memo1.Lines);`:设置邮件正文,其中 Memo1 是一个包含邮件正文文本的控件。 - `IdMessage1.From.Address := Edit6.Text;`:设置发件人邮箱地址。 - `IdMessage1.Recipients.EMailAddresses := Edit7.Text;`:设置收件人邮箱地址。 ### 3. 发送邮件 - `IdSMTP1.Send(IdMessage1);`:使用 IdSMTP1 发送邮件对象 IdMessage1。 - 成功发送后,会弹出“发送成功”的提示框;若发送失败,则会弹出“发送失败”的提示框。 ### 4. 定义 SMTP 服务器配置记录类型 - `TLoginEmailServer` 记录类型用于封装 SMTP 服务器配置信息: - `SMTPHost`: SMTP 服务器地址。 - `SMTPPort`: SMTP 服务器端口号。 - `Username`: 用户名。 - `Password`: 密码。 - `SmtpAuthType`: 身份验证类型(例如:atLogin、atNone)。 ### 5. SendEmail 函数实现 - **参数说明**: - `poSMTPServer`: SMTP 服务器配置信息。 - `poBody`: 邮件正文。 - `psFromEmail`: 发件人邮箱。 - `psToEmail`: 收件人邮箱。 - `psSubject`: 邮件主题。 - `psContentType`: 内容类型。 - `CCToEmail`: 抄送人邮箱。 - `poAttachmentPath`: 附件路径集合。 - **函数逻辑**: - 创建 `TIdMessage` 和 `TIdSMTP` 对象。 - 设置邮件属性:内容类型、发件人、收件人、抄送人、主题、优先级等。 - 添加附件(如果存在)。 - 连接到 SMTP 服务器,并发送邮件。 - 返回结果状态码: - `0`: 成功。 - `2`: 发送失败。 - `3`: 其他错误。 ### 6. 异常处理 - 在连接和发送邮件过程中,使用 try-except 结构来捕获并处理可能出现的异常,确保程序不会因为错误而中断执行。 ### 7. 小结 以上代码示例展示了如何在 Delphi 中利用 Indy 库中的 `IdSMTP` 和 `IdMessage` 组件来发送带有附件的电子邮件。通过定义一个记录类型来存储 SMTP 服务器配置信息,并使用一个函数来封装发送过程,可以方便地复用这部分代码,并且易于维护和扩展。
作者:delphibbs
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.Subject:=Edit5.Text; //设置邮件发送的标题
IdMessage1.Body.Assign(Memo1.Lines); //设置邮件发送的主体
IdMessage1.From.Address:=Edit6.Text; //设置邮件的发件人 也就是说该邮件来自什么地方
IdMessage1.Recipients.EMailAddresses:=Edit7.Text; //收件人的地址
try
idSMTP1.Send(IdMessage1);
Showmessage(’邮件发送成功!’);
except
Showmessage(’邮件发送失败!’);
end;
end;
或者:
- zr_1689982014-10-26不能用,不知道那里出了问题,都是抄别人的
- MyCrooner2016-11-30txt文件还这么贵 。。。
- fyxi2012-02-13可以,要装新的INDY10现在才能发邮件
- 粉丝: 3
- 资源: 17
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助