CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  网络通信/分布式开发

如何做收发电子邮件(用SMTP和POP协议)?

楼主zhengwuyu(小鱼)2003-11-04 16:47:48 在 Delphi / 网络通信/分布式开发 提问

要做个能收发电子邮件(用SMTP和POP协议)的模块?各位大侠能否给个源代码示例? 问题点数:0、回复次数:9Top

1 楼rick29(rick.z)回复于 2003-11-04 16:52:26 得分 0

用Indy呗……这个,看看相关文档吧……Top

2 楼ShallowShrimp(还我自由)回复于 2003-11-04 17:02:26 得分 0

Delphi有例子,在Demo目录下Top

3 楼vagerent(上午的绝缘杯)回复于 2003-11-04 20:38:28 得分 0

想和你共同开发可以吗?一起学习  
  我的email:ampro@163.comTop

4 楼skyeagle31()回复于 2003-11-05 10:09:20 得分 0

//receive  
      try  
          NMPOP31.Connect;  
      except  
          lpText:=   '连接POP3服务器失败。请检查通信设置是否正确,稍后再试。'+CHR(13)+  
                            '[状态:连接]'+CHR(13)+CHR(13)+  
                            'WinSock   Error:   [10060]   Connection   timed   out.';  
          MessageBox(Application.Handle,   PChar(lpText),   PChar(frmDataReceive.Caption),   MB_OK+MB_ICONERROR);  
      end;  
   
            screen.Cursor   :=   crHourGlass   ;  
   
      mailcelln   :=   0   ;  
      if   NMPOP31.MailCount   >   0   then  
        begin  
        //mailcelln控制符合条件的邮件显示到stringgrid1中.  
                for   getM   :=   1   to   NMPOP31.MailCount   do  
                    retrieveEnd(false);  
                stringgrid1.RowCount   :=   mailcelln   +   1   ;  
        //             NMPOP31.GetSummary(getM);  
   
        //mailcelln   变量改为控制将stringgrid1中显示的邮件实现接收到本地.  
                for   mailcelln   :=   1   to   stringgrid1.RowCount-1   do  
                begin  
                      retrieveEnd(true)   ;  
   
                      mailcount   :=   mailcount   +   NMPOP31.MailMessage.Attachments.Count   ;  
   
                    for   m   :=   0   to   NMPOP31.MailMessage.Attachments.Count-1   do  
                    begin         //对附件进行处理  
   
                              zbfilestr   :=   NMPOP31.MailMessage.Attachments.Strings[m]   ;  
                              ....  
                    end;  
   
                end;  
                mailcelln   :=   mailcelln-1   ;  
   
        end  
        else  
                ShowMessage('没有可接收的邮件!');  
   
      NMPOP31.Disconnect;  
      screen.Cursor   :=   crDefault   ;  
   
      showmessage('接收了   '+inttostr(mailcelln)+'个新邮件!   恢复了'+inttostr(mailcount)+'个数据文件!')   ;  
  //发送部分自己考虑吧,差不多的Top

5 楼CDSoftwareWj(95927)回复于 2003-11-05 14:40:07 得分 0

用Indy呗……这个,看看indy本身代的例程不就可以啦!!!Top

6 楼delphi023445(delphi023445)回复于 2003-11-06 18:41:09 得分 0

unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   IdMessage,   IdBaseComponent,   IdComponent,   IdTCPConnection,  
      IdTCPClient,   IdMessageClient,   IdSMTP,   StdCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          Label1:   TLabel;  
          edt_SMTP:   TEdit;  
          Label2:   TLabel;  
          edt_From:   TEdit;  
          Label3:   TLabel;  
          edt_To:   TEdit;  
          Lable4:   TLabel;  
          edt_Username:   TEdit;  
          Label4:   TLabel;  
          edt_Psw:   TEdit;  
          Label5:   TLabel;  
          edt_Subject:   TEdit;  
          Label6:   TLabel;  
          Memo1:   TMemo;  
          Label7:   TLabel;  
          edt_File:   TEdit;  
          Button1:   TButton;  
          Button2:   TButton;  
          OpenDialog1:   TOpenDialog;  
          IdSMTP1:   TIdSMTP;  
          IdMessage1:   TIdMessage;  
          procedure   Button1Click(Sender:   TObject);  
          procedure   Button2Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
  //添加附件  
  Opendialog1.Filename:='';  
  Opendialog1.Filter:='所有文件|*.*';  
  if   Opendialog1.Execute   then  
      begin  
      edt_File.Text:=Opendialog1.FileName;  
      end;  
  end;  
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  begin  
  //  
  IdMessage1.From.Address:=edt_From.Text;  
  //  
  IdMessage1.From.Name:=edt_Username.Text;  
  //  
  Idmessage1.Recipients.EMailAddresses:=edt_To.Text;  
  //  
  Idmessage1.Subject:=edt_Subject.Text;  
  //  
  Idmessage1.Body.Add(Memo1.Text);  
  //  
  TidAttachment.Create(Idmessage1.MessageParts,edt_File.Text);  
  //  
  Idsmtp1.Host:=edt_SMTP.Text;  
  //  
  Idsmtp1.Username:=edt_Username.Text;  
  //  
  Idsmtp1.Password:=edt_Psw.Text;  
  //  
  Idsmtp1.AuthenticationType:=atLogin;  
  //  
  Idsmtp1.Connect();  
  //  
  Idsmtp1.Send(Idmessage1);  
  end;  
   
  end.  
  Top

7 楼delphi023445(delphi023445)回复于 2003-11-06 18:51:58 得分 0

 
   
  Top

8 楼zhengwuyu(小鱼)回复于 2003-11-07 14:41:23 得分 0

各位大侠能否发一份到我的MAIL重:zhengwuyu@sina.com,  
  在线求救!!!!先谢了!Top

9 楼delphi023445(delphi023445)回复于 2003-11-07 22:08:35 得分 0

等我晚上把这个程序写完了就给你复制一份发过去Top

相关问题

  • 如何用SMTP发送电子邮件
  • 如何用PB6.5实现收发电子邮件
  • 怎样在局域网上用Exchange Server实现电子邮件的收发?????
  • 请高手指教如何使用delphi在程序中收发电子邮件
  • 那有vb收发电子邮件的原程序?最好不要使用exchange?
  • 请问哪位师兄有收发电子邮件的程序(含源码)?
  • 高分配高手, 请问用FTP收发电子邮件的原理?
  • 高分征求:发送(SMTP验证)电子邮件和接收(POP3)电子邮件的例子。
  • 谁来救我?WINSOCK的SMTP发送电子邮件问题
  • 收发电子邮件相关的api是什么,在那儿能找到,谢谢。

关键词

  • 邮件
  • nmpop31
  • mailcelln
  • idmessage
  • idsmtp
  • mailcount
  • tlabel
  • edt
  • tedit
  • opendialog

得分解答快速导航

  • 帖主:zhengwuyu

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo