目录

邮件收发

基本流程

具体过程

协议简介

SMTP

POP3

IMAP

MIME

在.NET中如何实现

常用的邮件服务器地址:

126邮箱

163邮箱

yahoo邮箱

Sohu邮箱

Gmail邮箱

QQ邮箱

可能会遇到的问题

配置用户代理

编写Socket程序发送电子邮件



邮件收发

基本流程

具体过程

1.发信人在用户代理上编辑邮件,并写清楚收件人的邮箱地址;
2.用户代理根据发信人编辑的信息,生成—封符合邮件格式的邮件;
3.用户代理把邮件发送到发信人的的邮件服务器上,邮件服务器上面有一个缓冲队列,发送到邮件服务器上面的邮件都会加入到缓冲队列中,等待邮件服务器上的SMTP客户端进行发送;
4.发信人的邮件服务器使用SMTP协议把这封邮件发送到收件人的邮件服务器上(它会自动根据收件人的邮箱来分析出收件人的邮箱服务器);
5.收件人的邮件服务器收到邮件后,把这封邮件放到收件人在这个服务器上的信箱中;
6.收件人使用用户代理来收取邮件。首先用户代理使用POP3协议来连接收件人所在的邮件服务器,身份验证成功后,用户代理就可以把邮件服务器上面的收件人邮箱里面的邮件读取出来,并展示给收件人。

下面以—个简短的例子来说明这个过程:


比如Tom要给Lucy发一封邮件,邀请她明天晚上一起看电脑。首先TOM会打开OutLook (用户代理),第一次使用用户代理时,需要进行相关的配置,详细的配置过程见后面的例子。我们先假设Tom已经配置好用户代理.Tom打开OutLook后,首先会填写收件人的邮箱,然后是邮件的主题以及邮件的内容,写好之后,点击发送。OutLook就会把这封邮件发送到Tom邮箱的服务器上面(比如Tom申请的是Gmail邮箱,那么这封邮件就会发送到Gmail的邮件服务器上面,这个邮件服务器的地址一般会由邮件服务商给出,在第一次配置OutLook时,就需要填写这个地址)。Tom邮箱服务器上面的SMTP客户端就根据收件人的地址,找到收件人所在的邮箱服务器,然后与收件人邮件服务器上面的SMTP端建立一个TCP连接,经过三次握手后,这封邮件就会通过这个连接传送到收件人的邮件服务器上面,也就是Lucy的邮箱服务器上面。如果Lucy需要收取邮件,它也需要一个用户代理,就假设她用的也是OutLook (她在第一次使用OutLook时,也要配置她的邮箱服务器地址),启动OutLook后,OutLook会每隔一段时间(这个时间可以由用户自己设置)去连接邮箱服务器,判断是否收到新的邮件,如果收到了新的邮件,就使用POP3协议把这封邮件读取出来,并通过OutLook显示给Lucy看。Lucy看到邮件后,答应了Tom的请求,她就会向Tom回复—封邮件,回复邮件的过程与上面的过程是—样。


协议简介

SMTP

SMTP(Simple Mail Transfer Protocol) 即简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供与来信有关的通知。

POP3

POP3(Pot Office Protocol 3) 即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

POP3协议支持"离线"邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或MAC。一旦邮件发送到PC机或MAC上,邮件服务器上的邮件将会被删除。但目前的POPg邮件服务器大都可以只下载邮件,服务器端并不删除”,也就是改进的POP3协议。

IMAP

Internet Mail Access Protocol (交互式邮件存取协议)。IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。

IMAP协议比较酷的功能是用户可以维护自己在服务器上的邮件目录;可以直接抓取邮件的特定部分(例如只有文本)。

IMAP的一个与POPs的区别是:IMAP它只下载邮件的主题,并不是把所有的邮件内容都下载下来,而是你邮箱当中还保留着邮件的副本,没有把你原邮箱中的邮件删除,你用邮件客户软件阅读邮件时才下载邮件的内容。较好支持这两种协议的邮件客户端有:ThunderMail.Foxmail,outlook等。

