CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  网络通信/分布式开发

求教高人,关于Delphi 收发E-Mail的问题

楼主qqp_528(CreateCao)2006-03-02 19:07:51 在 Delphi / 网络通信/分布式开发 提问

各位大哥,小弟最近做了一个东东,要求用Delphi开发一个程序能收发E-mail,但小弟学浅,不知怎样得到邮箱服务器、用户名、密码什么的,小弟的邮箱有yahoo的也有gmail的,不知支持不支持呀? 问题点数:30、回复次数:12Top

1 楼GARNETT2183(KingWolves (http://kevin-lu.blogspot.com))回复于 2006-03-02 19:13:40 得分 0

关注...Top

2 楼lxjssy()回复于 2006-03-02 20:21:32 得分 0

DELPHI   的   DEMO中有示范程序。Top

3 楼qqp_528(CreateCao)回复于 2006-03-03 08:45:33 得分 0

小弟看了粗看了Demo,但不知SMTP的服务器应该设置成哪里的,小弟用的是gmail的邮箱,  
  假设我的邮箱为:aaaaa@gmail.com   那么服务器是否可以写成mail.gmail.com       帐号写成aaaaa呢?Top

4 楼lxjssy()回复于 2006-03-03 10:32:04 得分 0

SMTP及POP3服务器,是有邮件提供商定义的。Top

5 楼qqp_528(CreateCao)回复于 2006-03-03 15:51:03 得分 0

有哪位高手帮我看看这个程序有什么问题,小弟急呀,谢了:  
      try  
          IdSMTP1.Host   :=   'SMTP.163.com';  
          IdSMTP1.Username   :=   '11111';  
          IdSMTP1.Password   :=   '11111';  
          IdSMTP1.Port   :=   25   ;  
   
          IdMessage1.From.Address   :=   'caoyan_528@163.com';  
          IdMessage1.Recipients.EMailAddresses:='caoyan_528@163.com';  
          IdMessage1.Subject:=   '第一个邮件客户端';  
          IdMessage1.Body.Text   :=   Memo1.Text;  
          if   IdSMTP1.AuthSchemesSupported.IndexOf('LOGIN')>-1   then  
          begin  
              IdSMTP1.AuthenticationType   :=   atLogin;  
            //   IdSMTP1.Authenticate;  
          end;  
   
          IdSMTP1.Connect();//正常  
          IdSMTP1.Send(IdMessage1);//弹出EIOProtocolReplyError异常   不知为什么?  
      except  
          IdSMTP1.Disconnect;  
      end;Top

6 楼huanggj(新人)回复于 2006-03-03 17:31:15 得分 0

学习Top

7 楼qqp_528(CreateCao)回复于 2006-03-03 17:42:20 得分 0

高人救我呀,今天要是不搞定我就just   毕了      
  Top

8 楼lxjssy()回复于 2006-03-03 21:03:22 得分 0

IdSMTP1.Username   :=   '11111';  
          IdSMTP1.Password   :=   '11111';  
   
   
  用户名:11111,密码:11111,  
  你在163的账号?  
  如果不是,先到163申请账号,再填写在这里,  
  Top

9 楼selfboss(黃海)回复于 2006-03-04 10:38:15 得分 0

我也刚写了一个发email的程序,现在出的一个问题就是有时能发,有时提示450错误。不知道为何。不过我用的是nmsmtp控件。Top

10 楼qiume(好好回贴,天天胖胖)回复于 2006-03-04 10:58:47 得分 0

要用Base64编码,并且要用户名和密码:  
  function   EncodeBase64(const   Source:   string):   string;  
  const  
      BaseTable   =   'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';  
  var  
      Times,   LenSrc,   i:   Integer;  
      x1,   x2,   x3,   x4:   Char;  
      xt:   Byte;  
  begin  
      Result   :=   '';  
      LenSrc   :=   Length(Source);  
      if   LenSrc   mod   3   =   0   then   Times   :=   LenSrc   div   3  
      else   Times   :=   LenSrc   div   3   +   1;  
   
      for   i   :=   0   to   Times   -   1   do  
      begin  
          if   LenSrc   >=   (3   +   i   *   3)   then  
          begin  
              x1   :=   BaseTable[(ord(Source[1   +   i   *   3])   shr   2)+1];  
              xt   :=   (ord(Source[1   +   i   *   3])   shl   4)   and   48;  
              xt   :=   xt   or   (ord(Source[2   +   i   *   3])   shr   4);  
              x2   :=   BaseTable[xt   +   1];  
              xt   :=   (Ord(Source[2   +   i   *   3])   shl   2)   and   60;  
              xt   :=   xt   or   (Ord(Source[3   +   i   *   3])   shr   6);  
              x3   :=   BaseTable[xt   +   1];  
              xt   :=   (ord(Source[3   +   i   *   3])   and   63);  
              x4   :=   BaseTable[xt   +   1];  
          end  
          else   if   LenSrc   >=   (2   +   i   *   3)   then  
          begin  
              x1   :=   BaseTable[(Ord(Source[1   +   i   *   3])   shr   2)   +   1];  
              xt   :=   (Ord(Source[1   +   i   *   3])   shl   4)   and   48;  
              xt   :=   xt   or   (Ord(Source[2   +   i   *   3])   shr   4);  
              x2   :=   BaseTable[xt   +   1];  
              xt   :=   (Ord(Source[2   +   i   *   3])   shl   2)   and   60;  
              x3   :=   BaseTable[xt   +   1];  
              x4   :=   '=';  
          end  
          else   begin  
              x1   :=   BaseTable[(Ord(Source[1   +   i   *   3])   shr   2)+1];  
              xt   :=   (Ord(Source[1   +   i   *   3])   shl   4)   and   48;  
              x2   :=   BaseTable[xt   +   1];  
              x3   :=   '=';  
              x4   :=   '=';  
          end;  
          Result   :=   Result   +   x1   +   x2   +   x3   +   x4;  
      end;  
  end;  
   
  procedure   TForm1.NMSMTP1OnConnect(Sender:   TObject);  
  begin  
      if   NMSMTP1.ReplyNumber   =   250   then   NMSMTP1.Transaction('auth   login');  
      if   NMSMTP1.ReplyNumber   =   334   then  
      begin  
          NMSMTP1.Transaction(EncodeBase64(UserID));     //用户名比如:   abc@q.com,就是abc  
          NMSMTP1.Transaction(EncodeBase64(Password));//邮箱密码  
      end;  
  end;Top

11 楼qiume(好好回贴,天天胖胖)回复于 2006-03-04 11:01:51 得分 0

to   楼主:  
  有哪位高手帮我看看这个程序有什么问题,小弟急呀,谢了:  
      try  
          IdSMTP1.Host   :=   'SMTP.163.com';  
          IdSMTP1.Username   :=   'caoyan_528';   //邮件的用户名,必须是真实的  
          IdSMTP1.Password   :=   'pas';   //邮件的密码,必须是真实的  
          IdSMTP1.Port   :=   25   ;  
   
          IdMessage1.From.Address   :=   'caoyan_528@163.com';  
          IdMessage1.Recipients.EMailAddresses:='caoyan_528@163.com';  
          IdMessage1.Subject:=   '第一个邮件客户端';  
          IdMessage1.Body.Text   :=   Memo1.Text;  
          if   IdSMTP1.AuthSchemesSupported.IndexOf('LOGIN')>-1   then  
          begin  
              IdSMTP1.AuthenticationType   :=   atLogin;  
            //   IdSMTP1.Authenticate;  
          end;  
   
          IdSMTP1.Connect();//正常  
          IdSMTP1.Send(IdMessage1);//弹出EIOProtocolReplyError异常   不知为什么?  
      except  
          IdSMTP1.Disconnect;  
      end;Top

12 楼qqp_528(CreateCao)回复于 2006-03-06 13:11:36 得分 0

多谢各位参与本讨论,小弟己经解决了发送电子邮件的问题,现在不知如何接收到内容,小弟用的是indy控件:  
      IdPOP31.Connect();  
      mailcount   :=   IdPOP31.CheckMessages;  
      for   i:=1   to   mailcount   do  
      begin  
            IdMessage2.Clear;  
            IdPOP31.retrieveHeader(i,IdMessage2);  
            tmp   :=   IdMessage2.Subject;  
            Memo1.Lines.Add(tmp);  
            tmp   :=   IdMessage2.  
            memo1.Lines.Add(IdMessage2.Body.Text);   //内容为空,小弟想显示邮件内容  
      end;  
      IdPOP31.Disconnect;  
  请问各位,如何才能下载到邮件的内容呀?  
  Top

相关问题

  • 有赏!!!!!vc中有没收发e_mail的控件
  • 求解简单问题,关于收发E-mail!!!
  • 高分求收发E-mail的原理与源程序!!!
  • 推荐一个不用exchange的收发e_mail的接口
  • Web方式收发删除E-mail,asp如何实现?
  • 500分,如何安装一台能够收发E-mail的MAIL服务器??
  • 2分问使用TClientSocket组件能否编写收发E-Mail的程序!
  • 精通用MAPI控件做E-mail收发程序的大虾请进。
  • 高分求收发E-mail的原理与源程序!!!(用API做!!!)
  • E-MAIL

关键词

  • 服务器
  • gmail
  • source
  • delphi
  • 密码
  • 邮箱
  • 邮件
  • 内容
  • 用户
  • idsmtp

得分解答快速导航

  • 帖主:qqp_528

相关链接

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

广告也精彩

反馈

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