我使用ResourceWriter 生成了一个resource文件,里面包含了很多bmp图片.现在的问题是,我在我的另外一个工程里面使用到这个resource文件
如下代码可以生成我想要的图片:Assembly myAssem = Assembly.GetEntryAssembly();
ResourceManager rm = new ResourceManager("resouce文件名",myAssem); 这样我就可以成功地得到这个图片了 (Image)rm.GetObject("MyLogo"); 接下来就是我如何把这个图片以附件的方式添加到我的email里面呢?
一般的做法是使用文件名:
MailMessage msg = new MailMessage();
Attachment blue = new Attachment("pix\\blue.bmp");
msg.Attachments.Add(blue);
但是我通过resource文件生成的是object,不是文件,我应该如何解决? 谢谢
如下代码可以生成我想要的图片:Assembly myAssem = Assembly.GetEntryAssembly();
ResourceManager rm = new ResourceManager("resouce文件名",myAssem); 这样我就可以成功地得到这个图片了 (Image)rm.GetObject("MyLogo"); 接下来就是我如何把这个图片以附件的方式添加到我的email里面呢?
一般的做法是使用文件名:
MailMessage msg = new MailMessage();
Attachment blue = new Attachment("pix\\blue.bmp");
msg.Attachments.Add(blue);
但是我通过resource文件生成的是object,不是文件,我应该如何解决? 谢谢
名称 说明
Attachment (String) 使用指定的内容字符串初始化 Attachment 类的新实例。
Attachment (Stream, ContentType) 使用指定的流和内容类型初始化 Attachment 类的新实例。
Attachment (Stream, String) 使用指定的流和名称初始化 Attachment 类的新实例。
Attachment (String, ContentType) 使用指定的内容字符串和 ContentType 初始化 Attachment 类的新实例。
Attachment (String, String) 使用指定的内容字符串和 MIME 类型信息初始化 Attachment 类的新实例。
Attachment (Stream, String, String) 使用指定的流、名称和 MIME 类型信息初始化 Attachment 类的新实例。
ResourceManager rm = new ResourceManager(typeof(Resources));
Image a = (Image)rm.GetObject("button101");
Stream s = new MemoryStream();
a.Save(s, ImageFormat.Gif); MailMessage message = new MailMessage("[email protected]", "[email protected]");
Attachment data = new Attachment(s, System.Net.Mime.MediaTypeNames.Application.Octet);
message.Attachments.Add(data);把图片读到内存流里,然后放到附件中.
LZ可以试下.
Image img =(Image)rm.GetObject("MyLogo"); MemoryStream strm = new MemoryStream();
img.Save(img, System.Drawing.Imaging.ImageFormat.Bmp);
strm.Flush();Attachment blue = new Attachment(strm, "blue.bmp");
msg.Attachments.Add(blue);这样的话,可以实现插入这个图片到email里面.但是这样生成的图片大小和原来不一样了,比如原来是650k,生成的附件图片只有646k.这样的话,图片在email里面也就不显示了.
很奇怪!!但是我在debug的时候,去检查那个MemoryStream的长度却是650k.为什么添加到email里面就变化了呢?
Attachment (Stream, String) 使用指定的流和名称初始化 Attachment 类的新实例。
这里的string不是随便一个文件名就可以的,不清楚不如直接换成如下的方法,
Attachment (Stream, ContentType) 使用指定的流和内容类型初始化 Attachment 类的新实例。
仔细查查ContentType
Image img = (Image)rm.GetObject("logo2");
MemoryStream strm = new MemoryStream();
img.Save(strm, System.Drawing.Imaging.ImageFormat.Jpeg);
strm.Flush();System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Image.Jpeg);
Attachment blue = new Attachment(strm, ct);
blue.ContentDisposition.FileName = "logo2.JPG";msg.Attachments.Add(blue);就是不对 !!!ps,图片我用画笔工具重新save过了,选择的是jpg格式