System.Net.Mail

使用简单邮件传输协议SMTP异步发送邮件

想要实现SMTP发送邮件,你需要了解这些类

SmtpClient :使用配置文件设置来初始化 SmtpClient类的新实例。

它包含以下属性:

Host:设置用于SMTP服务的主机名或主机IP;

Port:设置用于SMTP服务的端口(一般设置为25);

Credentials:身份验证;

Send:直接发送邮件;

SendAsync:异步发送邮件(不阻止调用线程)。

 

MailMessage:表示一封电子邮件。

它包含以下属性:

Attachment:表示文件附件;

CC:抄送;

Subject:主题;

From:发件人

Priority:优先级;

Body:正文;

BodyEncoding:Content-type。

此外  SmtpClient类不具有Finalize方法,因此应用程序必须调用Dispose以显式释放资源。

 static bool mailsend = true;
public async Task Send(object sender, EventArgs e)
{ SmtpClient smtp = new SmtpClient();//实例化一个SMPTClient对象
smtp.EnableSsl = false;//不启用SSL加密
smtp.Host = "00.000.00.000";//此处填写服务器IP
smtp.Port = ;//端口固定为25
//smtp.Credentials = new NetworkCredential("user@.com","password");//验证用户
MailMessage msg = new MailMessage();//实例化一个Message对象
msg.Priority = MailPriority.High;//邮件优先级
msg.To.Add("user@foxmail.com");//收件人
// msg.CC.Add("user@163.com");//抄送
msg.Bcc.Add("user@qq.com");//密送
string fileName = "";
var na = Request.Files.AllKeys;//前端HTTP请求过来的文件
foreach (var item in na)
{
HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase;
fileName = Path.GetFullPath(file.FileName);
}
Attachment attach = new Attachment(fileName);//将文件路径付给Attachment的实例化对象
ContentDisposition dispo = attach.ContentDisposition;//获取信息并读写附件
dispo.CreationDate = System.IO.File.GetCreationTime(fileName);
dispo.ModificationDate = System.IO.File.GetLastWriteTime(fileName);
dispo.ReadDate = System.IO.File.GetLastAccessTime(fileName);
msg.Attachments.Add(attach);//将附件加入邮件中
msg.From = new MailAddress("SpadesQ@sea.com", "是你呀");//发件人 别名
msg.Subject = "我学习了,你呢?";
msg.SubjectEncoding = System.Text.Encoding.UTF8;
msg.Body = "等下一个她";
msg.BodyEncoding = System.Text.Encoding.UTF8;
smtp.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
string userState = "Task one";
smtp.SendAsync(msg, userState);//使用异步发送 ,否则线程阻塞
if (mailsend==false) //可在回调时修改mailsend值进行取消
{
smtp.SendAsyncCancel();
}
Response.Write("已发出");
} void client_SendCompleted(object sender, AsyncCompletedEventArgs e)
{
string token =(string)e.UserState;
if (e.Cancelled)
{
Response.Write(string.Format("{0} Send canceled.",token));
}
if (e.Error !=null)
{
Response.Write(string.Format("[{0}] {1}", token, e.Error.ToString()));
}
else
{
Response.Write("Message Send.");
}
mailsend = true;
}

感谢您的观看,您的

