以邮件附件的方式发送二进制数据流

用户需求:用户希望在系统上有个界面发邮件,发的内容为填写的邮件内容+数据库中附件表对应的附件

附件:附件在数据中为二进制流.

附件表字段:ATT_ID(流水号) ATT_NAME(文件名如test.jpg,xxx.doc),ATT_CONTENT(附件内容byte[])

查了一下网上的文章,都是在硬上的文章,测了一下,在硬盘上的可以发送成功.于是考虑以下解决方法

  1. 直接从数据库读出数据流做为附件发送(最佳方法)
  2. 先保存到硬盘上再以附件发送(替代方法)

  protected void btnSend_Click(object sender, EventArgs e)
        {
           //获取附件列表

    List<MyAttachment> li = new MyAttachment().GetItems(); 

            MailMessage message = new MailMessage();
            message.From = new MailAddress(xxx@126.com);
            message.To.Add(xxx@126.com);
            message.Subject = "test";
            message.Body = "testbody";

            foreach (MyAttachment myAtt in li)
            {
                System.IO.Stream s = this.ReturnPhoto(myAtt.Content);
                System.Net.Mail.Attachment att = new System.Net.Mail.Attachment(s, myAtt.Name);
                message.Attachments.Add(att);
            }
            message.IsBodyHtml = true;
            SmtpClient client = new SmtpClient("192.168.0.1");
            client.Send(message);
        }

      

   //把byte[]转成stream
        public System.IO.MemoryStream ReturnPhoto(byte[] streamByte)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte);
            //System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
            return ms;
        }

 测试OK.

原文地址:https://www.cnblogs.com/sportdog/p/2735710.html