使用System.Net.Mail中的SMTP发送邮件(带附件)
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发送邮件(带附件)的更多相关文章
- System.net.mail 腾讯ssl发送邮件超时
我采用了.net 的自带组件 System.Web.Mail.MailMessage发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送 ...
- Python中使用SMTP发送邮件以及POP收取邮件
假设我们自己的电子邮件地址是from@163.com,对方的电子邮件地址是to@sina.com(这里的地址虚拟的),现在我们用Outlook或者Foxmail之类的软件写好邮件,填上对方的Email ...
- Linux下配置mail使用外部SMTP发送邮件
修改/etc/mail.rc,增加两行:指定外部的smtp服务器地址.帐号密码等. # vi /etc/mail.rc set from=demo@qq.com smtp=smtp.qq.com se ...
- python中的SMTP发送邮件
一. 介绍 python3中自带了smtplib模块和email模块 smtplib模块:负责与邮件服务器的交互 email模块:负责组织邮件内容 二. smtplib模块 smtplib模块:主要是 ...
- 发现用System.Net.Mail发邮件(代码附后),附件稍微大一点就会造成程序假死. 有没有什么简单的解决办法呢? 多谢!!
附件大,上传,发送一定会慢.程序卡,应该是主线程正在发送,邮件造成的.创建其他线程在后台去发.这样就不影响主线程做其他工作了 using System; using System.Collecti ...
- Java发送邮件(带附件)
实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...
- smtp发送带附件的邮件(直接将string类型结果保存为附件)
该方式直接保存为HTML文件,也可以是文本文件,其它格式效果不是很好 MailMessage mmsg = new MailMessage(); mmsg.Subject = " ...
- centos 使用mutt发送邮件带附件
1.安装mutt工具 yum install -y mutt 2.使用mutt发邮件并带附件echo "统计日志" | /usr/bin/mutt -s "统计日志&qu ...
- 如何在 Laravel 中使用 SMTP 发送邮件(适用于 163、QQ、Gmail 等)
Laravel 和 Laravel 的邮件发送使用方式完全一致.Laravel 的邮件发送中文文档在:http: 邮箱为例,展示如何用 Laravel 内置的邮件发送类来发送邮件. 配置 修改邮 ...
随机推荐
- [JAVA]JAVA章1 数组数据去重
一 利用HashSet进行去重 //定义一个数组:有几个重复项 int[] testarray = {1,2,33,4,2,3,44,5,222,3}; //利用HashSet对数组数据去重 Set& ...
- bootstrap 坑
1. 表格内存出不来,也不报错 .. 值是对的.. 原因是 table 中必须有属性 data-toggle="table" <table id="My ...
- 安装crf++
在这里就不提心酸的安装过程了,就把成功安装及部分问题整理出来,以供参考: 安装环境:ubuntu14 1.安装ruby包 sudo apt-get install ruby2.安装zlib包 su ...
- 树莓派无法挂载exfat格式硬盘
ubutnu系统 挂载硬盘时报错: mount: unknown filesystem type 'exfat' 这是因为树莓派默认无法识别 exfat, 需要安装 exfat-fuse . sudo ...
- 移动端Android软键盘遮住输入框解决!
在使用vue的情况下,在输入框中添加 <textarea class="textarea" @click="isAndroid" :maxlength=& ...
- 双向循环链表涉及双向指针的基本操作(C语言)
链表大概分为有无头指针,有无尾指针,是否循环,单向还是双向, 这些都很简单,前提是你要把指针和单链表理解透彻.这些都是基于单链表 的变形,要根据实际问题,选择链表的类型. 头指针的指针域储存着储存头节 ...
- 2019.01.23 ural1519 Formula 1(轮廓线dp)
传送门 轮廓线dpdpdp模板题. 题意简述:给一个放有障碍的网格图,问有多少种方法能使所有非障碍格子都在同一条哈密顿回路上面. 考虑用括号序列的写法来状压这个轮廓线. 用000表示没有插头,111表 ...
- Java中List与数组互相转化
问题的提出: 今天在完成一个小功能的时候,需要把存放在List中的数据转化成字符串数组.想当然地用了List的一个方法toArray(),它的返回值是Object[]类型,于是用强制类型转换.代码如下 ...
- 第02章:MongoDB安装
①下载 https://www.mongodb.com/ 下载所需版本的tar.gz ②解压安装 tar -zxvf mongodb-3.2.12.tar.gz mv -r mongodb-3.2. ...
- typecho 调用评论最多热门文章
在当前主题的functions.php文件中添加以下函数代码: function getHotComments($limit = 10){ $db = Typecho_Db::get(); $resu ...