码迷,mamicode.com
首页 > 其他好文 > 详细

杂项收集,包括-发邮件、二维码生成、文件下载、压缩、导出excel

时间:2016-09-08 20:12:44      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

本篇就最近工作解决的问题做个代码收集。包括以下几个方面:发邮件、二维码生成、文件下载、压缩、导出excel。有一种可用的解决方法就好,不求全面,不求原理。

1、发邮件:

命名空间:System.Net.Mail
程序集:System(在 system.dll 中)

tips: MailMessage 类的实例用于构造可使用 SmtpClient 类传输到 SMTP 服务器以便传递的电子邮件。

         若要指定电子邮件的发件人、收件人和内容,请使用 MailMessage 类的关联属性。一般需要注意的有 发件人From、收件人To、抄送 (CC)、密件抄送 (BCC)、附件Attachments、主题Subject、邮件正文Body。
另外,测试时正文和标题不要随意输入类似"afdadva"等等的无意义字母数字,会被服务器默认为垃圾邮件而拦截

技术分享
 1       string senderServerIp = "smtp.126.com";
 2 
 3                         string fromMailAddress = "xxx@126.com";
 4                         string mailUsername = "xxx@126.com";
 5                         string mailPassword = "pppp"; //发送邮箱的密码
 6                         string mailPort = "25";
 7                         string attachPath = path + "/" + fileName;//附件
 8                         parmer.Content = "该邮件由系统代发.";
 9                         MailHelper email = new MailHelper(senderServerIp, parmer.ReceiveMailbox, fromMailAddress,
10                             parmer.Title, parmer.Content, mailUsername, mailPassword, mailPort, false, true);
11                         email.AddAttachments(attachPath);
12                         email.Send();
调用示例
技术分享
  1 using System;
  2 using System.IO;
  3 using System.Net.Mail;
  4 using System.Net.Mime;
  5 
  6 namespace NewEnergyHandler.Common
  7 {
  8     public class MailHelper
  9     {
 10         private readonly MailMessage _mMailMessage;   //主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)
 11         private SmtpClient _mSmtpClient; //主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)
 12         private readonly int _mSenderPort;   //发送邮件所用的端口号(htmp协议默认为25)
 13         private readonly string _mSenderServerHost;    //发件箱的邮件服务器地址(IP形式或字符串形式均可)
 14         private readonly string _mSenderPassword;    //发件箱的密码
 15         private readonly string _mSenderUsername;   //发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)
 16         private readonly bool _mEnableSsl;    //是否对邮件内容进行socket层加密传输
 17         private readonly bool _mEnablePwdAuthentication;  //是否对发件人邮箱进行密码验证
 18 
 19         ///<summary>
 20         /// 构造函数
 21         ///</summary>
 22         ///<param name="server">发件箱的邮件服务器地址</param>
 23         ///<param name="toMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
 24         ///<param name="fromMail">发件人地址</param>
 25         ///<param name="subject">邮件标题</param>
 26         ///<param name="emailBody">邮件内容(可以以html格式进行设计)</param>
 27         ///<param name="username">发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)</param>
 28         ///<param name="password">发件人邮箱密码</param>
 29         ///<param name="port">发送邮件所用的端口号(htmp协议默认为25)</param>
 30         ///<param name="sslEnable">true表示对邮件内容进行socket层加密传输,false表示不加密</param>
 31         ///<param name="pwdCheckEnable">true表示对发件人邮箱进行密码验证,false表示不对发件人邮箱进行密码验证</param>
 32         public MailHelper(string server, string toMail, string fromMail, string subject, string emailBody, string username, string password, string port, bool sslEnable, bool pwdCheckEnable)
 33         {
 34             try
 35             {
 36                 _mMailMessage = new MailMessage();
 37                 _mMailMessage.To.Add(toMail);
 38                 _mMailMessage.From = new MailAddress(fromMail);
 39                 _mMailMessage.Subject = subject;
 40                 _mMailMessage.Body = emailBody;
 41                 _mMailMessage.IsBodyHtml = true;
 42                 _mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
 43                 _mMailMessage.Priority = MailPriority.Normal;
 44                 _mSenderServerHost = server;
 45                 _mSenderUsername = username;
 46                 _mSenderPassword = password;
 47                 _mSenderPort = Convert.ToInt32(port);
 48                 _mEnableSsl = sslEnable;
 49                 _mEnablePwdAuthentication = pwdCheckEnable;
 50             }
 51             catch (Exception ex)
 52             {
 53                 Console.WriteLine(ex.ToString());
 54             }
 55         }
 56 
 57         ///<summary>
 58         /// 添加附件
 59         ///</summary>
 60         ///<param name="attachmentsPath">附件的路径集合,以分号分隔</param>
 61         public void AddAttachments(string attachmentsPath)
 62         {
 63             try
 64             {
 65                 string[] path = attachmentsPath.Split(;); //以什么符号分隔可以自定义
 66                 for (int i = 0; i < path.Length; i++)
 67                 {
 68                     var data = new Attachment(path[i], MediaTypeNames.Application.Octet);
 69                     var disposition = data.ContentDisposition;
 70                     disposition.CreationDate = File.GetCreationTime(path[i]);
 71                     disposition.ModificationDate = File.GetLastWriteTime(path[i]);
 72                     disposition.ReadDate = File.GetLastAccessTime(path[i]);
 73                     disposition.FileName = path[i].Substring(path[i].LastIndexOf(/)+1);
 74                     _mMailMessage.Attachments.Add(data);
 75                 }
 76             }
 77             catch (Exception ex)
 78             {
 79                 Console.WriteLine(ex.ToString());
 80             }
 81         }
 82 
 83         ///<summary>
 84         /// 邮件的发送
 85         ///</summary>
 86         public void Send()
 87         {
 88             try
 89             {
 90                 if (_mMailMessage != null)
 91                 {
 92                     _mSmtpClient = new SmtpClient
 93                     {
 94                         Host = _mSenderServerHost,
 95                         Port = _mSenderPort,
 96                         UseDefaultCredentials = false,
 97                         EnableSsl = _mEnableSsl
 98                     };
 99                     if (_mEnablePwdAuthentication)
100                     {
101                         System.Net.NetworkCredential nc = new System.Net.NetworkCredential(_mSenderUsername, _mSenderPassword);
102                         _mSmtpClient.Credentials = nc.GetCredential(_mSmtpClient.Host, _mSmtpClient.Port, "NTLM");
103                     }
104                     else
105                     {
106                         _mSmtpClient.Credentials = new System.Net.NetworkCredential(_mSenderUsername, _mSenderPassword);
107                     }
108                     _mSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
109                     _mSmtpClient.Send(_mMailMessage);
110                 }
111             }
112             catch (Exception ex)
113             {
114                 Console.WriteLine(ex.ToString());
115             }
116         }
117     }
118 }
MailHelper 辅助类

