CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  网络编程

500分求用winsock收邮件代码(邮件带有附件)

楼主nz(裕)2006-03-08 10:36:43 在 VB / 网络编程 提问

500分求用winsock收邮件代码(邮件带有附件),一贴不能给多分,完成后再开贴给分.  
  1.要以winsock控件.  
  2.邮件要带有附件.  
   
  谢谢!  
  问题点数:100、回复次数:14Top

1 楼nz(裕)回复于 2006-03-08 10:39:24 得分 0

找了一下,有的大侠说Jmail也可以,我下了一个4.4版的,但没有VB的例子.不知道怎样用.Top

2 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-08 11:05:06 得分 10

http://www.chenoe.com/blog/blogview.asp?logID=619  
  http://www.chenoe.com/blog/blogview.asp?logID=626  
  http://www.chenoe.com/blog/blogview.asp?logID=7  
   
  Top

3 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-08 11:08:31 得分 10

http://www.mndsoft.com/blog/blogview.asp?logID=584Top

4 楼nz(裕)回复于 2006-03-08 11:27:43 得分 0

多谢   Modest(塞北雪貂   --   I   Love   CSDN.Net)   的回贴,http://www.mndsoft.com/blog/blogview.asp?logID=584这个收邮件时出现乱码.Top

5 楼nz(裕)回复于 2006-03-08 11:28:39 得分 0

塞北雪貂   兄方便留下hotmail,或QQ吗?Top

6 楼nz(裕)回复于 2006-03-08 15:42:09 得分 0

upTop

7 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2006-03-09 01:29:11 得分 10

看看   陈锐老大的博克吧   介绍pop3协议的   希望对你有帮助  
  http://blog.csdn.net/TechnoFantasy/category/123393.aspxTop

8 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 14:00:36 得分 10

03年的时候做过一个使用Winsock操作邮箱的小工具.Top

9 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 14:06:24 得分 30

需要的话告诉我Email.  
  不过我现在没有时间写注释了Top

10 楼lc_mtt(柠檬把大飞猪裤子一脱...被大飞猪投诉了)回复于 2006-03-09 14:50:51 得分 10

死心吧,完整好用的MINE编码是不会开放源码的,有源码的,都是不大完整好用的,就如mndsoft的那个邮件源码Top

11 楼ZOU_SEAFARER(颓废程序员^_^)回复于 2006-03-09 16:10:19 得分 10

