当前位置: 首页 > news >正文

[.net] 如何在mail的加入正文显示图片

转贴 原文:http://www.cnblogs.com/mqcan/archive/2008/06/02/1212157.html



最近看到很多人在问这个问题.就是如何在Mail的正文中如何显示附件的图片?本人也不会就去网上搜索.可是网上竟然没有(可能是太简单,很多人不屑提供代码),于是本人就尝试.
     最先想到的就是outLook可以显示附件中的图片.于是在OutLook的邮件正文:右键->ViewSource 就看到了
1 < img  width =560  height =420  id ="_x0000_i1025"
2 src ="cid:image001.jpg@01C8C4AF.C7E6ED20" >
这种代码 所以产生的第一个想法就是在写正文的时候,自动根据附件去生成类似代码.说干就干,马上动手!
    新建一个网站,拖几个FileUpload 上去.如下图


根据MicroSoft自带的System.Net.Mail 组件,完成发送方法,代码如下
 1 using  System;
 2 using  System.Collections.Generic;
 3 using  System.Text;
 4 using  System.Net.Mail;
 5 using  System.Net;
 6 using  System.IO;
 7 namespace  STS.MailSystem.Common
 8 {
 9    public class QMail
10    {
11        /// <summary>
12        /// 描述:Email发送通用函数
13        /// </summary>
14        /// <param name="from">发件人</param>
15        /// <param name="to">收件人(多个收件人以逗号隔开)</param>
16        /// <param name="subject">主题</param>
17        /// <param name="text">内容</param>
18        /// <param name="attch">附件</param>
19        /// <returns></returns>

20        public string MailSend(string from, string to, string cc, string subject, string text, Attachment attch, string priority)
21        {
22            MailMessage message = new MailMessage(from, to);
23            message.CC.Add(cc);
24            message.Subject = subject;
25            message.Body = text;
26            
27
28            //message.CC.Add(new MailAddress(from)); //超送给自己
29            //message.Bcc.Add(new MailAddress(""));
30
31            if (attch != null)
32            {
33                Attachment data = attch;
34                message.Attachments.Add(data);
35            }

36
37            message.BodyEncoding = System.Text.Encoding.UTF8;//编码方式
38            switch (priority.ToUpper())
39            
40                case "HIGH":
41                    message.Priority = MailPriority.High;//优先级
42                    break;
43                case "NORMAL":
44                    message.Priority = MailPriority.Normal;//优先级
45                    break;
46                case "LOW":
47                    message.Priority = MailPriority.Low;//优先级
48                    break;
49                default:
50                    message.Priority = MailPriority.Normal;//优先级
51                    break;
52            }

53            
54            message.IsBodyHtml = true;//是否是html格式
55            SmtpClient client = new SmtpClient();//不同情况更改
56
57            //client.Credentials = CredentialCache.DefaultNetworkCredentials;//匿名认证
58            
59            
60            try
61            {
62                client.Send(message);
63                return "1";
64            }

65            catch (Exception e)
66            {
67                
68                return e.Message;
69            }

70            
71        }

72
73        
74
75    }

76}

77
78

然后看看我们的前台代码
 1 using  System;
 2 using  System.Data;
 3 using  System.Configuration;
 4 using  System.Web;
 5 using  System.Web.Security;
 6 using  System.Web.UI;
 7 using  System.Web.UI.WebControls;
 8 using  System.Web.UI.WebControls.WebParts;
 9 using  System.Web.UI.HtmlControls;
10 using  System.Net.Mail;
11 using  STS.MailSystem.Common;
12 using  System.Text;
13
14      public  partial  class  _Default : System.Web.UI.Page
15      {
16        protected void Page_Load(object sender, EventArgs e)
17        {
18
19        }

20        protected void Button1_Click(object sender, EventArgs e)
21        {
22            QMail mail = new QMail();
23
24            Attachment attachment = null;
25            //File Name
26            string fileName = string.Empty;
27            string filePath = string.Empty;
28            StringBuilder mailBody = new StringBuilder();
29            //mailBody.Append("content-type:base64");
30            //mailBody.Append("content-transfer-encodinf:");
31            //mailBody.Append("content-disposition:inline");
32            //mailBody.Append("filename:aa");
33            //增加附件
34            //这里指去考虑附件是图片的情况.
35            //其他情况不考虑
36            if (File1.Value != "")
37            {
38                filePath = this.File1.PostedFile.FileName;
39                fileName = filePath.Substring(filePath.LastIndexOf(""""+ 1);
40                //增加显示图片
41                mailBody.Append("content-id:" + fileName);
42                mailBody.Append("<img src='cid:" + fileName+"' />");
43                attachment = new Attachment(filePath);              
44            }
         
45
46
47            //Send Mail
48            mail.MailSend("minqiang.zhang@metinform.cn""minqiang.zhang@metinform.cn",
49                "minqiang.zhang@metinform.cn""演示如果在正文显示附件", mailBody.ToString(), attachment, "");
50
51        }

52    }

53
54

写完之后,点击发送,我靠!真的可以也.
     代码其实很简单我们来总结一下:
     这里最重要的东西是在正文中如何使用Img显示附件中的图片,从代码中我们可以看到 content-id:附件中图片名字的方案解决的.
以上是自己方法,如果谁有更好的方法请贴出来,大家共享!
声明:由于代码是简单测试是否可以在附件中显示附件,所以代码写的很乱.大家看思路就行了.

转载于:https://www.cnblogs.com/jinweijie/archive/2008/06/03/1212835.html

相关文章:

  • MTK优美代码赏析4:MTK_MMI协议栈
  • 《UNIX环境高级编程 第2版》读书笔记
  • 你知道什么浊化现象吗?
  • Composite Design Pattern
  • 网页绘制图表 Google Charts with JavaScript #1....好强、好简单啊!
  • NOIP 模拟17
  • HTML——MP4视频不能播放
  • 初始线性基
  • Semaphore的简介及应用场景
  • 织梦单独调用上下篇文档标题、链接、缩略图
  • vjudge Trailing Zeroes (III) (二分答案 数论)
  • 七夕过后,我依然单身,于是我用Python爬了你们单身的原因
  • NOIP 模拟19
  • GIT上传失败,报错信息:HTTP 413 curl 22 The requested URL returned error: 413
  • vscode——如何对MarkDown文件进行预览
  • [NodeJS] 关于Buffer
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript异步流程控制的前世今生
  • leetcode388. Longest Absolute File Path
  • ucore操作系统实验笔记 - 重新理解中断
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 后端_ThinkPHP5
  • 检测对象或数组
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 使用Swoole加速Laravel(正式环境中)
  • 探索 JS 中的模块化
  • 微信开放平台全网发布【失败】的几点排查方法
  • 微信开源mars源码分析1—上层samples分析
  • 我这样减少了26.5M Java内存!
  • 做一名精致的JavaScripter 01:JavaScript简介
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • $forceUpdate()函数
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (12)Hive调优——count distinct去重优化
  • (145)光线追踪距离场柔和阴影
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (黑马C++)L06 重载与继承
  • (一)WLAN定义和基本架构转
  • (转载)Linux 多线程条件变量同步
  • (转载)Linux网络编程入门
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .Net6 Api Swagger配置
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET构架之我见
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET委托:一个关于C#的睡前故事
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @RequestMapping用法详解
  • @synthesize和@dynamic分别有什么作用?