2、二维码生成

命名空间:using ThoughtWorks.QRCode.Codec;

程序集:ThoughtWorks.QRCode.dll(需从网上下载)。

tips: QRCodeEncoder类设置一下生成相关的参数,而后 确定二维码里的内容,以及要保存的文件名和路径即可。

 QrCodeHelper qrCodeHelper =new QrCodeHelper();
 var qrCodeFilePath = qrCodeHelper.CreateCode_Simple("testString.");
技术分享
using System;
using System.Drawing;
using System.IO;
using System.Text;
using ThoughtWorks.QRCode.Codec;

namespace Common
{
    public class QrCodeHelper
    {
        public string CreateNr(int id)
        {
            return id.ToString();
        }
        //程序路径  
        readonly string _currentPath = ConfigHelper.GetConfigString("QrCodePicPath");
        public string CreateCode_Simple(int scale, string nr)
        {
            var qrCodeEncoder = new QRCodeEncoder
            {
                QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE,
                QRCodeScale = scale,
                QRCodeVersion = 0,
                QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M
            };
            Image image = qrCodeEncoder.Encode(nr, Encoding.UTF8);

            //文件名  
            var fileName = DateTime.Now.ToString(@"yyyymmddhhmmssfff");
            SaveImg(_currentPath, fileName + ".jpg", image);
            image.Dispose();
            return fileName;
        }
        public string CreateCode_Simple(string nr)
        {
            return CreateCode_Simple(4, nr);
        }

        /// <summary>  
        /// 保存图片  
        /// </summary>  
        /// <param name="strPath">保存路径</param>
        /// <param name="fileName"></param>
        /// <param name="img">图片</param>  
        public static void SaveImg(string strPath, string fileName, Image img)
        {
            //保存图片到目录  
            if (!Directory.Exists(strPath))
            {
                //当前目录不存在,则创建  
                Directory.CreateDirectory(strPath);
            }
            img.Save(strPath + "/" + fileName, System.Drawing.Imaging.ImageFormat.Jpeg);

        }

    }
}
QrCodeHelper辅助类

 

3、文件下载

网站下载一般就是Response里写入文件,注意下文件的后缀,类型匹配就ok。

技术分享
 1                 var response = HttpContext.Response;
 2                 response.Clear();
 3                 response.Buffer = true;
 4                 response.Charset = "utf-8";
 5                 var file1 = "xxx.dll";
 6                 response.AppendHeader("Content-Disposition", "attachment;filename=" + file1);
 7                 response.ContentEncoding = System.Text.Encoding.UTF8;
 8                 response.ContentType = "application/x-msdownload";
 9                 var pathTest = "D:/CommonTest";
10                 response.WriteFile(pathTest + "/" + file1);
11                 response.End();
HttpContext.Response

4、压缩

这篇博文详细明了:.NET 4.5 中新提供的压缩类   

5、导出excel

待~~

 

另注:以上用到的代码,差不多都是网上搜索而来,并非原创,工作匆忙,未能保存原链接。若是原作者觉得侵权,删之。

杂项收集,包括-发邮件、二维码生成、文件下载、压缩、导出excel

标签:

原文地址:http://www.cnblogs.com/dacude/p/5852619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!