zoukankan      html  css  js  c++  java
  • 以邮件附件的方式发送二进制数据流

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

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

    附件表字段: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.

  • 相关阅读:
    深入protoBuf
    Golang数据库操纵对IN语句的支持
    golang几种常用配置文件使用方法总结(yaml、toml、json、xml、ini)
    golang实现rabbitmq消息队列失败尝试
    Trie性能分析之敏感词过滤golang
    Go语言cookie的基本操作
    微信二维码添加logo
    gin框架中间件
    gin入门-1
    2017-06-28(passwd 主要组与附属组 gpasswd newgrp groups)
  • 原文地址:https://www.cnblogs.com/sportdog/p/2735710.html
Copyright © 2011-2022 走看看