.NET(C#):使用SmtpClient发送带有图片和附件的电子邮件
第一次使用这种方式发邮件呵呵,就比如拿我的Live邮箱往QQ邮箱上发一封邮件。
使用SmtpClient发送邮件的步骤就不讲了,在网上你可以找到太多的资料了,这里说一些需要注意的地方:
如果邮件的内容是HTML,设置MailMessage.IsBodyHtml为True,这样邮件才能够被正确以HTML形式读取。
在HTML中引用资源使用cid:xxx,xxx是附件的ContentId属性。同时也可以在MailMessage中的AlternateViews中加入AlternateView来指定电子邮件内容的不同格式。通过AlternativeView的LinkedResources来加入引用文件。引用也是通过LinkedResource的ContentId来设置的。事实上这个ContentId属性是来自AttachmentBase类型,而Attachment,AlternateView和LinkedResource类型都继承与这个类:
另外邮件的内容,主题,地址名称如果包含某些非ASCII字符的话应该指定一个编码,因为默认编码是ASCII。
最后某些SMTP服务器可能不支持SSL传输,因此SmtpClient的EnableSsl只能为false(否则会有异常抛出)。
代码:
using System;
using System.Text;
using System.Net;
using System.Net.Mime;
using System.Net.Mail;
namespace Mgen
{
class Program
{
static void Main()
{
//代码中的某些信息(如邮箱和密码)已用xxx代替,因此如果编译代码,请先替换成有效的数据!
using (var smtp = new SmtpClient())
using (var mail = new MailMessage("xxx@live.com", "xxx@qq.com"))
{
//图像附件
var attach = new Attachment(@"D:\a.jpg", MediaTypeNames.Image.Jpeg);
//设置ContentId
attach.ContentId = "pic";
//ZIP附件
var attach2 = new Attachment(@"D:\b.zip", "application/x-zip-compressed");
mail.Attachments.Add(attach);
mail.Attachments.Add(attach2);
//标题和内容,注意设置编码,因为默认编码是ASCII
mail.Subject = "你好";
mail.SubjectEncoding = Encoding.UTF8;
//HTML内容
mail.Body = "<img src=\"cid:pic\"/><p>来自Mgen。</p>";
mail.BodyEncoding = Encoding.UTF8;
//指示改电子邮件内容是HTML格式
mail.IsBodyHtml = true;
//SMTP设置(根据邮箱类型设置,这里是Live Mail的SMTP服务器地址)
smtp.Host = "smtp.live.com";
smtp.UseDefaultCredentials = false;
//某些SMTP服务器可能不支持SSL,会抛出异常
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("xxx@live.com", "xxx");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
//发送
smtp.Send(mail);
}
}
}
}
最后在QQ邮箱中浏览接收到的邮件:
相关文章
- 代码走查25条疑问 C# 跳转新的标签页 C#线程处理 .Net 特性 attribute 学习 ----自定义特性 看懂 ,学会 .NET 事件的正确姿势-简单版
- ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
- c# 中内部类的简单介绍 C#内部类
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
- .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片
- 采用异步来实现重新连接服务器或者重新启动服务 C#中类的属性的获取 SignalR2简易数据看板演示 C#动态调用泛型类、泛型方法 asp .net core Get raw request. 从壹开始前后端分离[.NetCore 不定期更新] 38 ║自动初始化数据库
- .Net Excel 导出图表Demo(柱状图,多标签页) .net工具类 分享一个简单的随机分红包的实现方式
- SQL 横转竖 、竖专横 (转载) 使用Dapper.Contrib 开发.net core程序,兼容多种数据库 C# 读取PDF多级书签 Json.net日期格式化设置 ASPNET 下载共享文件 ASPNET 文件批量下载 递归,循环,尾递归 利用IDisposable接口构建包含非托管资源对象 《.NET 进阶指南》读书笔记2------定义不可改变类型
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
- 第七节:语法总结(1)(自动属性、out参数、对象初始化器、var和dynamic等) 图片放大镜 JavaScript-基础 用javascript写原生ajax(笔记) 初遇 Asp.net MVC 数据库依赖缓存那些事儿 前端JS 与 后台C# 之间JSON序列化与反序列化(笔记)
- C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi
- MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式
- (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法
- 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) ASP.NET WebApi技术从入门到实战演练 C#面向服务WebService从入门到精通 DataTable与List<T>相互转换
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
- .NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧
- Word控件Spire.Doc 【Table】教程(8): 将内置表格样式应用于 C#、VB.NET 中的现有 Word 表格
- Word控件Spire.Doc 【Table】教程(4):如何在C#、VB.NET中设置Word表格样式
- Word控件Spire.Doc 【文档操作】教程(一):在 C#、VB.NET 中创建、编写和保存 Word
- Word控件Spire.Doc 转换教程(五):在 C#、VB.NET 中将 Word与HTML互相转换
- 【C#】asp.net
- [C#] 使用 Excel 和 Math.Net 进行曲线拟合和数据预测
- [C#] Direct2D 学习笔记 (一)vb.net转换为c#
- 第二节:Web前端-ASP.NET之C#基础
- 【转】.NET (C#) 中打印变量的内存地址
- .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)——转载
- ASP.NET 3.5(c#)区域化设置(LCID)
- C# asp.net开源插件推荐:PdfiumViewer ( pdf 转成 图片png pdf convert to image )
- 【C#/WPF】.Net生成二维码QRCode的工具