MIME

由于SMTP这个协议开始是基于纯ASCI文本的,在二进制文件上处理得并不好。后来开发了用来编码二进制文件的标准,如MIME,以使其通过SMTP来传输。今天,大多数SMTP服务器都支持8位MIME扩展,它使二进制文件的传输变得几乎和纯文本一样简单。


在.NET中如何实现


常用的邮件服务器地址:

126邮箱

POP3服务器:pop.126.comSMTP服务器:smtp.126.com

163邮箱

POP3服务器:pop.163.comSMTP服务器:smtp.163.com

yahoo邮箱

注意:yahoo在foxmail 4.1以上的版本设置如下:
POP3服务器:pop.mail.yahoo.com.cn        SMTP服务器:smtp.mail.yahoo.com.cn

Sohu邮箱

POP3服务器:pop3.sohu.com        SMTP服务器:smtp.sohu.com

Gmail邮箱

第一步:要手动配置,POP3服务器是pop.gmail.com        SMTP服务器是smtp.gmail.com
第二步:使用自动配置文件 http://toolbar.google.com/gmail-helper/GmailConfig.exe这样就OK喽~可以发送和接收Gmail邮件了。

QQ邮箱

POP3服务器:pop.qq.com        SMTP服务器:smtp.qq.com        SMTP服务器需要身份验证

从上面大家可以看出,一般的POP3邮件服务器地址为pop然后加上自己的域名,SMTP邮件服务器地址为smtp加上自己的域名。常用的邮件服务器地址都可以在网上找到,各大型邮箱smtp服务器及端收集。


可能会遇到的问题


配置用户代理


编写Socket程序发送电子邮件

// from:<~@sohu.com>// to:< ~@qq.com >代码如下:public static void main(String[] args) throws Exception{//创建socket对象Socket sk=new Socket("smtp.sohu.com",25);//创建输出流对象OutputStream os=sk.getOutputStream();//创建输入对象sk.getInputStream();BufferedReader br=new BufferedReader(new InputStreamReader(sk.getInputStream()));System.out.println(br.readLine());os.write("ehlo redarmychen/r/n".getBytes());System.out.println(br.readLine());System.out.println(br.readLine());System.out.println(br.readLine());os.write("auth login/r/n".getBytes());System.out.println(br.readLine());os.write("cmVkYXJteWNzZG4=/r/n".getBytes());System.out.println(br.readLine());os.write("cmVkYXJteWNzZG4=/r/n".getBytes());System.out.println(br.readLine());os.write("mail from:<redarmycsdn@sohu.com>/r/n".getBytes());System.out.println(br.readLine());os.write("rcpt to:< 1137760725@qq.com >/r/n".getBytes());System.out.println(br.readLine());os.write("data/r/n".getBytes());System.out.println(br.readLine());os.write("from:<redarmycsdn@sohu.com>/r/n".getBytes());System.out.println(br.readLine());os.write("to:< 1137760725@qq.com >/r/n".getBytes());System.out.println(br.readLine());os.write("subject:中奖了,快去看看吧>/r/n".getBytes());System.out.println(br.readLine());os.write("恭喜你获得一万元的大奖,请尽快登陆xxxxxxxxx领取/r/n".getBytes());os.write("./r/n".getBytes());System.out.println(br.readLine());os.write("quit/r/n".getBytes());br.close();os.close();sk.close();}

