`
njmnjx
  • 浏览: 234406 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

发送邮件的两种方式

阅读更多
一、实现代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Net.Mail;
using System.Net;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string sendMailContent = "我是用sendMail方式发送的";
        string CDOsendMailContent = "我是用CDOsendMail方式发送的";


        bool rr = true;
        bool rr1 = true;

        //使用企业邮箱发送邮件-------------------------------------------
        rr = SenMailBySMTP("primeton@micromarketing.com.cn", "njm@biaodashi.com", "表达式测试", sendMailContent, "mail.micromarketing.com.cn", "primeton@micromarketing.com.cn", "******");
        rr1 = CDOsendMail("primeton@micromarketing.com.cn", "表达式测试", "primeton@micromarketing.com.cn", "primeton@micromarketing.com.cn", "primeton@micromarketing.com.cn", "******", "mail.micromarketing.com.cn", "njm@biaodashi.com", CDOsendMailContent);
        //------------------------------------------------------------

        //使用hotmail及gmail邮箱发送邮件---------------------------------
        //rr = SenMailBySMTP("njm168@hotmail.com", "njm@biaodashi.com", "表达式测试", sendMailContent, "smtp.live.com", "njm168@hotmail.com", "******");
        //rr1 = CDOsendMail("njm168@hotmail.com", "表达式测试", "njm168@hotmail.com", "njm168@hotmail.com", "njm168@hotmail.com", "******", "smtp.live.com", "njm@biaodashi.com", CDOsendMailContent);
        //------------------------------------------------------------

        if (rr)
        {
            Response.Write("sendmailbystmp发送成功");
        }
        else
        {
            Response.Write("sendmailbystmp发送失败");
        }

        if (rr1)
        {
            Response.Write("CDOsendMail发送成功");
        }
        else
        {
            Response.Write("CDOsendMail发送失败");
        }
    }

    /// <summary>
    /// 使用CDO组件发送邮件CDO是Collaboration Data Objects的简称,它是一组高层的COM对象集合,并经历了好几个版本的演化,现在在Windows2000和Exchange2000中使用的都是CDO2.0的版本(分别为cdosys.dll和cdoex.dll)。CDOSYS构建在SMTP协议和NNTP协议之上,并且作为Windows2000 Server的组件被安装,您可以在系统目录(如c:\winnt或c:\windows)的system32子目录中找到它(cdosys.dll)。CDO组件相对于先前介绍的SmtpMail对象功能更为丰富,并提供了一些SmtpMail类所没有提供的功能,如通过需要认证的SMTP服务器发送邮件等。
    /// </summary>
    /// <param name="from">from名称</param>
    /// <param name="subject">主题</param>
    /// <param name="senderEmail">发送者email</param>
    /// <param name="emailAccount">发送者账号</param>
    /// <param name="username"></param>
    /// <param name="password"></param>
    /// <param name="smtp"></param>
    /// <param name="toEmail"></param>
    /// <param name="content"></param>
    /// <returns></returns>
    public bool CDOsendMail(string from, string subject, string senderEmail, string emailAccount, string username, string password, string smtp, string toEmail, string content)
    {
        try
        {
            CDO.Message oMsg = new CDO.Message();

            oMsg.From = "表达式邮件服务中心<" + from + ">";//from; 
            oMsg.To = toEmail;
            oMsg.Subject = subject;
            //oMsg.HTMLBody = "<html><body><b>大家好!!</b><img src=\"http://www.micromarketing.com.cn/jmail/count.aspx?id=505&email=<收件人地址>\" width=0 height=0>link</a></body></html>";
            oMsg.HTMLBody = content;

            CDO.IConfiguration iConfg = oMsg.Configuration;
            ADODB.Fields oFields = iConfg.Fields;

            oFields["http://schemas.microsoft.com/cdo/configuration/sendusing"].Value = 2;

            oFields["http://schemas.microsoft.com/cdo/configuration/sendemailaddress"]
                .Value = senderEmail; //sender mail

            oFields["http://schemas.microsoft.com/cdo/configuration/smtpaccountname"]
                .Value = emailAccount; //email account

            oFields["http://schemas.microsoft.com/cdo/configuration/sendusername"]
                .Value = username;
            oFields["http://schemas.microsoft.com/cdo/configuration/sendpassword"]
                .Value = password;

            oFields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"]
                .Value = 1;

            //value=0 代表Anonymous验证方式(不需要验证)
            //value=1 代表Basic验证方式(使用basic (clear-text) authentication. 
            //The configuration sendusername/sendpassword or postusername/postpassword fields 
            //	are used to specify credentials.)
            //Value=2 代表NTLM验证方式(Secure Password Authentication in Microsoft Outlook Express)

            oFields["http://schemas.microsoft.com/cdo/configuration/languagecode"].Value = 0x0804;
            oFields["http://schemas.microsoft.com/cdo/configuration/smtpserver"].Value = smtp;

            //oFields["http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"].Value = 60;//超时设置, 以秒为单位

            //hotmail、gmail邮箱要求启用以下两项
            //oFields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"].Value = 25;
            //oFields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"].Value = true;  //'是否使用套接字 true/false 


            oFields.Update();
            oMsg.BodyPart.Charset = "gb2312";
            oMsg.HTMLBodyPart.Charset = "gb2312";

            oMsg.Send();
            oMsg = null;


        }
        catch (Exception e)
        {
            Response.Write(e.Message);
            return false;

        }

        return true;

    }


    /// <summary>
    /// 通过smtp直接发送邮件
    /// </summary>
    /// <param name="fromEmail"></param>
    /// <param name="toEmail"></param>
    /// <param name="subject"></param>
    /// <param name="body"></param>
    /// <param name="smtp"></param>
    /// <param name="account"></param>
    /// <param name="pwd"></param>
    /// <returns></returns>
    protected bool SenMailBySMTP(string fromEmail, string toEmail, string subject, string body, string smtpAddress, string account, string pwd)
    {
        System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(fromEmail, toEmail);

        //mail
        mail.From = new MailAddress(fromEmail, "表达式邮件服务中心", Encoding.UTF8);
        mail.SubjectEncoding = Encoding.UTF8;
        mail.Subject = subject;
        mail.IsBodyHtml = true; //是否允许内容为 HTML 格式
        mail.BodyEncoding = Encoding.UTF8;
        mail.Body = body;

        //mail.Attachments.Add(new Attachment("E:\\foo.txt")); //添加一个附件

        SmtpClient smtp = new SmtpClient(smtpAddress);

        //hotmail、gmail邮箱要求启用以下两项
        //smtp.Port = 25; //smtp.Port = 587;//Gmail使用的端口 
        //smtp.EnableSsl = true; 


        smtp.Credentials = new NetworkCredential(account, pwd); //SMTP 验证
        //smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;

        bool rr = true;

        try
        {
            smtp.Send(mail);
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
            rr = false;
        }

        mail.Attachments.Dispose(); //邮件发送完毕,释放对附件的锁定


        return rr;

    }
}


注:组件支持在附件中

二、可选项内容(参考)
附錄 A Web儲存系統結構描述屬性
分享到:
评论

相关推荐

    java实现邮件发送(三种发送方式都有)

    邮件发送主要涉及到SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)两种协议。SMTP用于将邮件发送到邮件服务器,而POP3则用于从邮件服务器接收邮件。此外,还有IMAP(Internet ...

    C# 两种发邮件的方式

    两种方法各有优势,`System.Net.Mail`简单易用,适合大多数基础的邮件发送需求;而JMail提供更丰富的功能,对于复杂场景可能更为适用。根据实际需求和项目复杂度,开发者可以灵活选择合适的方法来实现邮件发送功能。...

    java发送邮件(两种方式-springcloud方式+静态调用方式).zip

    **一、Spring Cloud方式发送邮件** Spring Cloud提供了服务发现、配置中心、负载均衡等功能,是构建微服务架构的强大工具。在Spring Cloud框架中,我们可以利用`spring-cloud-starter-mail`模块来发送邮件。首先,...

    php邮件发送的两种方式

    【PHP邮件发送的两种方式】 在PHP中,发送电子邮件主要有两种方法:一是使用PHP内置的`mail()`函数,二是利用封装了SMTP协议的邮件类。这两种方法各有特点,适用场景不同,下面将详细介绍。 ### 一、使用PHP内置的...

    SSH框架实现发送电子邮件的两种方法

    本文将详细介绍如何在SSH(Spring+Struts+Hibernate)框架下实现发送电子邮件的两种常见方式——纯文本邮件和HTML格式邮件。 #### 二、发送纯文本邮件 ##### 2.1 配置JavaMailSender 首先,我们需要配置`...

    SpringBoot 模式下发送邮件的两种方式

    在调用范例中采用了两种方式,一种以 import org.springframework.mail.SimpleMailMessage; 实现 一种以 import org.springframework.mail.javamail.MimeMessageHelper; 实现 经过测试两种方式均可用,验证者需填写...

    SAP 发送邮件 详细步骤

    - SAP中的发件人邮箱设置有两种方式:一种是在`SCOT`中直接设置“DefaultDomain”,另一种则是在需要发送邮件的用户的“远程邮件”栏中填写发件人的邮箱地址。 - 根据实际情况选择适合的方式进行设置。 ##### 6. ...

    用Telnet发送邮件

    Telnet 是一种远程登录.protocol,它可以用于发送电子邮件。SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是用于邮件客户端软件与 SMTP 服务器之间,以及两台 SMTP 服务器之间的通信规则。SMTP 协议中...

    delphi两种方法调用Outlook发邮件

    delphi两种方法调用Outlook发邮件 两种方法,第一种会弹出三次询问,而第二种只弹出一次询问,大家有时间可以看看两种方法为什么会有不同的结果。顺便发个邮件告诉我啊。代码里有我的邮件地址。。。呵呵。

    在Linux命令行发送电子邮件附件的两种方法.doc

    本文将详细介绍两种在Linux命令行发送带有附件的邮件的方法,适用于CentOS 7操作系统。 首先,确保您的系统上已经安装了一个功能完善的邮件系统。然而,这里我们不会涉及邮件服务器的配置,而是直接介绍发送邮件的...

    电子邮件发送.rar

    本资源“电子邮件发送.rar”包含与ASP.NET相关的源码,提供了两种不同的方法来实现电子邮件的发送:SMTP(Simple Mail Transfer Protocol)发送和Jmail发送。 首先,让我们详细了解一下SMTP发送邮件的原理。SMTP是...

    Delphi中发送电子邮件

    要发送电子邮件,首先需要在工程中引入这两个组件。在“Component”菜单中选择“Indy Components”,然后将TIdSMTP和TIdMessage拖放到设计表上。接着,配置TIdSMTP组件,设置SMTP服务器地址(如smtp.gmail.com)、...

    ASP.NET发送邮件,C#发送邮件,发送电子邮件方法

    本文将详细介绍如何使用这两种技术实现电子邮件的发送功能。 首先,要发送邮件,我们需要使用到System.Net.Mail命名空间中的SmtpClient和MailMessage类。SmtpClient类负责与SMTP(简单邮件传输协议)服务器通信,而...

    特快专递,直接发送邮件

    直接发送邮件的方法通常有两种:SMTP(Simple Mail Transfer Protocol)和MAPI。SMTP是互联网上广泛使用的邮件传输协议,而MAPI则是Windows操作系统提供的一种更高级的邮件接口,它提供了与邮件客户端相同的邮件处理...

    发送和接收程序 电子邮件

    这两种协议允许用户从邮件服务器下载或在线查看邮件。POP3通常用于下载邮件到本地设备,而IMAP4则允许在服务器上管理邮件,保持邮件同步。 在压缩包“电子邮件发送和接收程序”中,可能包含了源代码、配置文件、...

    Android发送邮件demo

    - **Intent方式**:Android提供Intent机制,可以唤起系统已安装的邮件应用来发送邮件。 - **创建Intent**:使用Intent的ACTION_SEND或ACTION_SENDTO action,指定数据类型为text/plain或message/rfc822。 - **...

    C#发送邮件小程序源码

    本主题聚焦于使用C#实现发送邮件的功能,这对于许多应用程序来说是一个常见且实用的需求,比如用户注册验证、系统通知等。下面我们将深入探讨如何在C#中编写发送邮件的代码,以及涉及到的相关知识点。 首先,C#发送...

    IOS 发送邮件 DEMO

    在这个“IOS 发送邮件 DEMO”中,我们将探讨如何在iOS应用中实现邮件发送功能,特别是通过两种不同的方法,并且支持附件上传。 首先,我们要了解iOS中用于发送邮件的主要组件:`MFMailComposeViewController`。这是...

Global site tag (gtag.js) - Google Analytics