indy10发送网页

本文介绍了如何使用Delphi2009和Indy10库发送带有图片的HTML邮件,包括设置内容ID、添加附件以及设置邮件各项属性的详细步骤。
摘要由CSDN通过智能技术生成

KeyLife富翁笔记

作者 : lqcros
标题 : 使用indy10发送网页
关键字:
分类 : 个人专区
密级 : 公开

 

delphi2009 indy10通过
procedure TformMain.butnSendMailClick(Sender: TObject);
var
  html: TStrings;
  filename: string;
begin
  filename := ExtractFilePath(Application.ExeName) + 'YouImg.jpg';
  html := TStringList.Create;
  html.Add('');
  html.Add('');
  html.Add('');
  html.Add('

Hello

');
  html.Add(' '); //这里这个CID是什么意思,还没弄明白。
  html.Add('This is a picture!');
  html.Add('');
  butnSendMail.Enabled := False;
  try
    with mesgMessage do begin
      Clear;
      From.Text := Trim(editFrom.Text);
      Recipients.EMailAddresses := Trim(editTo.Text);
      Subject := Trim(editSubject.Text);
    end;
    with TIdText.Create(mesgMessage.MessageParts, nil) do begin
      ContentType := 'multipart/alternative';
//      ParentPart :=-1;
    end;
    with TIdText.Create(mesgMessage.MessageParts, nil) do begin
      Body.Text := html.Text;
      ContentType := 'text/html';
//      ParentPart := 0;
    end;
    with TIdAttachmentFile.Create(mesgMessage.MessageParts, filename) do begin
      ContentID := filename;
      ContentType := 'image/*';
      ContentDisposition := 'inline';
//      ParentPart := 0;
      ExtraHeaders.Values['content-id'] := ExtractFileName(Filename);
      DisplayName := ExtractFileName(Filename);
    end;
  mesgMessage.ContentType:='multipart/mixed';
//  mesgMessage.SaveToFile('1.txt');
    with smtpSendMail do begin
      Host := Trim(editSMTPServer.Text);
      Connect;
      try
        Send(mesgMessage);
      finally Disconnect; end;
    end;
    Status('Completed');
  finally butnSendMail.Enabled := True; end;
end;

2009-2-22 15:04:32   

查看评语»»»

2009-2-26 11:15:21 

I   copied&pasted   this   code   from   an   existing   unit   I   have,   and   it   should   do   exactly   what   you   want.   The   trick   however   isn't   just   adding   the   image(s)   as   attachment   but   also   telling   OE   or   Outlook   where   to   find   them.   To   do   this,   use   the   "cid:imagename.jpg"   tag   in   your   HTML   code   for   the   images.   Also,   use   the   ExtraHeader   property   to   set   'Content-ID'   to   the   name   of   the   image   as   it 

Delphi2010 实现邮件附件收发功能 TIdPOP3组件简介 TIdPOP3 是用来接收邮件服务器的邮件信息到用户端的一个组件。它实现了RFC 1939协议。 在使用TIdPOP3组件时需设置它的几个成员属性。 Host :指定邮件服务器,一般为pop3邮件服务器的地址,如 pop3.126.com。 Username :用户名,也就是邮箱名,如billanking2002@126.com。 Password :邮箱密码,在进行收发邮件时组件需要凭密码进行登录。 其它成员属性 Connected:返回它与邮件服务器的连接状态,这true表示已经连接。 CheckMessages:邮件数,如果连接服务器成功,则可以获得服务器端的邮件数。 成员函数 procedure Connect(const ATimeout: Integer = IdTimeoutDefault); 与服务器连接函数。参数为无效连接时等待的毫秒数。 function RetrieveHeader(const MsgNum: Integer; AMsg: TIdMessage): Boolean; 接收邮件头信息,它有两个参数,MsgNum表示在接收第几个邮件,从1开始,AMsg为邮件消息组件实例。 function Retrieve(const MsgNum: Integer; AMsg: TIdMessage): Boolean; 接收邮件主体信息,它与 RetrieveHeader的参数是一样的。接收的邮件内容将保存在AMsg中。 function Delete(const MsgNum: Integer): Boolean; 删除邮件服务器中第几个邮件。从1开始。 procedure Disconnect; override; 关闭连接。 TIdMessage组件简介 TIdMessage用来支持邮件消息协议,如POP3,SMTP,NNTP等。TIdMessage支持多用途Internet邮件扩展(MIME)协议。 常用的TIdMessage的属性: Subject:邮件主题,这个字符串经过BASE64编码的。所以在使用时需对它进行解码。 MessageParts:这是TIdMessageParts类的一个实例,它用来存储邮件的信息。如邮件内容及附件信息。在进行解析时需要判断它是否为附件或文本,如果为附件时,其文件名是经过BASE64编码的。判断常量分别为TIdText , TIdAttachment。 Body:这是个字符串列表,包含构成该邮件的正文内容。 Form:发送邮件者的地址信息。 Recipients:收件人地址信息。 BccList:抄送地址列表。 CharSet:指示邮件信息中使用的字符集。 ContentType:指定MIME媒体数据类型,描述正文中包含的数据,使用户代理决定如何显示数据,常用的有text/html,text/xml。 TIdSMTP组件简介 TIdSMTP是TIdMessageClient派生出的一个简单邮件传输协议和SMTP客户端。 它的主要功能是发送邮件信息。 常用的属性: Host :SMTP邮件服务器的地址,如smtp.126.com。它与上面的POP3地址不一样。 AuthenticationType服务器认证类型,它有atNone,atLogin两种,即不需要认证和需要凭用户名和密码进行认证。 Username:用户名,这里与TIdPOP3 有点不一样,即它不需要后缀,如billanking2002 Password:邮箱登录密码。如果AuthenticationType设置了atLongin则必须设置密码和用户名。
Lazarus是一个免费开源的Delphi开发环境,其中包含了一套非常强大和易用的工具集,可以帮助开发者快速构建应用程序。Lazarus以其无需额外支付的特点,吸引了一大批Delphi开发者。 在Lazarus中,Indy是一个非常重要的组件。Indy是一个开源的网络通信库,它为开发者提供了各种网络通信相关的功能和组件,例如TCP/IP、UDP、HTTP等。通过Indy,我们可以方便地实现网络通讯、文件传输、邮件发送等功能。 有了Indy,我们可以轻松地编写各种网络应用程序。比如,我们可以使用Indy的TCP/IP组件来实现网上聊天程序,让用户可以实时地进行文字交流;我们也可以使用Indy的HTTP组件来构建一个简单的Web服务器,可以提供网页和文件的访问。Indy的功能非常强大、灵活,能够满足各种不同类型的网络应用开发需求。 在Lazarus中使用Indy也非常简单。我们只需在项目中引入Indy的相关单元,然后在代码中实例化相应的组件,并设置好各种属性和事件处理程序,就可以开始编写网络应用程序了。Indy提供了大量的例子和文档,开发者可以快速上手,并根据自己的需求进行定制和扩展。 总的来说,Lazarus和Indy提供了一个非常强大和灵活的开发环境,使得开发者能够更加便捷地构建各种网络应用程序。无论是初学者还是有丰富开发经验的人,都可以通过这两个工具来实现自己的创意和项目需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值