【转】邮件 and 图片

如何在邮件中嵌入图片,而非上传在附件 现在好的邮件客户端如outlook等支持直接插入图片,接收方阅读时也表现为非附件形式. 但是如果我们用代码实现呢?我们可以用下面2种方式实现 1.可以将图片传到有外链的网站,这个就无需介绍了,如果图片不变化,推荐这种形式。 2.采用base 64编码的方式,在此重点讲讲这种方式。 嵌入图片,可以说这是HTML的知识例了 1.首先需要准备图片,这里有个限制,我们在最后说明。 2.图片 阅读详情

邮件内容调用图片格式为:<img src=/"cid:Email001/">

发送邮件的服务端代码为:

SmtpClient 发送邮件的对象

折叠C# 代码
  1. System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();      
  2. mailMessage.From="发送者邮箱";      
  3. mailMessage.To.Add("收件人邮件列表");      
  4. mailMessage.CC.Add("抄送人邮件列表");      
  5. mailMessage.Subject = subject;      
  6. AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(content,null,"text/html");      
  7. LinkedResource lrImage = new LinkedResource("a.jpg","image/gif");      
  8. lrImage.ContentId = "Email001";      
  9. htmlBody.LinkedResources.Add(lrImage);      
  10. mailMessage.AlternateViews.Add(htmlBody);      
  11. SmtpClient.Send(mailMessage);     

例程:

折叠C# 代码
  1.             SmtpClient smtp = new SmtpClient();   
  2.              smtp.DeliveryMethod = SmtpDeliveryMethod.Network;   
  3.              smtp.Host = "smtp.163.com";   
  4.              smtp.Credentials = new NetworkCredential("renzhijie1111", "**");   
  5.   
  6.              MailMessage mm = new MailMessage();   
  7.              mm.From = new MailAddress("test@163.com", "test");   
  8.              mm.To.Add("test2@163.com");   
  9.   
  10.              mm.Subject = "测试图片邮件";   
  11.   
  12.             string plainTextBody = "如果你邮件客户端不支持HTML格式,或者你切换到“普通文本”视图,将看到此内容";   
  13.              mm.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainTextBody, null, "text/plain"));   
  14.   
  15.             ////HTML格式邮件的内容   
  16.             string htmlBodyContent = "如果你的看到<b>这个</b>, 说明你是在以 <span style=/"color:red/">HTML</span> 格式查看邮件<br><br>";   
  17.              htmlBodyContent += "<a href=/"http://www.fenbi360.net粉笔编程网</a> <img src=/"cid:weblogo/">";    //注意此处嵌入的图片资源   
  18.              AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(htmlBodyContent, null, "text/html");   
  19.   
  20.               
  21.              LinkedResource lrImage = new LinkedResource(@"d:/1.jpg", "image/gif");   
  22.              lrImage.ContentId = "weblogo"; //此处的ContentId 对应 htmlBodyContent 内容中的 cid: ,如果设置不正确,请不会显示图片   
  23.              htmlBody.LinkedResources.Add(lrImage);   
  24.   
  25.              mm.AlternateViews.Add(htmlBody);   
  26.   
  27.             ////要求回执的标志   
  28.              mm.Headers.Add("Disposition-Notification-To", "test@163.com");   
  29.   
  30.             ////自定义邮件头   
  31.              mm.Headers.Add("X-Website", "http://www.fenbi360.net");   
  32.   
  33.             ////针对 LOTUS DOMINO SERVER,插入回执头   
  34.              mm.Headers.Add("ReturnReceipt", "1");   
  35.   
  36.              mm.Priority = MailPriority.Normal; //优先级   
  37.              mm.ReplyTo = new MailAddress("test2@163.com", "我自己");   
  38.   
  39.             ////如果发送失败,SMTP 服务器将发送 失败邮件告诉我   
  40.              mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;   
  41.   
  42.             ////异步发送完成时的处理事件   
  43.              smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted);   
  44.   
  45.             ////开始异步发送   
  46.              smtp.SendAsync(mm, null);   
  47.   
  48.   
  49.   
  50.   
  51.   
  52. void smtp_SendCompleted(object sender, AsyncCompletedEventArgs e)   
  53.          {   
  54.             if (e.Cancelled)   
  55.              {   
  56.                  MessageBox.Show("发送被取消");   
  57.              }   
  58.             else  
  59.              {   
  60.                 if (e.Error == null)   
  61.                  {   
  62.                      MessageBox.Show("发送成功");   
  63.                  }   
  64.                 else  
  65.                  {   
  66.                      MessageBox.Show("发送失败: " + e.Error.Message);   
  67.                  }   
  68.              }   
  69.          }   

