ASP.NET(C#) 发送邮件帮助类Mailhelper

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net.Mail;

namespace SendMail
{
    /// <summary>
    /// 邮件发送类 
    /// 作者:ken.io
    /// </summary>
    /// PS:如果asp.net使用异步发送,请在发送页面的Page标签中加上 Async="true" 标记。
    public class MailHelper
    {

        /// <summary>
        /// 发送邮件,不使用SSL协议加密
        /// </summary>
        /// <param name="mailTitle">邮件标题</param>
        /// <param name="mailContent">邮件内容</param>
        /// <param name="mailAddress">收件人地址集合</param>
        public void SendMail(string mailTitle, string mailContent, params string[] mailAddress)
        {
            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
            //添加收件人
            foreach (string address in mailAddress)
            {
                msg.To.Add(address);
            }
            //设置发件邮箱地址,发件人姓名,以及邮件编码
            msg.From = new MailAddress("yourmail@163.com", "Sender", System.Text.Encoding.UTF8);
            //设置邮件标题
            msg.Subject = mailTitle;
            //设置邮件标题编码 
            msg.SubjectEncoding = System.Text.Encoding.UTF8;
            //设置邮件内容
            msg.Body = mailContent;
            //设置邮件内容编码
            msg.BodyEncoding = System.Text.Encoding.UTF8;
            //指定是否是HTML邮件 
            msg.IsBodyHtml = false;
            //设置邮件优先级 
            msg.Priority = MailPriority.High;

            SmtpClient client = new SmtpClient();
            //设置邮箱账号密码
            client.Credentials = new System.Net.NetworkCredential("yourmail@163.com", "password");
            //设置smtp服务器
            client.Host = "smtp.163.com";
            object userState = msg;
            try
            {
                //异步发送
               client.SendAsync(msg, userState);
                //同步发送
               //client.Send(msg); 
               JScript.Alert("邮件发送成功!");
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                JScript.Alert(ex.Message);
            }
        }

        /// <summary>
        /// 发送邮件,使用SSL协议加密
        /// </summary>
        /// <param name="mailTitle">邮件标题</param>
        /// <param name="mailContent">邮件内容</param>
        /// <param name="mailAddress">收件人地址集合</param>
        public void SendMailSSL(string mailTitle, string mailContent, params string[] mailAddress)
        {
            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
            //添加收件人
            foreach (string address in mailAddress)
            {
                msg.To.Add(address);
            }
            //设置发件邮箱地址,发件人姓名,以及邮件编码
            msg.From = new MailAddress("yourmail@163.com", "Sender", System.Text.Encoding.UTF8);
            //设置邮件标题
            msg.Subject = mailTitle;
            //设置邮件标题编码 
            msg.SubjectEncoding = System.Text.Encoding.UTF8;
            //设置邮件内容
            msg.Body = mailContent;
            //设置邮件内容编码
            msg.BodyEncoding = System.Text.Encoding.UTF8;
            //指定是否是HTML邮件 
            msg.IsBodyHtml = false;
            //设置邮件优先级 
            msg.Priority = MailPriority.High;

            SmtpClient client = new SmtpClient();
            //设置邮箱账号密码
            client.Credentials = new System.Net.NetworkCredential("yourmail@163.com", "password");
            //设置邮箱服务器使用的SSL协议端口 -可能个别要见服务器要求设置SSL协议端口
            //client.Port = 25;
            //设置smtp服务器
            client.Host = "smtp.163.com";
            //使用ssl加密 
            client.EnableSsl = true;
            object userState = msg;
            try
            {
                //异步发送
                //client.SendAsync(msg, userState);
                //同步发送
                client.Send(msg); 
                JScript.Alert("邮件发送成功!");
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                JScript.Alert(ex.Message);
            }
        }

        /// <summary>
        /// 本地发送邮件
        /// </summary>
        /// <param name="mailTitle">邮件标题</param>
        /// <param name="mailContent">邮件内容</param>
        /// <param name="mailAddress">收件人地址集合</param>
        public void SendMailLocal(string mailTitle, string mailContent, params string[] mailAddress)
        {
            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
            //添加收件人
            foreach (string address in mailAddress)
            {
                msg.To.Add(address);
            }
            //设置发件邮箱地址,发件人姓名,以及邮件编码
            msg.From = new MailAddress("server@local.com", "Sender", System.Text.Encoding.UTF8);
            //设置邮件标题
            msg.Subject = mailTitle;
            //设置邮件标题编码 
            msg.SubjectEncoding = System.Text.Encoding.UTF8;
            //设置邮件内容
            msg.Body = mailContent;
            //设置邮件内容编码
            msg.BodyEncoding = System.Text.Encoding.UTF8;
            //指定是否是HTML邮件 
            msg.IsBodyHtml = false;
            //设置邮件优先级 
            msg.Priority = MailPriority.High;

            SmtpClient client = new SmtpClient();
            //设置smtp服务器地址
            client.Host = "localhost";
            object userState = msg;
            try
            {
                //异步发送
                //client.SendAsync(msg, userState);
                //同步发送
                client.Send(msg); 
                JScript.Alert("邮件发送成功!");
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                JScript.Alert(ex.Message);
            }
        }

    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Albert陈凯

Hadoop数据分析平台实战——250JSSDK数据收集引擎编写离线数据分析平台实战——250JSSDK数据收集引擎编写

离线数据分析平台实战——250JSSDK数据收集引擎编写 JsSDK设计规则 在js sdk中我们需要收集launch、pageview、chargeReque...

37180
来自专栏刘望舒

Android开发的几个插件和工具,提升你的开发效率

对于一个Android开发,面对以下问题会非常痛苦。 重复的findById。 将复杂的Json字符串,解析成javaBean。 调试接口的时候打断点十分麻烦。...

33590
来自专栏葡萄城控件技术团队

绑定Oracle Database 到 ActiveReport

ActiveReport 可以和多种数据源交互,包括OLEDB, SQL, XML和集合对象。 在本文中我们将阐述如何绑定Oracle 数据库到 Active...

20690
来自专栏林德熙的博客

win2d 图片水印

首先需要使用 Nuget 安装 win2d ,安装参见win10 uwp win2d

9820
来自专栏c#开发者

Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)

Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系...

43280
来自专栏数值分析与有限元编程

CodeBlocks 安装及配置

CodeBlocks 是最适合gfortran的IDE,可以说是量身打造,配置也不复杂。而且体量很小,跟vs动不动就几个G甚至十几个G相比,那是小巫见大巫了。C...

27130
来自专栏木宛城主

基于Socket的网络聊天室编程(第一版)

一:什么是套接字 在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型。在这种方案中客户应用程序向服务器程序请求服务。一个服务程序通常...

30150
来自专栏极客慕白的成长之路

光棍节程序员闯关秀过关攻略

查看源代码,发现a标签的颜色和背景色一样,导致了我们看不到a过关地址,方法很简单,直接复制源代码中的key即可,或者ctrl+a然后单击进入下一关即可

14450
来自专栏拂晓风起

在asp.net的web应用系统中导出申请表等文档

13640
来自专栏守望轩

Visual Studio 2008 每日提示(三十六)

# 361、按Ctrl+K, Ctrl+v在解决方案快速查找对象 原文链接: Ctrl+K, Ctrl+v allows you to quickly sea...

36770

扫码关注云+社区

领取腾讯云代金券