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. mysql 设置用户并授权

    一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...

  2. 手机(Android)资源

    手机型号 API Android版本   Lenovo A238t API 10 2.3.5   华为 P7 API 19 4.4.2                  

  3. apache反向代理设置

    为了方便在内网测试微信接口API <VirtualHost *:80> ServerName wx.abc.com ProxyPreserveHost on ProxyPass / htt ...

  4. spring学习 十三 注解AOP

    spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能有注解,也就是要开启注解扫描,注解的包是spring-context.jar,所以在配置文件中还要引入context约束,也 ...

  5. Java:斐波那契数列

    斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10 ...

  6. MyBatis 实现新增

    MyBatis实现新增 1.概念学习:(角度不同) 1.1 功能:从应用程序角度出发,软件具有哪些功能 1.2 业务:完成功能时的逻辑,对应Service中一个方法 1.3 事务:从数据库角度出发,完 ...

  7. [转]order by 与索引

    ORDER BY 通常会有两种实现方法,一个是利用有序索引自动实现,也就是说利用有序索引的有序性就不再另做排序操作了.另一个是把结果选好之后再排序. 用有序索引这种,当然是最快的,不过有一些限制条件, ...

  8. tomcat https 支持android 6.0及以上版本的配置方法

    <Connector port="443"  protocol="HTTP/1.1" SSLEnabled="true" scheme ...

  9. Pappus一阶矩公式

  10. python中的\n、\r与\b

    python中使用print函数,有时候会使用end参数来控制字符输出效果,这时候\n.\r与\b就派上用场了. \n 代表换行,也就是从本行换到下一行 \r 代表回车,也就是回到本行最开始的位置,从 ...