发送电子邮件附件  
   
     
   
     
   
     
   
  第二个标签页中有一个ListView控件,用来显示文件列表,以及一个按钮,用来保存附件。如下图所示:  
   
     
   
  在本示例程序中,我们对CMessage类的CreateFromText方法作了更新:  
   
     
   
  Dim   strFileName         As   String  
   
  Dim   strAttachment     As   String  
   
  Dim   lngFileSize         As   Long  
   
  Dim   lngFirstBegin     As   Long  
   
  Dim   lngFullStrings   As   Long  
   
     
   
  Const   ENCODED_LINE_LENGTH   =   61  
   
  '  
   
  intPosA   =   1  
   
  Do  
   
        'Looking   for   the   start   marker   -   "begin   "  
   
        intPosA   =   InStr(intPosA,   strMessage,   vbCrLf   &   "begin   ")   +   2  
   
        'Exit   from   the   loop   if   it   hasn't   found  
   
        If   intPosA   =   2   Then   Exit   Do  
   
        'remember   the   position   of   the   first   marker  
   
        If   lngFirstBegin   =   0   Then   lngFirstBegin   =   intPosA   -   2  
   
        'looking   for   the   end   of   string   the   marker   belongs   to  
   
        intPosB   =   InStr(intPosA   +   1,   strMessage,   vbCrLf)  
   
        If   intPosB   >   0   Then  
   
              'check   whether   it   is   real   marker   or   just    
   
              'an   ordinal   word   "begin"  
   
              If   Mid$(strMessage,   intPosA,   _  
   
                    intPosB   -   intPosA)   Like   "begin   ###   *"   Then  
   
                    'exctract   the   name   of   the   file  
   
                    strFileName   =   Mid$(strMessage,   intPosA   +   _  
   
                                                10,   intPosB   -   intPosA   -   10)  
   
                    '  
   
                    'further   -   the   code   for   figuring   out   the   size   of   the   file  
   
                    'extract   encoded   data   of   the   file  
   
                    strAttachment   =   Mid$(strMessage,   intPosB   +   2,   _    
   
                                                    InStr(intPosB   +   2,   strMessage,   _  
   
                                                    vbCrLf   &   "'"   &   vbCrLf   &   "end")   _  
   
                                                    -   (intPosB   +   2))  
   
                    'remove   additional   symbols   vbCrlf  
   
                    strAttachment   =   Replace(strAttachment,   vbCrLf,   "")  
   
                    '"temporary"   size   of   the   file  
   
                    lngFileSize   =   CLng(Len(strAttachment))  
   
                    'get   the   number   of   full   strings  
   
                    lngFullStrings   =   lngFileSize   \   ENCODED_LINE_LENGTH  
   
                    If   lngFileSize   Mod   ENCODED_LINE_LENGTH   >   0   Then  
   
                          'The   size   of   the   file   is   equal   to  
   
                          'the   sum   of   the   two   meanings  
   
                          'The   first   one   multiplies   to   the   number   of   _  
   
                          'decoded   characters   (45)  
   
                          'The   second   one   is   the   number   of   the   bytes   _  
   
                          'in   the   last   string.   It   equals  
   
                          'to   the   difference   between   the   ASCII   meaning   _  
   
                          'of   the   fist   character   and   32  
   
                          lngFileSize   =   lngFullStrings   *   45   +   _  
   
                                                      (Asc(Mid$(strAttachment,   _  
   
                                                      lngFullStrings   *   _  
   
                                                      ENCODED_LINE_LENGTH   +   1,   1))   -   32)  
   
                    Else  
   
                          'This   code   runs   in   very   rare   cases   when   _  
   
                          'the   size   of   the   file   is   multiple  
   
                          'to   45   and   we   don't   need   to   process   _  
   
                          'non-standard   last   string   of   the   encoded   data  
   
                          lngFileSize   =   (lngFileSize   -   _  
   
                                                      lngFileSize   /   ENCODED_LINE_LENGTH)   *   0.75  
   
                    End   If  
   
                    'add   new   item   into   the   mvarAttachments   collection  
   
                    mvarAttachments.Add   lngFileSize,   strFileName  
   
              End   If  
   
        End   If  
   
  Loop  
   
  'separate   the   text   of   the   message  
   
  If   mvarAttachments.Count   >   0   Then  
   
        m_strMessageBody   =   Left$(lngFirstBegin   -   1)  
   
  End   If    
   
     
   
  上面的代码定义了文件名及其大小。这些信息保存在CAttachment对象中,当添中新的项目到mvarAttchments集合时,该对象即被创建。该集合是CMessage类的一个新的属性-Attachments。  
   
     
   
  下面是ListView控件的ItemClick事件中的代码:  
   
     
   
  Dim   oAttachment   As   CAttachment  
   
  Dim   lvItem   As   ListItem  
   
     
   
  lvAttachments.ListItems.Clear  
   
     
   
  For   Each   oAttachment   In   m_colMessages(Item.Key).Attachments  
   
          Set   lvItem   =   lvAttachments.ListItems.Add   _  
   
                                    (,   oAttachment.FileName,   oAttachment.FileName)  
   
          lvItem.SubItems(1)   =   oAttachment.Size  
   
  Next  
   
     
   
  txtBody   =   m_colMessages(Item.Key).MessageBody  
   
     
   
  End   Sub  
  Top

12 楼ZOU_SEAFARER(颓废程序员^_^)回复于 2006-03-09 16:10:33 得分 10