使用System.Net.Mail中的SMTP发送邮件(带附件)的更多相关文章

  1. System.net.mail 腾讯ssl发送邮件超时

    我采用了.net 的自带组件 System.Web.Mail.MailMessage发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送 ...

  2. Python中使用SMTP发送邮件以及POP收取邮件

    假设我们自己的电子邮件地址是from@163.com,对方的电子邮件地址是to@sina.com(这里的地址虚拟的),现在我们用Outlook或者Foxmail之类的软件写好邮件,填上对方的Email ...

  3. Linux下配置mail使用外部SMTP发送邮件

    修改/etc/mail.rc,增加两行:指定外部的smtp服务器地址.帐号密码等. # vi /etc/mail.rc set from=demo@qq.com smtp=smtp.qq.com se ...

  4. python中的SMTP发送邮件

    一. 介绍 python3中自带了smtplib模块和email模块 smtplib模块:负责与邮件服务器的交互 email模块:负责组织邮件内容 二. smtplib模块 smtplib模块:主要是 ...

  5. 发现用System.Net.Mail发邮件(代码附后),附件稍微大一点就会造成程序假死. 有没有什么简单的解决办法呢? 多谢!!

    附件大,上传,发送一定会慢.程序卡,应该是主线程正在发送,邮件造成的.创建其他线程在后台去发.这样就不影响主线程做其他工作了   using System; using System.Collecti ...

  6. Java发送邮件(带附件)

    实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...

  7. smtp发送带附件的邮件(直接将string类型结果保存为附件)

    该方式直接保存为HTML文件,也可以是文本文件,其它格式效果不是很好    MailMessage mmsg = new MailMessage();    mmsg.Subject = " ...

  8. centos 使用mutt发送邮件带附件

    1.安装mutt工具 yum install -y mutt 2.使用mutt发邮件并带附件echo "统计日志" | /usr/bin/mutt -s "统计日志&qu ...

  9. 如何在 Laravel 中使用 SMTP 发送邮件(适用于 163、QQ、Gmail 等)

    Laravel  和 Laravel  的邮件发送使用方式完全一致.Laravel  的邮件发送中文文档在:http: 邮箱为例,展示如何用 Laravel 内置的邮件发送类来发送邮件. 配置 修改邮 ...

随机推荐

  1. 什么是DevOps?DevOps简明教程

    我希望每个测试人员经过..功能测试-接口测试-安全测试-自动化测试-性能测试的洗礼后 都可以进入DevOps阶段.具体什么以及为什么 我稍后会给你大家讲解...

  2. vue获取DOM元素并设置属性

    这里我想到了2个方法: 方法一: 直接给相应的元素加id,然后再document.getElementById("id");获取,然后设置相应属性或样式 方法二: 使用ref,给相 ...

  3. .net调用word转换pdf出现80080005错误的解决办法

    检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80080005. 1:在服务器上安装offi ...

  4. 2017/2/11CSS基础

    一:html中div: 1.DIV标签应用于 Style Sheet(样式表)方面会更显威力,它最终目的是给设计者另一种组织能力,有 Class.Style.title.ID 等属性. 2.<d ...

  5. JS代码判断浏览器类型以及版本

    browserVersion:function(){ var explorer = window.navigator.userAgent; if (explorer.indexOf("MSI ...

  6. 46.UISearchBar的placeholder字体颜色和背景颜色

    1.改变searchbar的searchField属性 UITextField *searchField = [searchbar valueForKey:@"searchField&quo ...

  7. 2018.10.30 bzoj4942: [Noi2017]整数(线段树压位)

    传送门 直接把修改的数拆成logloglog个二进制位一个一个修改是会TLETLETLE的. 因此我们把303030个二进制位压成一位储存在线段树里面. 然后维护区间中最靠左二进制位不为0/1的下标. ...

  8. HDU 5212 Code (莫比乌斯反演)

    题意:给定上一个数组,求 析: 其中,f(d)表示的是gcd==d的个数,然后用莫比乌斯反演即可求得,len[i]表示能整队 i 的个数,可以线性筛选得到, 代码如下: #pragma comment ...

  9. 解决Linux下IDEA无法使用ibus输入法的问题和tip乱码

    一:可以先按网上的配置/etc/profile里的输入法的一些参数,我是先配置了这些参数的,但是输入法还是没用,后来一直没管它了,今天用了一些方式可以了但不敢保证不需要先配置那些参数: 二:情况:开启 ...

  10. SpringMVC处理模型数据

    目录结构 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...