(邮件/用户)代理协议简介Socket程序发送电子邮件相关推荐

  1. 如何从我的Android应用程序发送电子邮件?

    我正在为Android编写应用程序. 如何从中发送电子邮件? #1楼 简单尝试这个 public void onCreate(Bundle savedInstanceState) {super.onC ...

  2. wordpress发邮件_如何修复WordPress不发送电子邮件的问题

    wordpress发邮件 One of the most commonly asked questions on WPBeginner is how to fix WordPress not send ...

  3. java发送hotmail邮件_如何使用Gmail、Yahoo或Hotmail通过Java应用程序发送电子邮件?...

    首先下载JavaMail API并确保相关的JAR文件在您的类路径中. 下面是一个使用Gmail的完整示例.import java.util.*;import javax.mail.*;import  ...

  4. php 发邮件附件pdf,php – 使用TCPDF发送电子邮件附件 | 码农网

    我有一个简单的课程申请表,填写完成后,会向申请人发送一封电子邮件,并附上他选择作为pdf附件的课程的费用报价. 我正在使用TCPDF并使用会话变量将数据从表单传递到库.内容采用 html 格式. 生成 ...

  5. android studio发邮件功能,Android发送电子邮件

    电子邮件是通过电子方式从一个系统用户通过网络分发给一个或多个收件人的邮件. 在开始电子邮件活动之前,您必须意图了解电子邮件功能,Intent在应用程序或应用程序外部将数据从一个组件传输到另一个组件. ...

  6. android发送电子邮件,Android发送电子邮件

    电子邮件 是通过电子方式从一个系统用户通过网络分发给一个或多个接收者的消息. 在开始电子邮件活动之前,您必须知道具有意图的电子邮件功能,Intent将数据从一个组件传送到应用程序中或应用程序外部的另一 ...

  7. php sll邮箱注册_使用php发送电子邮件(phpmailer)

    在项目开发过程中,经常会用到通过程序发送电子邮件,例如:注册用户通过邮件激活,通过邮件找回密码,发送报表等.这里介绍几种通过PHP发送电子邮件的 方式(1)通过mail()函数发送邮件(2)使用fso ...

  8. delphi indy_使用Delphi和Indy发送电子邮件(和附件)

    delphi indy Below are instructions for creating an "email sender" that includes an option ...

  9. linux 向程序发送信号,Linux下的信号处理

    Linux下的信号处理 发布时间:2006-01-02 09:34:14来源:红联作者:reing 前言:这一章我们讨论一下Linux下的信号处理函数. Linux下的信号处理函数: 信号的产生 信号 ...

最新文章

  1. linux fedora安装flameshot火焰截图
  2. VTK:外部轮廓用法实战
  3. python安装opencv出现错误_Python3安装OpenCV出错,如何解决?
  4. null索引表键值_MySQL 的B+树索引
  5. ECMAScript:客户端脚本语言的标准
  6. ENVI去除NDVI/EVI异常值、NAN(not a number,无效值)、无穷大(inf)
  7. Android页面传值b,android数据传递(一)之activityA传递到activityB
  8. Halcon软件安装教程
  9. python乱码转中文_Python中文乱码问题(转)
  10. js实现定时弹出广告效果
  11. SpringBoot格式化日期
  12. DELL EqualLogic PS存储硬盘故障数据恢复
  13. 又一个充电宝改装,经验升级版。
  14. 2019-安卓开发环境搭建-经验分享-Eclipse(主要内容)+Android Studio
  15. python能在业余时间赚钱吗?分享自己的接私活经验及学习经验
  16. Vmware安装MacOS系统
  17. 3D控件坐标转换效果
  18. mac os平台使用python爬虫自动下载巨潮网络文件
  19. 基于法拉第电磁感应定律的永动机(假
  20. 老子《道德经》第六十三章

热门文章

  1. Rsync+Sersync实时同步详细配置
  2. 基于 Python 的电信领域电信领域设计与实现-毕业设计程序
  3. 坐标系变换下的二阶偏导数求解
  4. Makefile有三个非常有用的变量。分别是$@,$^,$代表的意义分别是:
  5. 980处理器会支持鸿蒙系统吗,麒麟980处理器40w快充未来支持鸿蒙系统,吊打ov小米没问题了...
  6. 俞敏洪|马云|牛根|史玉柱|经典语录大全
  7. 构建绵羊(非常见物种)BSgenome参考基因组
  8. 百万奖金花落谁家|中国华录杯·开放数据创新应用大赛巅峰之战
  9. Samba Ubuntu 服务器配置
  10. 查准率与查全率的计算