推荐一款.net SqlSugar ORM 一站式扩展库 RuoVea.ExSugar 集成 DI 注册、DbContext/Repository 模式、审计字段自动填充、全局查询过滤器、工作单元事务、差异日志记录、SM2 连接字符串加密,覆盖从 DataExecuting AOP 到分页查询的完整数据访问层抽象。为 .NET 开发者提供 SqlSugar ORM 的开箱即用增强封装,通过 DI 容器统一管理数据库连接、审计字段、查询过滤器和事务边界。建议通过环境变量、密钥管理服务(如 Azure Key Vault)或加密的配置文件注入。重载以启用完整功能(差异日志、过滤器等)。 阅读详情

相关推荐

LaTeX新手入门以及TeXlive和TeXstudio的安装使用

作为一个新手,LaTeX的了解和使用很是费了一番功夫,因此,在这里给找不到路的同志们稍微介绍一下。如有错误,敬请指正。本篇内容基于Win10系统,因此安装在Mac或者Linux上的同学可以再找找其他的介绍文章。 目录 LaTeX介绍 LaTeX环境配置 一、TeXlive下载 二、TeXlive安装 1. 安装main installer 2. 正式安装 三、TeXstudio安装...

zywhehe的博客 20万+

感慨一下

好久沒發文章了,原因是公司吧csdn給封了,今天試了一下,竟然又能用了~ 早上起來頭疼得不行,室友竟然昨天開了一晚上窗戶,說什麼屋裡潮氣太重,姐,您洗衣服從來不擰,不潮才奇怪! 畢業到現在,工作21個月了,從一點都不會,連菜鳥都算不上的小嘍囉,變成了真正的菜鳥了~,我都不知道我現在到底是做開發還是做BI,更可怕的是,兩個都會都在做,卻做得又不專業又不精通,看著朋友同學跳槽換了幾個工作,工資翻了

tearsmo的专栏 780

51单片机IAP在线升级

51单片机IAP在线升级 爱矽半导体E85F3325单片机IAP在线升级教程,此处可查看更新及demo下载 文章目录前言一、ROM资源二、KEIL有关知识1.BL51连接器:2.LX51连接器:三、Keil其他相关项说明:四、MCU启动文件说明:五、例程BOOTLOADER使用说明六、例程使用可更改说明:七、程序使用通信方式:XMODEM八、APP程序说明九、APP代码升级说明十、代码合并烧写 前言 扩展-IAP 主要用于产品出厂后应用程序的更新作用 ,类似于其他引导装载升级程序的方法,在系统中必须始终

qq_42415953的博客 6633

oracle 发送邮件 实现方法

CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXT        VARCHAR2,                                           P_SUB        VARCHAR2,                                           P_SENDOR     VARCHAR2,

恒则能成,一则能精 668

mailmessage 支持html,C#MailMessage显示HTML标记的AlternateViews

我在C#中使用MailMessage发送HTML电子邮件。我正在使用的代码如下C#MailMessage显示HTML标记的AlternateViewsMailMessage msg = new MailMessage();AlternateView htmlView = AlternateView.CreateAlternateViewFromString("Test Message", null...

weixin_34157892的博客 440

Python EXCEL表格图片、发送正文图片邮件

1、excel表格图片1.1代码‘’’file_path : string Excel文件的路径,最好是绝对路径.sheetname : string 需要复制成图片的Excel文件的sheet名.img_name : string 最终图片保存的名字及路径.‘’’from PIL import ImageGrab # 读取excel内容换为图片import os。

qq_33663705的博客 3794

邮件群发教程之文本图片

伯勒邮件群发机可以根据文本生成图片发送,只需要简单几步即可实现。所谓文本图片,就是输入文本内容,发送时群发机会自动将所输入的文本换为图片作为邮件内容发送

745

发送带图片邮件

文章目录背景实现过程使用JavaMail定义你所需要的发票模板将图片为二维码发送Service调用 背景 开完发票后需要发送邮件信息到客户邮箱中,此时的邮件是带有图片的,为此记录下本次开发过程 实现过程 使用JavaMail 配置文件 <dependency> <groupId>javax.mail</groupId> <artifactId>...