电子邮件的标准格式   (RFC   822)  
   
     
   
  除了由一个Internet用户传递给另一个用户的信息之外,电子邮件中还必须包含附加的服务信息。SMTP服务器利用这些信息来传递邮件,而客户端的邮件接收软件则利用这些信息来对邮件进行分类。这些附加的数据用信头的形式被包含在邮件主体中。邮件正文则紧随其后。如果你是用Outlook   Express,用你的鼠标右键点一封邮件,然后选取“属性”,你就可以看到信头是什么样的了。如下图:    
   
     
   
     
   
     
   
  在“详细资料”标签页中的文本就是邮件的信头。如果你想看邮件的所有内容,只须点选一下“邮件源文件...”按钮。对普通用户而言,邮件信头一点都不吸引人。但是如果你想开发互联网应用程序的话,你就不能不对此有所了解。如果你不遵守下面这些简单的规则,只能导致程序的失败。  
   
  在这里你能找到建立信头的规则,信头每个字段的目的,所运用的语法以及数据格式等等内容。RFC822是一个大文件,在这里我们无法包含该文件的所有细节。你可以把本文的内容当作是一个快速入门,在多数情况下这已经很足够了。想知道该文件的所有内容,就把这个文件下载回去慢慢咀嚼吧。  
   
     
   
  每封邮件都有两个部分:信头和主体。邮件主体就是你发送给收件人的数据(包括文本或文件)信头是一系列的字段(Fields)。一个空字符串将主体同信头分开,也就是说一个空字符串标记了信头的结束。在VB中,空字符串可写成vbCrLf   +   vbCrLf.   通过InStr函数你可以很方便地把它找出来。例如:    
   
     
   
  intBorderLine   =   InStr(1,   strMessage,   vbCrLf   +   vbCrLf)    
   
     
   
  信头部分的字段可分为两类。一类是由你的电子邮件程序产生的,另一类是邮件通过SMTP服务器时被加上的。在所有被SMTP服务器加上的字段中,对我们而言最重要的是Message-Id字段。这个字段是由你传向的SMTP服务器加上的。这个一个唯一的ID号。你可用这个号码作为邮件的编号。  
   
     
   
  下表列出了可由用户的邮件程序控制的信头字段。这并不意味着所有的字段都是必须的。实际上可以忽略形成信头这一步骤而只发送正文。让你的SMTP服务器为你加上最起码的必需字段。  
   
     
   
  信头字段   目的    
   
  From   邮件作者    
   
  Sender   发信人    
   
  Reply-To   回邮地址    
   
  To   收信人地址    
   
  CC   另一个收信人地址    
   
  BCC   收信人地址,但这个收信人看不到其它收信人的地址。    
   
  Subject   主题    
   
  Comments   备注    
   
  Keywords   关键字,用来进一步搜索邮件    
   
  In-Reply-To   被当前邮件回复的邮件的ID    
   
  References   几乎同In-Reply-To一样    
   
  Encrypted   加密邮件的加密类型    
   
  Date   发信日期    
   
  表1.   邮件信头字段  
   
     
   
     
   
  建立信头的规则很简单。用冒号将字段名同字段值分开。每个字段从一个新的字符串开始,但是字段值可能会占用几个字符串,这取决于SMTP服务器对字符串长度的限制。  
   
     
   
  不幸的是,RFC822推荐的日期和时间格式同VB不兼容。当我们编辑邮件时,我们得用FORMAT函数例如:    
   
     
   
  Format(Now,"ddd,   dd   mmm   yyyy   hh:mm:ss")   &   "   GMT   +0400"    
   
     
   
  尽管如此,为了将Internet的日期/时间转换成VB的日期类型,你有必要开发你自己的函数或是调用WinInet   API中的InternetTimeToSystemTime函数。如果想知道更多这方面的规定,读读RFC822吧。  
   
     
   
  除了标准字段外,信头还可以包含用户自定义的字段。这些用户自定义的字段名必须由X开始。例如:    
   
     
   
  X-Mailer:   Microsoft   Outlook   Express   4.72.2106.4    
  Top

13 楼nz(裕)回复于 2006-03-09 19:07:30 得分 0

谢谢Top

14 楼nz(裕)回复于 2006-03-09 19:08:15 得分 0

我的EMAIL:     nz3303@163.comTop

相关问题

  • cdonts组件发送带有附件的邮件时出错。代码见内。
  • 需要pop3代附件的源代码!
  • 求一段“附件 上传“的代码!!
  • 100分求附件上传源代码
  • 怎样用代码发送带附件的邮件,谢谢
  • 谁有 winsock 源代码
  • 在VB里如何用JMAIL发送带有附件的邮件?
  • 怎样写带有附件的邮件发送程序?
  • 高分求邮件附件分离的源代码!分不够再加100分
  • 附件的拷贝问题:有原代码,,,(解决马上给分)。。。

关键词

  • .net
  • 字段
  • 邮件
  • 函数
  • 代码
  • 服务器
  • winsock
  • 文件
  • 控件
  • 用户

得分解答快速导航

  • 帖主:nz
  • Modest
  • Modest
  • zyg0
  • Cooly
  • Cooly
  • lc_mtt
  • ZOU_SEAFARER
  • ZOU_SEAFARER

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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