前段时间在帮老师开发的网站中需要用到一个群发邮件的功能,而自己之前学习cms系统的时候用的we7的群发邮件功能也有一些问题,于是乎便自己去网上查了一下资料,自己总结了一下,并且封装成了一个类,亲测有用,支持附件,希望对大家也有些帮助,我测试时用的是qq邮箱,成功的前提是要在邮箱设置中打开smtp服务功能,如qq邮箱设置里面的账户选项卡里面把需要的功能勾上:

其他邮箱的话原理一样~~~~~~

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Web; namespace MailSend
{
public class SendEmail
{
/// <summary>
/// 群发邮件函数
/// </summary>
/// <param name="subject">发送的主题</param>
/// <param name="body">发送的内容</param>
/// <param name="email_list">收件人列表,通过|来分割开来,可以自己定义</param>
/// <param name="File_Path">发送附件的地址,获取了路径后上传</param>
public static void Send(string subject, string body, string email_list, string File_Path)
{
string MailUser = "XXX@qq.com";//我测试的是qq邮箱,其他邮箱一样的道理
string MailPwd = "你的密码";//邮箱密码
string MailName = "测试";
string MailHost = "smtp.exmail.qq.com";//根据自己选择的邮箱来查询smtp的地址 MailAddress from = new MailAddress(MailUser, MailName); //邮件的发件人
MailMessage mail = new MailMessage(); //设置邮件的标题
mail.Subject = subject; //设置邮件的发件人
//Pass:如果不想显示自己的邮箱地址,这里可以填符合mail格式的任意名称,真正发mail的用户不在这里设定,这个仅仅只做显示用
mail.From = from; //设置邮件的收件人
string address = ""; //传入多个邮箱,用“|”分割开,可以自己自定义,再通过mail.To.Add()添加到列表
string[] email = email_list.Split('|');
foreach (string name in email)
{
if (name != string.Empty)
{
address = name;
mail.To.Add(new MailAddress(address));
}
} //设置邮件的抄送收件人
//这个就简单多了,如果不想快点下岗重要文件还是CC一份给领导比较好
//mail.CC.Add(new MailAddress("Manage@hotmail.com", "尊敬的领导"); //设置邮件的内容
mail.Body = body;
//设置邮件的格式
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
//设置邮件的发送级别
mail.Priority = MailPriority.Normal; //设置邮件的附件,将在客户端选择的附件先上传到服务器保存一个,然后加入到mail中
if (File_Path != "")
{
mail.Attachments.Add(new Attachment(File_Path));
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
}
SmtpClient client = new SmtpClient();
//设置用于 SMTP 事务的主机的名称,填IP地址也可以了
client.Host = MailHost;
//设置用于 SMTP 事务的端口,默认的是 25
client.Port = ;
client.UseDefaultCredentials = false;
//这里才是真正的邮箱登陆名和密码, 我的用户名为 MailUser ,我的密码是 MailPwd
client.Credentials = new System.Net.NetworkCredential(MailUser, MailPwd);
client.DeliveryMethod = SmtpDeliveryMethod.Network; ////如果发送失败,SMTP 服务器将发送 失败邮件告诉我
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; //都定义完了,正式发送了,很是简单吧!
client.Send(mail); }
}
}

asp.net中实现群发邮件功能的更多相关文章

  1. asp.net中实现文件下载功能

    //TransmitFile实现下载    protected void Button1_Click(object sender, EventArgs e)      {         /*     ...

  2. 充分发挥异步在 ASP.NET 中的强大优势

    作者:Brij Bhushan Mishra 最近几年,异步编程受到极大关注,主要是出于两个关键原因:首先,它有助于提供更好的用户体验,因为不会阻塞 UI 线程,避免了处理结束前出现 UI 界面挂起. ...

  3. 使用vs中的发布功能发布asp.net core项目时遇到ERROR_CERTIFICATE_VALIDATION_FAILED错误

    今天将VS2015编制的一个asp.net core项目发布到服务器进行测试,使用的是vs中主菜单"生成"中的"发布"功能. 遇到了一个错误,在网上反复检索尝试 ...

  4. ASP.NET中登录功能的简单逻辑设计

     ASP.NET中登录功能的简单逻辑设计                               概述                               逻辑设计             ...

  5. Asp.net管理信息系统中数据统计功能的实现

    数据统计是每个系统中必备的功能,在给领导汇报统计数据,工作中需要的进展数据时非常有用. 在我看来,一个统计的模块应该实现以下功能: 能够将常用的查询的统计结果显示出来: 显示的结果可以是表格形式,也可 ...

  6. ASP.NET中常用的优化性能的方法

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...

  7. asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题

    最近有个项目加入了验证码功能,就从自己博客以前的代码中找到直接使用,直接访问验证码页面报错如下: 源代码:asp.net中使用一般处理程序生成验证码 Application Exception Sys ...

  8. ASP.NET中后台数据和前台控件的绑定

    关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...

  9. asp.net中缓存的使用介绍一

    asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...

随机推荐

  1. 【转】MySQL GRANT REVOKE用法

    MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器 授权->确定用户是否拥有足够的权限执行查询请求等. 如果认证不成功的话,哪么授权肯定是无法进行的. revo ...

  2. DevExpress LookUpEdit和ComboBoxEdit部分用法

    LookUpEdit 1.绑定列 (注意点:LookUpEdit1的FieldName要和绑定的列明一致) 方式一: LookUpEdit1.Properties.DisplayMember = &q ...

  3. [terry笔记]IMPDP报错ORA-39083 Object type TYPE failed to create ORA-02304

    今天在使用impdp导入的时候(同一数据库中转换schema),遇到了 ORA-39083: Object type TYPE failed to create with error: ORA-023 ...

  4. Android中如何获取应用版本号

  5. 使用angular封装echarts

    Echarts是一个开源的图表组件,图表比较丰富,工作中需要用到它来搭建一个数据展示系统.但是系统原有的框架是基于angular的,而echarts是基于原生js的,如果直接使用的话就丢失了angul ...

  6. Xcode7免证书真机调试实践

    1.Open Xcode7, click menu "Xcode-Preferences-accounts" to add your AppleId; 2.According to ...

  7. iOS 七大手势之轻拍,长按,旋转手势识别器方法

    一.监听触摸事件的做法   如果想监听一个view上面的触摸事件,之前的做法通常是:先自定义一个view,然后再实现view的touches方法,在方法内部实现具体处理代码 通过touches方法监听 ...

  8. Ant学习---第二节:Ant添加文件夹和文件夹集的使用

    一.创建 java 项目(Eclipse 中),结构图如下: 1.创建 .java 文件,代码如下: package com.learn.ant; public class HelloWorld { ...

  9. C中的一些函数

    简述:printf.sprintf函数 转载自http://www.cnblogs.com/adslg/archive/2008/08/22/1274164.html 部分进行了修改,参考http:/ ...

  10. 20145120 《Java程序设计》第7周学习总结

    20145120 <Java程序设计>第7周学习总结 教材学习内容总结 Lambda表达式 例:Comparator<String> byLength = (name1, na ...