博客
关于我
.NET环境下Email的技术介绍
阅读量:535 次
发布时间:2019-03-08

本文共 2601 字,大约阅读时间需要 8 分钟。

一、NET环境下邮件发送解决方案

在NET环境中,开发邮件发送功能可以通过多种方法实现,以下是几种常用的解决方案分析。

  • 使用System.Web.Mail命名空间
  • System.Web.Mail是微软提供的一个用于发送邮件的类库,适用于在ASP.NET或其他托管应用程序中发送SMTP邮件。其核心类包括SmtpMail和MailMessage。

    SmtpMail类主要用于配置SMTP服务器设置,其关键属性和方法如下:

    属性:

    • SmtpServer:定义使用的SMTP服务器地址。
    • 其他属性包括发件人、收件人、主题、正文等。

    方法:

    • Send():发送电子邮件。

    MailMessage类用于构造邮件内容,其主要属性包括:

    • Attachment:附件管理。
    • Bcc:BCC收件人邮箱列表。
    • Body:邮件正文。
    • ...其他如Cc、From、Headers等常用属性。

    此外,MailAttachment类用于处理附件文件,其主要功能包括:

    • 通过构造函数添加附件文件名。
    • 提供方法管理附件列表。

    代码示例如下:...protected void Button1_Click(object sender, EventArgs e){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 = "邮件主体!";m_Mail.BodyFormat = MailFormat.Html;m_Mail.Priority = MailPriority.High;m_Mail.Attachments.Add(new MailAttachment("c:/lihonggen.doc"));SmtpMail.Send(m_Mail);}...

    1. 使用System.Net.Sockets
    2. System.Net.Sockets提供了基于TCP/IP协议的低级别网络通信功能,常用于自定义邮件发送系统。其优势在于支持灵活的协议开发,但代码复杂度较高。

      SMTP协议工作流程详见下文。

      1. 使用IIS SMTP自带的CDONTS组件
      2. CDONTS(Collaborative Data_OPTeracionalesource Naming Service,合作数据名称服务组件)是微软提供的免费组件,集成于IIS中,其特点包括:

        优点:

        • 内置于系统,无需额外安装。
        • 开源结构便于扩展。

        缺点:

        • 功能有限,扩展性不足。

        使用示例:using CDONTS;

        // 初始化邮件组件Mymail = CreateObject("CDONTS.NewMail");Mymail.From = "lihonggen@163.com";Mymail.To = "lihonggen0@163.com";Mymail.Subject = "邮件主题";Mymail.Body = "邮件正文内容";Mymail.Importance = 2;Mymail.Send();Mymail = Nothing;

        1. 利用JMail组件
        2. JMail是一个免费邮件组件,具有丰富功能,适合需要高级邮件发送功能的场景。其主要特点包括:

          • 支持附件添加。
          • 具备详尽的日志记录功能。
          • 可设置邮件优先级。
          • 支持多种邮件格式(HTML和TXT)发送。
          • 提供免费使用,性价比高。

          JMail常用属性及方法:属性:

          • Body:邮件正文内容。
          • Logging:日志开关。
          • Priority:邮件优先级。
          • Sender:发件人信息。
          • ServerAddress:SMTP服务器地址。
          • Subject:邮件主题。

          方法:

          • AddAttachment():添加附件。
          • AddRecipient():添加收件人。
          • AddRecipientBCC():添加BCC收件人。
          • Execute():发送邮件。

          使用示例:using System;

          JMail jMail = Server.CreateObject("JMail.SMTPMail");jMail.Logging = true;jMail.ServerAddress = "202.96.144.48";jMail.Sender = "lihonggen0@163.com";jMail.Subject = "邮件标题";jMail.Body = "邮件正文";jMail.AddRecipient("bbbb@163.com");jMail.AddAttachment("c:/go.gif");jMail.Priority = 3;jMail.Execute();jMail = Nothing;

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

          在NET环境中接收邮件通常基于POP3协议,它是邮件接收最常用的协议之一。POP3客户端通过TCP/IP协议连接邮件服务器,按文本命令操作,服务器返回相应响应代码。

          服务器端与客户端的通信过程如下:

        3. 客户端使用USER命令进行身份验证。
        4. 客户端发送MAIL FROM:命令,服务器端返回OK。
        5. 客户端发送RCPT TO:命令,服务器端确认收件人地址。
        6. 客户端发送DATA命令,服务器端告知输入邮箱准备接收数据。
        7. 客户端发送终止命令(如。当.)表示邮件发送完成。
        8. 客户端发送QUIT退出会话。
        9. POP3的重要命令包括:

          • USER:认证命令。
          • PASS:密码验证命令。
          • STAT:获取邮件信息。
          • LIST:列出邮件列表。
          • TOP:获取邮件头信息。
          • RETR:获取完整邮件内容。
          • QUIT:退出会话。

          实现步骤:

        10. 连接POP3服务器(如:pop.163.com)。
        11. 身份验证:
          • 发送USER username
          • 发送PASS password
        12. 获取邮件总数及大小:
          • 使用STAT命令获取总邮件数及总大小。
        13. 获取邮件列表:
          • 列出所有邮件ID或大小。
        14. 查看具体邮件内容:
          • 使用RETR命令获取完整邮件内容。
        15. 删除或保留邮件:
          • 使用DELE命令删除邮件。
          • 未删除则按条件自动保留。

    转载地址:http://aktiz.baihongyu.com/

    你可能感兴趣的文章
    android asynctask handler 区别,AsyncTask与Thread+Handler简要分析
    查看>>
    android fastjson漏洞_初识Fastjson漏洞(环境搭建及漏洞复现)
    查看>>
    android pod 组件化_CocoaPods 组件化实践 - 私有Pod
    查看>>
    $CH0201$ 费解的开关
    查看>>
    android进程管理策略,Android进程保活
    查看>>
    arduino蓝牙通讯代码_arduino 联接蓝牙模块
    查看>>
    asp.mvc 4项目发布文件目录结构_如何用SpringBoot(2.3.3版本)快速搭建一个项目?文末有小彩蛋...
    查看>>
    aspen串联反应怎么输入_如何进步提升串联谐振试验装置的稳定性
    查看>>
    aspose html转pdf_Java实现Word/Pdf/TXT转html
    查看>>
    a推b等价于非a或b_AB胶/蜜月胶常见问题的原因分析及解决方法
    查看>>
    bat 命令返回结果_【批处理】带你入门命令行
    查看>>
    c++ string取子串_Integer与String的设计哲学
    查看>>
    c++ 数组批量赋值_数组之间不能赋值?穿个马甲吧!
    查看>>
    cad模糊查询符号_mysql 正则模式和like模糊查询
    查看>>
    continue可以用if判断里面吗_谁能说说if()else()里的continue是干嘛的?
    查看>>
    ctrl c 和 ctrl v 不能用了_神奇操作,原来CTRL键还能这么用
    查看>>
    cytoscape安装java_Cytoscape史上最全攻略
    查看>>
    c语言程序设计年历显示,C语言程序设计报告《万年历》.doc
    查看>>
    C语言程序设计梁海英答案,1.5 习题
    查看>>