精华内容
下载资源
问答
  • 电子邮件发送协议主要是SMTP,收件协议主要是POP3和IMAP; SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。...

    电子邮件发送协议主要是SMTP,收件协议主要是POP3和IMAP;

    SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。 

     

    POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

     

    虽然POP3是用来接收邮件的协议,但不要理解成没有SMTP一样能收取邮件,邮件服务器是通过SMTP来控制邮件的中转,两个邮件服务器之间传输工作和POP3一点关系都没有。

     

    当两台不同的服务器进行消息通讯时,是SMTP进行握手,A服务器发送邮件到B服务器,B服务器的SMTP会替本地用户接受外面发过来的邮件,然后POP3/IMAP去读取SMTP收取的邮件。

    SMTP是邮局,POP3是快递员,快递员只会去邮局领取邮件,而不是直接去发件人手上直接拿,两个地区(邮箱服务器)邮件收发也是通过邮局(SMTP)来完成

    图示6个步骤进行说明:

    1. 用户A的邮箱为xxx@qq.cm,通过foxmail客户端写好一封邮件点击发送,即提交到了QQ邮箱服务器,使用的是SMTP协议。
    2. QQ邮箱会对A发送邮件的收件地址进行解析,判断是否为内部邮箱的账号,如果也是qq邮箱,会直接存储到自己的存储空间,如果不是则会发送到指定邮箱服务器,使用的也是SMTP协议。
    3. 163服务器收到邮件后会再次判断该邮件是否为自己的邮件,如果是则存到自己的存储空间,等待POP3服务去读取邮件
    4. 用户B收到消息后,打开客户端访问163服务器(也可以自己敲命令直接访问),163服务器会去调用POP3服务
    5. Pop3服务接到指令后,读取存储空间中发送给B的未读邮件服务。
    6. 将读取到的邮件返回给客户端软件

    发送端口25/587/465的区别:

    SMTP服务的标准端口是25,邮件服务器之间通讯转发使用的都是25

     

    587端口是客户端向服务器提交消息的推荐端口。

     

    465端口是smtp的加密端口,个人理解:465是服务器与客户端之间的加密,25端口是服

    务器与服务器的,是不能呢随便更改的,否则会收不到别的服务器发送的邮件。

     

    了解了邮件的发送和接受之后,下面开始搭建邮件服务器

     

    展开全文
  • 【中国邮箱网 电子邮件频道】SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在...
    【中国邮箱网 电子邮件频道】SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。

    SMTP协议的基本介绍

    SMTP 是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。SMTP 是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。

    SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。SMTP 重要特性之一是其能跨越网络传输邮件,即“ SMTP 邮件中继”。通常,一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP 传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。

    在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一条 IP 地址。

    在传输文件过程中使用端口:25

    SMTP是因特网电子邮件系统首要的应用层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服 务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。当一个邮件服务器从其他邮件服务器接收邮件消息时,它是作为SMTP服务器在运行。

    SMTP协议与人们用于面对面交互的礼仪之间有许多相似之处。首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务 器主机上的SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再尝试建立该连接。这个连接建立之后,SMTP客户和服务器先执行一些应用层握手操作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前先自我介绍一下。 在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息。SMTP可以指望由 TCP提供的可靠数据传输服务把该消息无错地传送到服务器。如果客户还有其他邮件消息需发送到同一个服务器,它就在同一个TCP连接上重复上述过程;否 则,它就指示TCP关闭该连接。

    SMTP被用来在因特网上传递电子邮件。文件RFC821规定了该协议的所有细节。但是你只须记住下面的内容--该协议的基本命令和方法就行了。 

    协议的原理很简单。无非是一个客户端计算机向服务器发送命令,然后服务器向客户端计算机返回一些信息。客房端发送的命令以及服务器的回应都是字符串,你并不需要特别的软件就能读出它们。如果你仔细看过WinsockTerminal示例程序的源代码,你就会发现这一点。现在让我们用这个示例程序来向自己发一封电子邮件吧。 

    运行示例程序,单击"Connect"按钮,在"Connectto..."对话框中输入你的电子邮件服务器的地址,选择SMTP选项。最后按"Connect"按钮。如果连接成功,Winsock控件会产生Connected事件,在状态栏中也可看到连接成功的信息。在主文本窗口中你将看到从服务器返回的文本。该文本包含一个三位数的代码及描述,例如: 

    220-ns.cinfo.ruSendmail8.6.12/8.6.9readyatWed,22Apr199822:54:41+0300 
    220ESMTPspokenhere 

    不必太过留意这些描述。因为这些描述可能会因服务器而异。你只须要知道代码所代表的意思就行了。代码220表示成功建立连接,服务器等待你的第一个命令。 

    向服务器传递的第一个命令是HELO.该命令包含一个参数,即你的邮箱名。 

    HELOoleg 

    注意:在RFC821中,HELO是一个可选择性命令,如果服务器不要求该命令的话,你可以把它忽略掉。 

    如果命令成功,服务器会返回一个代码为250的回应。下一步用MAILFROM命令告诉服务器你想发一封邮件。该命令以发信人的邮件地址为参数。 

    MAILFROM : [email]oleg@vbip.com[/email] 

    发完命令后,如果服务器返回一个代码为250回应,你就可以向服务器发送RCPTTO命令了。该命令以收信人地址为参数,一看便知是告诉服务器你想将邮件发到收信人地址处。 

    RCPTTO : [email]somebody@domain.com[/email] 

    如果你想将邮件发给多个收件人的话。你需要多次使用RCPTTO命令,对每个命令,服务器都会返回代码为250的回应。 

    现在你可以向服务器发送邮件正文了。用DATA命令告诉服务器以下的内容为邮件正文。在你从服务器收到代码为354的回应后,你就可以发送邮件正文了。邮件按行发送,每行邮件以一个无回车的换行符结束(在VB中就是vbLf)示例程序知道何时使用换行符,何时使用回车加换行符。所以你只须按回车键就行了。下面是一个例子: 

    Subject : Myfirste-mailmessage. 

    Firstlineofamessage. 
    Secondline. 

    注意上面最后一行的最后一个字符是一个小数点。这是正文结束的标志。用VB代码表示就是vbLf&"."&vbCrLf.服务器收到这个标志后,就会立即向你返回一个代码为250的回应以及该邮件的唯一ID号。 

    250WAA10568Messageacceptedfordelivery 

    任务完成了,你可以继续发送下封邮件,也可以断开同服务器的连接。如果要断开同服务器的连接就用QUIT命令。在这种情况下,服务器会返回一个代码为221的回应并断开连接。 

    SMTP协议原始命令码和工作原理 

    1.SMTP是工作在两种情况下:

    一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器 

    2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返 
    回状态的三位数字代码 

    3.SMTP在TCP协议25号端口监听连接请求 

    4.连接和发送过程: 

    a.建立TCP连接 
    b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令 
    服务器端正希望以OK作为响应,表明准备接收 
    c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行 
    服务器端则表示是否愿意为收件人接受邮件 
    d.协商结束,发送邮件,用命令DATA发送 
    e. 以.表示结束输入内容一起发送出去 
    f.结束此次发送,用QUIT命令退出。 

    5.另外两个命令: 

    VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。 
    EXPN---用于扩充邮件列表。 

    6.邮件路由过程: 

    SMTP服务器基于‘域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录 
    来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。 

    若SMTP服务器mail.abc.com收到一封信要发到[email]shuser@sh.abc.com[/email]: 

    a.Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次 
    请求shmail.abc.com的CNAME记录,直到没有为止 
    b.假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录, 
    shmail MX 5 shmail.abc.com 
    10 shmail2.abc.com 
    c. Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4 
    d. Sendmail与1.2.3.4连接,传送这封给[email]shuser@sh.abc.com[/email]的信到1.2.3.4这台服务器的SMTP后台程序 

    7.SMTP基本命令集: 

    命令        描述 
    ------------------------------ 
    HELO 向服务器标识用户身份 
    发送者能欺骗,说谎,但一般情况下服务器都能检测到。 

    MAIL 初始化邮件传输 
    mail from: 
    RCPT 标识单个的邮件接收人;常在MAIL命令后面 
    可有多个rcpt to: 
    DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束。 
    VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令 
    EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用 
    HELP 查询服务器支持什么命令 
    NOOP 无操作,服务器应响应OK 
    QUIT 结束会话 
    RSET 重置会话,当前传输被取消 
    -------------------------------- 

    8. MAIL FROM命令中指定的地址是称作 envelope from地址,不需要和发送者自己的地址是一致的。 
    RCPT TO 与之等同,指明的接收者地址称为envelope to地址,而与实际的to:行是什么无关。 

    9.为什么没有RCPT CC和RCPT BCC:? 
    所有的接收者协商都通过RCPT TO命令来实现,如果是BCC,则协商发送后在对方接收时被删掉信封接收者 

    10.邮件被分为信封部分,信头部分和信体部分 
    envelope from, envelope to 与message from:, message to:完全不相干。 
    evnelope是由服务器主机间SMTP后台提供的,而message from/to是由用户提供的。有无冒号也是区别。 

    11. 怎样由信封部分检查是否一封信是否是伪造的? 
    a. received行的关联性。 
    现在的SMTP邮件传输系统,在信封部分除了两端的内部主机处理的之个,考虑两个公司防火墙之间 
    的部分,若两台防火墙机器分别为A和B,但接收者检查信封received:行时发现经过了C.则是伪造的。 
    b. received :行中的主机和IP地址对是否对应如: 
    Receibed : from galangal.org (turmeric.com [104.128.23.115] by mail .bieberdorf.edu.... 
    c. 被人手动添加在最后面的received行: 
    Received : from galangal.org ([104.128.23.115]) by mail .bieberdorf.edu (8.8.5) 
    Received : from lemongrass.org by galangal.org (8.7.3) 
    Received : from graprao.com by lemongrass.org (8.6.4) 

    SMTP协议通讯模型 

    SMTP协议是TCP/IP协议族中的一员,主要对如何将电子邮件从发送方地址传送到接收方地址,也即是对传输的规则做了规定。SMTP协议的通信模型并不复杂,主要工作集中在发送SMTP和接收SMTP上:首先针对用户发出的邮件请求,由发送SMTP建立一条连接到接收SMTP的双工通讯链路,这里的接收SMTP是相对于发送SMTP而言的,实际上它既可以是最终的接收者也可以是中间传送者。发送SMTP负责向接收SMTP发送SMTP命令,而接收SMTP则负责接收并反馈应答。可大致用下面的通讯模型示意图来表示: 


    SMTP协议的命令和应答 

    从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的。在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响。双方如此反复多次,直至邮件处理完毕。SMTP协议共包含10个SMTP命令,列表如下: 

    SMTP命令命令说明 

    HELLO<domain><CRLF>识别发送方到接收SMTP的一个HELLO命令 
    MAILFROM :<reverse-path><CRLF><reverse-path>为发送者地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。 
    RCPTTO :<forward-path><CRLF><forward-path>标识各个邮件接收者的地址 
    DATA<CRLF> 
    接收SMTP将把其后的行为看作邮件数据去处理,以<CRLF>.<CRLF>标识数据的结尾。 
    REST<CRLF>退出/复位当前的邮件传输 
    NOOP<CRLF>要求接收SMTP仅做OK应答。(用于测试) 
    QUIT<CRLF>要求接收SMTP返回一个OK应答并关闭传输。 
    VRFY<string><CRLF>验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令。 
    EXPN<string><CRLF>验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用。 
    HELP<CRLF>查询服务器支持什么命令 

    注:<CRLF>为回车、换行,ASCII码分别为13、10(十进制)。 

    SMTP协议的每一个命令都会返回一个应答码,应答码的每一个数字都是有特定含义的,如第一位数字为2时表示命令成功;为5表失败;3表没有完成。一些较复杂的邮件程序利用该特点,首先检查应答码的首数字,并根据其值来决定下一步的动作。下面将SMTP的应答码列表如下: 

    应答码说明 

    501参数格式错误 
    502命令不可实现 
    503错误的命令序列 
    504命令参数不可实现 
    211系统状态或系统帮助响应 
    214帮助信息 
    220<domain>服务就绪 
    221<domain>服务关闭 
    421<domain>服务未就绪,关闭传输信道 
    250要求的邮件操作完成 
    251用户非本地,将转发向<forward-path> 
    450要求的邮件操作未完成,邮箱不可用 
    550要求的邮件操作未完成,邮箱不可用 
    451放弃要求的操作;处理过程中出错 
    551用户非本地,请尝试<forward-path> 
    452系统存储不足,要求的操作未执行 
    552过量的存储分配,要求的操作未执行 
    553邮箱名不可用,要求的操作未执行 
    354开始邮件输入,以"."结束 
    554操作失败

    SMTP通信举例

    在发送方(客户端)和接收方(服务器)间建立连接之后,接下来是一个合法的SMTP会话。在下面的对话中,所有客户端发送的都以“C:”作为前缀,所有服务器发送的都以“S:”作为前缀。在多数计算机系统上,可以在发送的机器上使用telnet命令来建立连接,比如:
    telnet www.example.com 25
    它打开一个从发送的机器到主机www.example.com的SMTP连接。
    S: 220 www.example.com ESMTP Postfix
    C: HELO mydomain.com
    S: 250 Hello mydomain.com
    C: MAIL FROM: <sender@mydomain.com>
    S: 250 Ok
    C: RCPT TO: <friend@example.com>
    S: 250 Ok
    C: DATA
    S: 354 End data with <CR><LF>.<CR><LF>
    C: Subject: test message
    C: From:""< sender@mydomain.com>
    C: To:""< friend@example.com>
    C:
    C: Hello,
    C: This is a test.
    C: Goodbye.
    C: .
    S: 250 Ok: queued as 12345
    C: quit
    S: 221 Bye
    虽然是可选的,但几乎所有的客户端都会使用EHLO问候消息(而不是上面所示的HELO)来询问服务器支持何种SMTP扩展,邮件的文本体(接着DATA)一般是典型的MIME格式。

    SMTP安全和垃圾邮件

    最初的SMTP的局限之一在于它没有对发送方进行身份验证的机制。因此,后来定义了SMTP-AUTH扩展。
    尽管有了身份认证机制,垃圾邮件仍然是一个主要的问题。但由于庞大的SMTP安装数量带来的网络效应,大刀阔斧地修改或完全替代SMTP被认为是不现实的。Internet Mail 2000就是一个替代SMTP的建议方案。
    因此,出现了一些同SMTP工作的辅助协议。IRTF的反垃圾邮件研究小组正在研究一些建议方案,以提供简单、灵活、轻量级的、可升级的源端认证。最有可能被接受的建议方案是发送方策略框架协议。

    维基百科对于SMTP协议介绍

    简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是事实上的在Internet传输email的标准。

    SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。

    在八十年代早期SMTP开始被广泛地使用。当时,它只是作为UUCP的补充,UUCP更适合于处理在间歇连接的机器间传送邮件。相反,SMTP在发送和接收的机器始终连接在网络的情况下工作得最好。

    Sendmail是最早实现SMTP的邮件传输代理之一。到2001年至少有50个程序将SMTP实现为一个客户端(消息的发送者)或一个服务器(消息的接收者)。一些其他的流行的SMTP服务器程序包括了Philip Hazel的exim,IBM的Postfix, D. J. Bernstein的Qmail,以及Microsoft Exchange Server。

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

    SMTP是一个“推”的协议,它不允许根据需要从远程服务器上“拉”来消息。要做到这点,邮件客户端必须使用POP3或IMAP。另一个SMTP服务器可以使用ETRN在SMTP上触发一个发送。

    参考资料:

    维基百科中文版SMTP介绍:http://zh.wikipedia.org/zh-cn/SMTP
    百度百科基于SMTP介绍:http://baike.baidu.com/view/5450.htm

    中国邮箱网编辑整理
    展开全文
  • ASP.NET发送电子邮件

    2019-02-25 17:18:00
    注:本博文主要讲的是以SMTP 协议下的邮件发送 SMTP SMTP的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议...

    注:本博文主要讲的是以SMTP 协议下的邮件发送

    SMTP

    SMTP的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。

    发送邮件方式:

    1、发送文本邮件(可能带有附件)

    2、发送HTML邮件(可能带有附件)

    发送邮件所要用到的类

    1、SmtpClient 类用于将电子邮件发送到 SMTP 服务器以便传递

    2、MailMessage 类的实例用于构造可使用 SmtpClient 类传输到 SMTP 服务器以便传递的电子邮件

    3、Attachment类的实例用于构造电子邮件的附件

    SmtpClient:

    1 SmtpClient smtpClient = new SmtpClient();
    2 smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
    3 smtpClient.Credentials = new System.Net.NetworkCredential("你的邮件账户", "你的邮件密码");
    4 smtpClient.Host = smtp.qq.com;//指定发送的服务器
    5 smtpClient.Port = 25;//指定端口号
    6 smtpClient.EnableSsl = true;//是否使用SSL加密
    7 smtpClient.Timeout = 100 * 1000;//设置超时时间(默认100秒)

     MailMessage :

    MailMessage mailMessage = new MailMessage();
    //发送人地址
    MailAddress mailAddressFrom = new MailAddress("发送地址", "别名");//如:你好<hello@qq.com>
    mailMessage.From = mailAddressFrom;
    //接收人(可能有多个)
    foreach (MailAddress mailAddress in MailTo)
     {
          mailMessage.To.Add(mailAddress.Address);
     }
    mailMessage.Subject = Subject;//标题
    if (!IsBodyHtml)
          mailMessage.Body = MailBody;//内容
     mailMessage.BodyEncoding = Encoding.UTF8;//内容编码
    
     //抄送(可能多个)
     foreach (MailAddress mailAddress in MailCc)
    {
          mailMessage.CC.Add(mailAddress.Address);
    }
    //内容是否为HTML
    mailMessage.IsBodyHtml = IsBodyHtml;

     

    转载于:https://www.cnblogs.com/longdunxiong/p/4240960.html

    展开全文
  • 发送电子邮件

    2007-10-29 13:58:00
    说到发送邮件发送,先提一下SMTP(呵呵,高手就跳过这一段吧!)。 SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式...
             说到发送邮件发送,先提一下SMTP(呵呵,高手就跳过这一段吧!)。 SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
             再简单介绍一下名称空间(NameSpace)System.Web.Mail类库里所提供的邮件发送的对象、属性和方法
             (1)它有三个类:SmtpMail、MailMessage和MailAttachment。这三个对象本文的示例程序代码中都应用到了!
             1. MailMessage ,提供属性和方法来创建一个邮件消息对象。(Provides properties and methods for constructing an e-mail message.) 
             2. MailAttachments – 提供属性和方法来创建一个邮件附件对象。(Provides properties and methods for constructing an e-mail attachment.)
             3. SmtpMail – 提供属性和方法通过使用windows 2000 CDOSYS 的消息组件的联合数据对象来发送邮件消息)。(Provides properties and methods for sending messages using the Collaboration Data Objects for Windows 2000 (CDOSYS) message component)
            (2)各个类的属性。
            1.先简单介绍SmtpMail的属性: SmtpServer -- SMTP的地址。 
            2.主要来介绍MailMessage对象的属性
             From -- 发送邮件的地址
             To -- 接受邮件的地址
             Subject -- 邮件的标题
             Priority -- 邮件的优先级(有效值为High,Low,Normal)
             Attachments -- 返回一个集合,代表附件
             Bcc -- 密送地址 
             Cc -- 抄送地址 
             Body -- 获取或是设置电子邮件消息的内容
             BodyFormat -- 获取或是设置MailFormat的枚举值,此值指定消息体邮件的格式(Html格式、Text格式)
             Bodyencoding -- 指定消息的编码方式编码(主要有Base64,UUencode)
             其他几个不重要的省略。 随便提到密送和抄送的区别:密送就是你群发邮件时收邮件的人无法看到你发给了多少人以及他们的邮件地址,抄送就是群发邮件时收邮件的人则可以看到你发给了多少人以及他们的邮件地址。            
             (3)SmtpMail类的Send方法,它的目的就是发送邮件,有两个重载方法。
             1. SmtpMail.Send("发送邮件的地址","接受邮件的地址","邮件的标题","邮件消息的内容") 这个方法很简单,不适合发送带附件的邮件。 
             2. SmtpMail.Send(MailMessage) 此方法复杂、灵活,适合发送附件,而且可以设置MailMessage对象的各种属性值。 如果我们用ASP.NET写一个邮件发送的程序,那么首先应该如何得到SMTP。有两种方法:第一种方法调用目前知名的邮件服务提供商的SMTP,比如新浪、搜狐、网易的免费电子邮箱的SMTP;第二种方法是自己装一个SMTP虚拟服务器,这个在安装IIS时一起装上去的(安装过程就省略了:-) )。
             一、在ASP.NET利用知名的邮件服务提供商的SMTP来发送邮件
             首先需要去他们的邮件站点上注册免费邮箱,因为你要使用邮件服务提供商的SMTP,他们需要对身份进行验证,这样可以避免产生大量的垃圾邮件。假设我们在新浪的邮件站点(mail.sina.com.cn)上注册了一个免费电子邮件,用户名是mysina,密码是chenjie.该帐号为虚构的,请使用自己注册的用户名称和密码代替。我们在新浪的邮件站点获知它的SMTP地址是:smtp.sina.com.cn。我们需要向scucj@126.com(我的邮箱地址)发送邮件。 那么利用ASP.NET(C#)发送邮件的核心代码如下: 
            
    //核心代码开始 
            using System.Web.Mail; 
            MailMessage objMailMessage; 
            MailAttachment objMailAttachment; 
            
    // 创建一个附件对象 
            objMailAttachment = new MailAttachment( "d:/test.txt" );//发送邮件的附件 
            
    // 创建邮件消息 
            objMailMessage = new MailMessage(); 
            objMailMessage.From 
    = "mysina@sina.com";//源邮件地址 
            objMailMessage.To = "scucj@126.com";//目的邮件地址,也就是发给我哈 
            objMailMessage.Subject = "邮件发送标题:你好";//发送邮件的标题 
            objMailMessage.Body = "邮件发送标内容:测试一下是否发送成功!";//发送邮件的内容 
            objMailMessage.Attachments.Add( objMailAttachment );//将附件附加到邮件消息对象中 
            
    //接着利用sina的SMTP来发送邮件,需要使用Microsoft .NET Framework SDK v1.1和它以上的版本 
            
    //基本权限 
            objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate""1"); 
            
    //用户名 
             objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername""mysina") ; 
             
    //密码 
             objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword""chenjie"); 
             
    /如果没有上述三行代码,则出现如下错误提示:服务器拒绝了一个或多个收件人地址。服务器响应为: 554 : Client host rejected: Access denied 
            
    //SMTP地址 
            SmtpMail.SmtpServer = "smtp.sina.com.cn"
            
    //开始发送邮件 
            SmtpMail.Send( objMailMessage ); 
             
    //核心代码结束 
             二、在ASP.NET利用本机的SMTP虚拟服务器的SMTP来发送邮件
             首先说一下SMTP配置。 
            (1)右键点击“SMTP虚拟服务器”选择“属性”->在“常规”选项卡中设置“IP地址(P)”,我设置的是192.168.1.100。 
            (2)选择“访问”选项卡,点击“中继”,选上“仅以下列表”(默认是被选上的),点击“添加”,在“单台计算机”中加入192.168.1.100。 
             提示,如果没有完成(2),则会出现大家常见的一种错误提示:服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for scucj@126.com (友情提示一下:错误中的邮件地址有所不同) 然后开始核心代码,其实和方法(一)的差不多。与(一)的主要区别在于:1.SMTP的不同,2.objMailMessage.From中本方法可以随便填写,但是(一)中别随便填写那么利用ASP.NET(C#)发送邮件的核心代码如下: 
            
             //核心代码开始 
             using System.Web.Mail; 
             MailMessage objMailMessage; 
             MailAttachment objMailAttachment; 
             
    // 创建一个附件对象 
             objMailAttachment = new MailAttachment( "d:/test.txt" );//发送邮件的附件 
             
    // 创建邮件消息 
             objMailMessage = new MailMessage(); 
             objMailMessage.From 
    = "mysina@sina.com";//源邮件地址 
             objMailMessage.To = "scucj@126.com";//目的邮件地址,也就是发给我哈 
             objMailMessage.Subject = "邮件发送标题:你好";//发送邮件的标题 
             objMailMessage.Body = "邮件发送标内容:测试一下是否发送成功!";//发送邮件的内容 
             objMailMessage.Attachments.Add( objMailAttachment );//将附件附加到邮件消息对象中 
             
    //SMTP地址 
             SmtpMail.SmtpServer = "192.168.1.100"
             
    //开始发送邮件 
             SmtpMail.Send( objMailMessage );  

             以上两种方法介绍到这里。最简单的利用上面方法是在页面添加一个服务器按钮,把除引用的语句放到按钮单击事件中去。当然,别忘记了引用的语句放在最上面。 
             方法一的测试是完全正确,没有任何问题,但是方法二却导致邮件无法正确收到(***@sina.com),或者收到后也被放到垃圾邮件中去了(发往scucj@126.com)。  
     
    展开全文
  • 电子邮件可以使用 POP 和 SMTP 协议)。POP 和 POP3 (第三版邮局协议属于入站...一旦建立连接,服务器应立即将电子邮件发送至客户端。 另一方面,简单邮件传输协议 (SMTP) 管理从客户端发往电子邮件服务器(M...
  • 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是用于发送电子邮件协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机...
  • POP3是Post Office Protocol 3的简称,即邮局协议的第三个版本,他是规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件协议。它是因特网电子邮件的第一个离线协议的标准。POP3允许用户从服务器上把...
  • 用Asp.net实现发送电子邮件

    千次阅读 2006-06-29 09:39:00
    说到电子邮件发送,还是先提一下SMTP(呵呵,高手就跳过这一段吧!)。 SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的...
  • 简单邮件传输协议SMTP

    千次阅读 2018-05-11 15:46:15
    1. SMTP协议概述SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是由源地址到目的地址传送邮件的一组规则,用来控制...SMTP服务器是遵循SMTP协议的邮件服务器,用来发送或中转电子邮件。首先,客户端...
  • 在 Python 的实际应用中,特别是在执行周期性定时任务的场景中,我们希望能够一种简单、方便的方式获取...SMTP 协议属于 TCP/IP 协议簇,是一种简单邮件传输协议,用于在邮件服务器之间发送电子邮件。Python提供 ...
  • smtp是什么邮件协议

    2021-03-09 05:18:21
    SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。 SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递...
  • 它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的...
  • 说到发送邮件发送,先提一下SMTP(呵呵,高手就跳过这一段吧!)。 SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式...

空空如也

空空如也

1 2 3 4 5 6
收藏数 108
精华内容 43
关键字:

属于电子邮件发送协议