`
njmnjx
  • 浏览: 232317 次
  • 性别: 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发送邮件(两种方式-springcloud方式+静态调用方式).zip

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

    C# 两种发邮件的方式

    C# 两种发邮件的方式,支持附件发送,代码简单,发送效率比较高哦

    php邮件发送的两种方式

    这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法: 一、使用PHP内置的mail()函数 &lt;?php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; ...

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

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

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

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

    delphi两种方法调用Outlook发邮件

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

    发送邮件发送,先提一下SMTP

    有两种方法:第一种方法调用目前知名的邮件服务提供商的SMTP,比如新浪、搜狐、网易的免费电子邮箱的SMTP;第二种方法是自己装一个SMTP虚拟服务器,这个在安装IIS时一起装上去的(安装过程就省略了:-) )。 一、在...

    VB邮件接收和发送课程设计

    电子邮件发送程序的发送方式有两种:第一种是本地计算机与用户所指定的发送邮件服务器连接,然后通过发送邮件服务器将邮件传递到接收邮件服务器,邮件中包含有信件的主题和内容等一系列信息;第二种是本地计算机直接...

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

    在Linux命令行发送邮件,对于系统管理员,可以附加备份文件、日志文件/系统运行报告或任何相关信息,并将其发送到远程计算机,是一件非常有用的。

    电子邮件逐个发 v6.5.3.zip

    5、灵活方便的邮件内容编辑器,支持HTML和纯文本两种格式,可以直接将图片、链接等嵌入邮件内容中; 6、支持带附件发送,支持Gmail等要求SSL连接的邮件服务器。   电子邮件逐个发 v6.5.3更新: 1、调整主界面...

    IOS 发送邮件 DEMO

    IOS 两种发送电子邮件示例代码,包含上传附件。

    jquery ajax处理的两种方式

    jqyery ajax $.ajax $.post 两种方式 此例子,分别用了两种处理方式实现, 用tomcat6.0 servlet jsp 调试很方便 下载解压后 直接用myeclipse导入,就可以调试,没有用数据库,适合新手学习。 如果调试不成功的,...

    python_发送邮件.docx

    该文档介绍了两种利用python发送邮件的方式,包括响应模块导入,邮件正文等。

    .NET实现定时发送邮件代码(两种方式)

    下面用两种方式实现.net定时发送邮件代码,具体请看下面内容。 实现思路、需求添加一个全局应用程序类Global.asax 代码会在访问网站时运行 Global.asax代码: void Application_Start(object sender, EventArgs e) ...

    python使用两种发邮件的方式smtp和outlook示例

    本篇文章主要介绍了python使用两种发邮件的方式smtp和outlook示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

    基于JavaMail的B/S邮件客户端开发

    平常人们收发邮件主要有两种:一种是通过常用的邮件管理软件来实现;另一种是通过Web浏览器直接访问邮件服务器网站来实现收发邮件。这两种方法都比较简单、方便,但如果希望在自己开发的系统中拥有邮件的收发功能,...

    C#中使用smtp发送邮件

    之前做过一个使用SMTP发送邮件的业务,开始用的是qq邮箱,后来换了网易邮箱就不行了,网上的各种解决方式跟坑都试过,后面找了N多资料和研究终于搞定了,代码有两种发送方式,需要的可以下载来看看

Global site tag (gtag.js) - Google Analytics