zoukankan      html  css  js  c++  java
  • Asp.Net发送邮件详解

    一、Asp.NET环境下几种不同的邮件发送解决方案

     1、 WEB开发,在ASP.NET中引用System.Web.Mail类

    邮件消息是通过内置在 Microsoft Windows 2000 中的 SMTP 邮件服务或任意的 SMTP 服务器来传送的。System.Web.Mail 命名空间中生成的SmtpMail类可用于在C#网络程序中发送SMTP邮件。此命名空间中的类可以在 ASP.NET 或任何托管应用程序。在System.Web.Mail提供用于构造电子邮件附件的属性和方法的类MailAttachment和用于构造电子邮件的属性和方法的类MailMessage

     SmtpMail

            属性:

    SmtpServer 获取或设置要用于发送所有电子邮件的 SMTP 邮件服务器的名称。

    方法:

    Send()                          发送电子邮件。

     MailMessage

            属性:

           Attachment              指定随消息一起传输的附件列表。
           
    Bcc                          获取或设置以分号分隔的电子邮件地址列表,这些地址接收电子邮件的匿名副本                                              (BCC)

    Body                       获取或设置电子邮件的正文。

    BodyEncoding         获取或设置电子邮件正文的编码类型。

    BodyFormat           获取或设置电子邮件正文的内容类型。

    Cc                          获取或设置以分号分隔的电子邮件地址列表,这些地址接收电子邮件的抄送副本 (CC)

    From                      获取或设置发件人的电子邮件地址。

    Headers                 指定随电子邮件一起传输的自定义标头。

    Priority                  获取或设置电子邮件的优先级。

    Subject                  获取或设置电子邮件的主题行。

    To                         获取或设置收件人的电子邮件地址。

    UrlContentBase    获取或设置 Content-Base HTTP 标头,即在 HTML 编码的电子邮件正文中使用的所有相对URL URL 基。

    UrlContentLocation获取或设置电子邮件的 Content-Location HTTP 标头。

     MailAttachment

            构造函数:

           public MailAttachment( string filename);

    filename附件文件的名称。


    代码如下:

    using System;

    using System.Collections;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Web;

    using System.Web.SessionState;

    using System.Web.UI;

    using System.Web.UI.WebControls;

    using System.Web.UI.HtmlControls;

    using System.Web.Mail;

    namespace WebMail

    {

         
    public class WebForm1 : System.Web.UI.Page

         {

              
    protected System.Web.UI.WebControls.Button Button1;

              
    private System.Web.Mail.MailMessage m_Mail;

              
    private void Page_Load(object sender, System.EventArgs e)

             {

                  m_Mail
    =new MailMessage();

             }

              
    #region Web Form Designer generated code

              
    override protected void OnInit(EventArgs e)

             {

                  InitializeComponent();

                  
    base.OnInit(e);

             }

              
    private void InitializeComponent()

             {    

                  
    this.Button1.Click += new System.EventHandler(this.Button1_Click);

                  
    this.Load += new System.EventHandler(this.Page_Load);

             }

              
    #endregion

              
    private void Button1_Click(object sender, System.EventArgs e)

             {

                  
    '定义SMTP服务器的名称 

            m_Mail.SmtpServer 
    = "smtp.163.com";

                
    '定义邮件的发送地址 

                  m_Mail.From
    =" lihonggen@163.com ";;

                  
    '定义邮件的接收地址 

            m_Mail.To 
    = " lihonggen0@163.com";

                  
    '定义邮件的暗送地址 

                    
    'm_Mail.Bcc "aa@sina.com"

                 
    '定义邮件的抄送地址 

                
    'm_Mail.Cc = "aaa@sina.com"

                  
    '定义邮件的主题 

                m_Mail.Subject 
    = "主题";

                 
    '定义邮件的主体 

                    m_Mail.Body 
    = "邮件主体!";

                    
    '邮件以 HTML的格式发送 

                    m_Mail.BodyFormat 
    = MailFormat.Html;

                 
    '定义邮件的有限级,在此设定为高 

                    m_Mail.Priority 
    = MailPriority.High;

                
    '给发送的邮件附加上一个附件 

                  m_Mail.Attachments.Add(New MailAttachment(
    "c:"lihonggen.doc"));

                  SmtpMail.Send(m_Mail);

             }

         }

    }

    2、 在开发Windows 应用程序中使用System.Net.Sockets

    也是基于SMTP协议

    一、SMTP协议简介

     客户端通过服务器的25端口建立TCP/IP连接

    服务器端: 220 server.com Simple Mail Transfer Service Ready

     客户端使用“HELO”命令标识发件人

    客户端:HELO server.com

    服务器端:250 server.com

     客户端发送MAIL命令,服务器端以OK作为响应表明准备接收

    客户端: MAIL FROM: <A@B.com>

    服务器端: 250 OK

     客户端发送RCPT命令标识收件人,服务器端回应是否愿意为收件人接受邮件

    客户端:RCPT TO: <d@e.com>

    服务器端:250 OK

     协商结束后用命令DATA发送发送邮件

    客户端:DATA

    服务器端:354 Start mail input: end with <CRLF>.<CRLF>

     客户端以.表示结束输入内容一起发送出去

    客户端:Subject:  <CRLF>

    内容<CRLF>

    .<CRLF>

     客户端用QUIT命令退出。

                  客户端:QUIT

    服务器端:250 server.com closing transmission channel

    优点:可以在此基础上开发出自己的组件,利用Sockets我们可以进行网络编程开发

    缺点:程序量相对较多,

    因代码过长所以在此不显示了

    3、 IIS SMTP自带的基本的发信组件CDONTS

    你不必专门下载,微软已经提供了这个组件,只要安装了2000NTSMTP就会有的。

    优点:组件由操作系统自带

    缺点:功能比较差,可扩展性不强

            Mymail = CreateObject("CDONTS.NewMail")

            Mymail.From = *** '信件发送者信箱

            Mymail.To = *** ‘信件接收者信箱

            Mymail.CC = *** '抄送

            Mymail.BCC = *** ’密件发送

            Mymail.Subject = *** ‘信件主题

            Mymail.Body = *** ’信件正文

            '设置优先级,0-不重要,1-一般,2-重要。

            Mymail.Importance = 2

            Mymail.Send()

            Mymail = Nothing

    4、使用JMail组件

    Jmail具有以下特点:

    (1)可以发送附件;
    (2)详细日志能力,便于你查看问题所在;
    (3)设置邮件发送的优先级;
    (4)支持多种格式的邮件发送,比如说以HTML或者TXT的方式发送邮件。这是个免费的组件。
    (5)密件发送/(CC)抄送/紧急信件发送能力;
    (6)最关键的就是--免费的组件,不必发钱,所以非常值得使用。

    JMail组件的常用属性:

    Body   邮件正文

    Logging   调用Log记录,供Debug

    Priority   邮件的优先程度,从15

    Sender   发件人

    ServerAddress   SMTP服务器的IP地址或名称

    Subject   邮件标题

     

    JMail组件的常用方法:

    AddAttachment   指定附件文件

    AddRecipient   加入一个收件人

    AddRecipientBCC   隐藏的副本抄送,只有发件人和BCC收件人知道。

    AddRecipientCC   副本抄送

    Execute   送出邮件

     

    了解必要的属性及方法后,余下的部分接收使用者输入的Email,当成参数传给AddRecipient方法,然后根据需要填上其余属性,最后以Execute方法寄出。例如:

            JMail = Server.CreateObject("JMail.SMTPMail")

            JMail.Logging = True

            JMail.ServerAddress = "202.96.144.48"

            JMail.Sender = "lihonggen0@163.com"

            JMail.Subject = "subject."

            JMail.Body = "body."

            JMail.AddRecipient("bbbb@163.com")

            JMail.AddAttachment("c:"go.gif")

            JMail.Priority = 3

            JMail.Execute()

            JMail = Nothing

     

    二、NET环境下邮件接收解决方案

          

    POP3协议是一个客户读取或接收存储在远程邮件服务器上的邮件最常用的基本协议,一旦客户机与服务器建立一个连接,就发送简单文本命令,并且服务器以恰当的信息来响应。必须知道使用的命令是什么,以什么样的顺序发出,才能正确地从服务器上收取信件。

    注意点:在登陆服务器时端口号应该是110

    POP3的执行命令

    首先手工输入

    telnet pop.163.com

    1.权限检查命令

    执行命令

    描述

    USER

    用户名

    PASS

    密码

    2.获取信息命令

    执行命令

    描述

    STAT

    响应包含邮件的数量和全部邮件大小

    LIST

    收到一份个人邮件列表,列出每封邮件的大小

    3.检索邮件

    执行命令

    描述

    TOP

    它能取得邮件的报头并且从信件中挑出文本行的数目

    RETR

    返回邮件的全部字节数目和整个邮件的文本

    QUIT

    终止会话,关闭邮箱

  • 相关阅读:
    19.08.12 知识点的记录
    19.08.09 知识点的记录
    keil编译生成bin文件的方法
    python 虚拟环境virtualenv
    RT_Thread GD32F303 片上flash使用fal组件
    esp8266 deepsleep唤醒不工作打印
    5V 电源 适配器 空载耗电量 自身电量 消耗功率
    keil 更换jlink脚本版本
    ESP8266 NONOS SmartConfig配网(安信可公众号配网)
    windows安装esp开发环境
  • 原文地址:https://www.cnblogs.com/leeolevis/p/1383150.html
Copyright © 2011-2022 走看看