先看一下手动发送邮件内容加入表格操作(下图所示),直接复制Excel内容,再粘贴到邮件内容中,就是这么便捷,如果我们想自动发送邮件,也实现同样的效果如果实现呢,在这里介绍2种方法:

一.读取Excel转为HTML

1.C#读取Excel转为HTML代码

/// <summary>/// 测试用拼接Html/// </summary>public void Test(){string Body = @"你好:附件为【{FileName}】资料,请注意查收.{Table}{Data}
============================
此为系统自动发送邮件,请勿回复
pcbren致力于PCB自动化研究
============================
";string FileName = "pcbren";Body = Body.Replace("{FileName}", FileName);Body = Body.Replace("{Data}", DateTime.Now.ToString("yyyy-MM-dd"));Body = Body.Replace("\r\n", "<br>");string table = ReadXLS(@"E:\AA\test.xls");Body = Body.Replace("{Table}", table);Body = @"
<html><style>table,table tr th, table tr td { border:1px solid #0094ff; }table { min-height: 25px; line-height: 25px; text-align: center; border-collapse: collapse;}   </style>
<body>
{body}
</body>
</html>".Replace("{body}", Body); ;}/// <summary>/// 读取Excel表格内容/// </summary>/// <param name="xlsPath"></param>/// <returns></returns>public string ReadXLS(string xlsPath){object missing = System.Reflection.Missing.Value;Excel.Application app = new Excel.Application();app.Visible = false;app.UserControl = true;Excel.Workbook wb = app.Application.Workbooks.Open(xlsPath, missing, true, missing, missing, missing,missing, missing, missing, true, missing, missing, missing, missing, missing);Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets.get_Item(1);int rowsint = ws.UsedRange.Cells.Rows.Count; //自动发邮件 表格行数应该固定更好int columnsint = ws.UsedRange.Cells.Columns.Count;//自动发邮件 表格列数应该固定更好StringBuilder sbHtml = new StringBuilder(1000);sbHtml.AppendLine("<table>");for (int x = 1; x <= rowsint; x++){string trLine = "   <tr>";int columnsSum = 0;for (int y = 1; y <= columnsint; y++){trLine += (x == 1) ? "\r\n      <th>" : "\r\n      <td>";var tt = (Excel.Range)ws.Cells[x, y];string CellValue = (tt.Value ?? "").ToString().Trim();trLine += CellValue;trLine += (x == 1) ? "</th>" : "</td>";if (!string.IsNullOrEmpty(CellValue))columnsSum++;}trLine += "\r\n   </tr>";if (columnsSum > 0)sbHtml.AppendLine(trLine);}sbHtml.AppendLine("</table>");return sbHtml.ToString();}

View Code

2.转换后的HTML格式

<html><head><style>table,table tr th, table tr td { border:1px solid #0094ff; }table { min-height: 25px; line-height: 25px; text-align: center; border-collapse: collapse;}   </style> </head><body>Dear: <br /> Please see attached working gerble files of PN:pcbren11111 11-20 , only for your reference .<br /> <table> <tbody><tr> <th>编码 </th> <th>型号 </th> <th>信息说明 </th> <th>备注 </th> </tr> <tr> <td>1 </td> <td>AAAA </td> <td>A001-pcbren11111.rar </td> <td>测试 </td> </tr> <tr> <td>2 </td> <td>BBBB </td> <td>A001-pcbren22222.rar </td> <td>测试 </td> </tr> <tr> <td>3 </td> <td>CCCC </td> <td>A001-pcbren33333.rar </td> <td>测试 </td> </tr> <tr> <td>4 </td> <td>DDDD </td> <td>A001-pcbren44444.rar </td> <td>测试 </td> </tr> <tr> <td>5 </td> <td>EEEE </td> <td>A001-pcbren55555.rar </td> <td>测试 </td> </tr> <tr> <td>6 </td> <td>FFFF </td> <td>A001-pcbren66666.rar </td> <td>测试 </td> </tr> </tbody></table> <br />=============================<br />此为系统自动发送邮件,请勿回复<br />pcbren致力于PCB自动化研究<br />=============================<br />   </body>
</html>

View Code

3.HTML格式转换后效果

二.SQL转为HTML发送

1.SQL转为HTML并发送邮件

DECLARE @SQL VARCHAR(MAX)
DECLARE @HtmlBody VARCHAR(MAX)
DECLARE @HtmlTable VARCHAR(MAX)
SET @SQL = 'SELECT TechName,ItemName,ItemPara FROM FP_EMS_DB.dbo.V_ppegeneral WHERE pdctno = ''2V011Z30A4'' AND TechNo = ''CC_01'' ORDER BY ItemNo '
SET @HtmlTable = dbo.ExecSQL2Html(@SQL,0)
set @HtmlBody = '你好:</br>' + @HtmlTable + '</br>'
+ '
==============</br>
发送邮件测试</br>
==============</br>
'
exec msdb.dbo.sp_send_dbmail
@profile_name = 'pcbren邮箱', --配置名称
@recipients = 'pcbren@aliyun.com', --收件名称
@body_format = 'HTML', --内容格式
@subject = 'pcbren',
@body = @HtmlBody

View Code

2.转换后的HTML格式

你好:</br><html ><head></head><body>  <style>          table,table tr th, table tr td { border:1px solid #0094ff;padding: 0px 10px }          table { min-height: 25px; line-height: 25px; text-align: center; border-collapse: collapse;}             th {background:green;color:white;}             </style> <table><tr><th>TechName</th><th>ItemName</th><th>ItemPara</th></tr><tr><td>开料</td><td>综合利用率是否为最高</td><td>/</td></tr><tr><td>开料</td><td>综合利用率</td><td>68.36</td></tr><tr><td>开料</td><td>纬向余料</td><td>0</td></tr><tr><td>开料</td><td>经向余料</td><td>0</td></tr><tr><td>开料</td><td>是否为小交货面积拼板</td><td>n</td></tr><tr><td>开料</td><td>纬向尺寸</td><td>24</td></tr><tr><td>开料</td><td>是否为阴阳铜结构</td><td>N</td></tr><tr><td>开料</td><td>是否横竖开料</td><td>N</td></tr><tr><td>开料</td><td>生产尺寸长</td><td>24</td></tr><tr><td>开料</td><td>生产尺寸宽</td><td>18</td></tr><tr><td>开料</td><td>拼板利用率</td><td>68.36</td></tr><tr><td>开料</td><td>开料图纸</td><td>/</td></tr><tr><td>开料</td><td>是否顾客指定板材</td><td>N</td></tr><tr><td>开料</td><td>开料数</td><td>4</td></tr><tr><td>开料</td><td>大料经向尺寸</td><td>36</td></tr><tr><td>开料</td><td>大料纬向尺寸</td><td>48</td></tr><tr><td>开料</td><td>成品尺寸长</td><td>12</td></tr><tr><td>开料</td><td>成品尺寸宽</td><td>13.5</td></tr><tr><td>开料</td><td>是否为PTFE板材</td><td>N</td></tr><tr><td>开料</td><td>交货拼板个数</td><td>1</td></tr><tr><td>开料</td><td>生产拼板个数</td><td>1176</td></tr><tr><td>开料</td><td>交货单位</td><td>U</td></tr><tr><td>开料</td><td>是否为凹蚀板材</td><td>N</td></tr></table></body></html></br>  ==============</br>  发送邮件测试</br>  ==============</br>  

View Code

3.收到邮件HTML效果

转载于:https://www.cnblogs.com/pcbren/p/9992702.html

PCB 自动发送邮件---加入表格实现方法相关推荐

  1. C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑

    C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑 目录 C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑

  2. iden中html中表格自动生成,JS实现动态生成html table表格的方法分析

    本文实例讲述了JS实现动态生成html table表格的方法.分享给大家供大家参考,具体如下: 刚在论坛上面逛的时候看到有人问html表格怎么动态生成,我回了一下发现有好多小伙伴追问- - 看来还是有 ...

  3. 如何用python自动发邮件_Python | 解放双手,用Python实现自动发送邮件

    解放双手,用Python实现自动发送邮件 使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间. Python有两个内置库:smtplib和email,能够实现邮件功能, ...

  4. 高效办公,如何利用Python自动发送邮件

    自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ ...

  5. python整理excel数据-Python 自动整理 Excel 表格

    相信有不少朋友日常工作会用到 Excel 处理各式表格文件,更有甚者可能要花大把时间来做繁琐耗时的表格整理工作.最近有朋友问可否编程来减轻表格整理工作量,今儿我们就通过实例来实现 Python 对表格 ...

  6. 自动发送邮件(整理版)

    菜鸟D在工作时,用户提到要给系统添加一个定时发送邮件的功能,这个菜鸟D没有写过,只是知道基本原理是怎么回事.根据我的想法:新开一个线程,线程中添加一个计时器,由计时器来完成定时的任务.至于发送邮件,写 ...

  7. python封装sql脚本 github_Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码...

    原标题:Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码 在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使 ...

  8. C#实现发送邮件的三种方法

    这篇文章主要介绍了C#实现发送邮件的三种方法,实例讲述了Localhost,SMTP与SSL-SMTP三种实现方法,对于C#项目开发有不错的借鉴价值,需要的朋友可以参考下 本文实例讲述了C#实现发送邮 ...

  9. javamail 解码 base64 html格式邮件_python使用QQ邮箱实现自动发送邮件

    最近用到Python自动发送邮件,主要就是三步,登录邮件.写邮件内容.发送,用到的库是 smtplib 和 email,直接使用pip安装即可 我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMT ...

最新文章

  1. 不用计算实现 图片懒加载
  2. MM夏天化妆不掉妆的技巧
  3. 计算机应用124单元测试卷,《计算机应用基础》第一部分单元测试试卷
  4. solid设计原则_SOLID设计原则
  5. c程序语言的常量变量和标识符,浅谈C语言中的常量与变量.pdf
  6. 小米手机将终结卡顿?未来所有机型将升级新MIUI
  7. 教你在win10系统开启和使用语音识别
  8. matlab报错找不到icuuc54.dll解决办法:
  9. 测试人员必掌握的测试文档
  10. 火山视频去水印,无水印视频解析原理及实现
  11. ppt 插入柱状图及基础功能调整
  12. Lab multicast msdp
  13. php 字符显示不出来,ps文字显示不出来怎么办?
  14. html广告位代码,javascript实现一个简单的广告位
  15. kafka 创建 topic 报错 Error: Exception thrown by the agent : java.rmi.server.ExportException: Port alrea
  16. 此身, 此时, 此地
  17. 今日运势 酷q_《意大利grand老妇人》电影_意大利grand老妇人老版国语字幕-内蒙古呼和浩特铁路预防职务犯协会...
  18. 夫兵形象水,水之行避高趋下,兵之形避实击虚;水因地制流,兵因故制胜。故兵无常势水无常形。能因敌变化取胜者谓之神。
  19. 2018-2019-2 20165315《网络对抗技术》Exp7 网络欺诈防范
  20. 2018:5G标准关键年

热门文章

  1. 大连理工大学本科毕业论文答辩和论文选题PPT模板
  2. 通过poi实现解析并读取excel文件(包含xls、xlsx后缀)
  3. seaJS简介与使用
  4. SGL:Self-supervised Graph Learning for Recommendation论文
  5. ServiceMesh介绍(一)
  6. 擎创技术流 | ClickHouse逻辑集群的玩法
  7. 冲击继电器JC-7/11/DC110V
  8. javascript名字由来
  9. nacos名字的由来
  10. python8--scrapy第一个练习(获取豆瓣电视剧评论)