标签:
最近不知道是不是服务器的IP被163的封了, 网站发送邮件发布出去, 所以想了个办法, 把邮件保存下来, 然后下载下来回复, 找了好多方法都不好用, 自己试了一些, 根据园里面的一些代码改写的, 实测可用
先定义扩展方法:
使用的framework版本为 .net 3.5
namespace System.Net.Mail { public static class MailMessageExtend { //1 public static byte[] ToArray(this MailMessage msg) { const BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy; using (var ms = new MemoryStream()) { var assembly = typeof(System.Net.Mail.SmtpClient).Assembly; var writerType = assembly.GetType("System.Net.Mail.MailWriter"); var writer = Activator.CreateInstance(writerType, flags, null, new object[] { ms }, CultureInfo.InvariantCulture); msg.GetType().GetMethod("Send", flags).Invoke(msg, new[] { writer, true }); return ms.ToArray(); } } //2 public static void ToArray(this MailMessage msg, string Path) { const BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy; using (var ms = new MemoryStream()) { var assembly = typeof(System.Net.Mail.SmtpClient).Assembly; var writerType = assembly.GetType("System.Net.Mail.MailWriter"); var writer = Activator.CreateInstance(writerType, flags, null, new object[] { ms }, CultureInfo.InvariantCulture); msg.GetType().GetMethod("Send", flags).Invoke(msg, new[] { writer, true }); byte[] content = ms.ToArray(); using (var file = new FileStream(Path, FileMode.Create)) { file.Write(content, 0, content.Length); } } } } }
本人菜鸟, 定义扩展方法,怎么定义, 搞了好半天才明白, 其实外面还要套一层对应的命名空间
使用示例很简单,自己改起来挺方便的, 方法2就是我自己方便使用扩展的
//生成MailMessage MailMessage msg = SendEmailView(model, "127.0.0.1"); //项目里面的方法, 返回MailMessage
string path = string.Format("/Eml/{0}.eml", ID);
//调用方法, 不加path参数的话就是调用方法1,需要自己接收byte数组
msg.ToArray(path);
Response.Redirect(path);
参考地址
http://www.cnblogs.com/westsource/archive/2010/11/01/1865992.html
这篇博客里面的
那接下来要做的就是用上MailWriter这个内部(internal)类,当然这是很简单的事:
这句下面的代码
里面写的这个方法,
大概在 msg.GetType().GetMethod( .......这个地方, 总是报错
也没查出来是什么原因, 有知道的在下面回复一下, 我开始以为是framework版本的原因, 后台几个版本都试了 不行
2015-07-30
在.Net中将MailMessage邮件信息保存为本地的eml文件
标签:
原文地址:http://www.cnblogs.com/juley/p/4689778.html