苏暖午后 785

基于.NET的Windows窗体编程之WinForms文件监控

在实际应用开发中,有时候需要操作本地文件或文件夹,还需监控磁盘目录的变化,比如当新增或删除文件时,提示变更信息,以起到警示作用。合理的文件监控,还可以起到事半功倍的效果,今天我们以一些简单的小例子,简述基于.NET的Windows窗体编程中FileSystemWatcher控件的相关应用,仅供学习分享使用,如有不足之处,还请指正。

绳锯木断,水滴石穿,专心写文,无问西东!!! 273

基于.NET的Windows窗体编程之WinForms滑块与上下控件

<think>我们根据内容生成摘要,≤150字。提取核心:介绍WinForms中TrackBar、DomainUpDown、NumericUpDown三个控件的用法,强调合理利用提高用户体验、节省空间。需简洁。</think>本文介绍.NET WinForms中三个实用控件:DomainUpDown用于上下选择列表项,NumericUpDown用于数值增减,TrackBar滑块直观调值。合理布局可提升体验、节省空间,附属性与事件示例。

绳锯木断,水滴石穿,专心写文,无问西东!!! 175

.NET 线程安全集合与并发数据结构深度实战:从 lock 到无锁

<think>我们需要根据用户提供的文本,生成一个不超过150字的文章摘要。用户给出了这篇关于.NET并发编程的长文,内容涵盖ConcurrentDictionary、线程安全集合、锁、原子性等。需要提炼核心,控制字数。 我们需要先理解文章主旨:通过两个事故(计数器丢更新、字典死循环)引出“线程安全集合只保证内部结构安全,不保证复合逻辑正确”。然后深入讲解ConcurrentDictionary内部、AddOrUpdate的工厂陷阱、GetOrAdd的副作用问题,并提供解决方案(StrongBox+Inte

一个热爱编程的人 224

技术速递|今天我将……现代化一个 .NET 应用

现在,我们已经成功将这个应用升级到了 .NET 10。如果你愿意,还可以继续使用 GitHub Copilot .NET 现代化工具,将这个应用进一步迁移到 Azure。面向初学者的 .NET 现代化指南。课程会更加深入地介绍应用的升级和迁移流程。欢迎前往了解。当然,也欢迎在这篇文章下留言,告诉我们你的使用体验。查看面向初学者的 .NET 现代化指南课程!

MicrosoftReactor的博客 236

电脑全能修复大师 Gilisoft Total Repair,智能检测修复系统、应用、游戏问题!DLL、DirectX、.NET运行库损坏修复+缺失自动补齐!

、“点了没反应”、“闪一下就退了”,其实这些情况,就是电脑缺系统组件了,当然,除了原本就缺少外,也包括在工作、游戏过程中,因为操作不当或意外导致的损坏,这个时候,就需要对电脑各种故障问题进行系统修复了。总的来说,它涵盖了5种功能:系统清理、系统修复、系统优化、文件修复,压缩解压,这也就使它从原本的系统修复工具升级成了电脑多功能工具箱。它会自动对当前系统进行深度扫描,包括:应用程序扫描、系统错误扫描、系统DLL扫描、游戏修复、C++运行库扫描、.net运行库修复等。当然,也可以对具体问题,进行单独处理;

2601_96690350的博客 206

AutoCAD .NET 二次开发深度解析:Editor.SetImpliedSelection 的正确使用与实战场景

本文基于 Autodesk 官方论坛讨论 How to use Editor.SetImpliedSelection 及官方文档,系统梳理 SetImpliedSelection 的使用方法、关键陷阱与实际工程应用。

ultramand的博客,重生之我在cad上二次开发猛猛敲C#代码~ 22

vrep-matlab机器人仿真--PUMA560机械臂目标抓取

PUMA560机械臂目标物块抓取系统,vrep与matlab联合仿真,有Qt写的上位机,功能有自由调整关节角、输入目标点定点移动、目标抓取等,可以将传送带上的物块夹到桌面上,适合初学者参考

上一篇: Sql Server 监控 Job 执行情况
下一篇: 【转帖】windows 服务大全
tearsmo
博客等级 码龄17年 110粉丝 166原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值