先看一下手动发送邮件内容加入表格操作(下图所示),直接复制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();
int rowsint = ws.UsedRange.Cells.Rows.Count; //自动发邮件 表格行数应该固定更好
int columnsint = ws.UsedRange.Cells.Columns.Count;//自动发邮件 表格列数应该固定更好
StringBuilder sbHtml = new StringBuilder();
sbHtml.AppendLine("<table>");
for (int x = ; x <= rowsint; x++)
{
string trLine = " <tr>";
int columnsSum = ;
for (int y = ; y <= columnsint; y++)
{
trLine += (x == ) ? "\r\n <th>" : "\r\n <td>";
var tt = (Excel.Range)ws.Cells[x, y];
string CellValue = (tt.Value ?? "").ToString().Trim();
trLine += CellValue;
trLine += (x == ) ? "</th>" : "</td>";
if (!string.IsNullOrEmpty(CellValue))
columnsSum++;
}
trLine += "\r\n </tr>";
if (columnsSum > )
sbHtml.AppendLine(trLine);
}
sbHtml.AppendLine("</table>");
return sbHtml.ToString();
}

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>

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

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>  

3.收到邮件HTML效果

PCB 自动发送邮件---加入表格实现方法的更多相关文章

  1. 利用EasySQLMAIL实现自动填写Excel表格并发送邮件(2)

    利用EasySQLMAIL实现自动填写Excel表格并发送邮件 转自:http://blog.sina.com.cn/s/blog_1549483b70102witg.html 前一篇博文中记录了“利 ...

  2. VBA控制outlook自动发送邮件(转)

    使用Excel VBA实现Outlook自动发送邮件 | 在工作上我们都会遇到批量发送邮件的情况,面对重复而规律性的工作,可以使用Excel的VBA实现自动批量化发送邮件.大大减小工作时间,提升工作效 ...

  3. python☞自动发送邮件

    一.SMTP 协议 SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 二.smtplib ...

  4. 使用mutt自动发送邮件

    1.Mutt安装及环境配置 1.1.安装 sudo yum install mutt 比如你要设置邮件的发信人,需要做: sudo vim /etc/Muttrc set envelope_from= ...

  5. SQL SERVER 2008自动发送邮件(完整版)

    这两天都在搞这个东西,从开始的一点不懂,到现在自己可以独立的完成这个功能!在这个过程中,CSDN的好多牛人都给了我很大的帮助,在此表示十二分的感谢!写这篇文章,一是为了巩固一下,二嘛我也很希望我写的这 ...

  6. Python3.x:定时自动发送邮件

    定时自动发送邮件 一.简述 python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email ...

  7. python3+request接口自动化框架中自动发送邮件

    在上一篇中的自动化框架中没有放上自动发送测试结果到邮箱的功能,在这篇文章中在补一下,哈哈 1.上一篇的代码就不在一一介绍了,本篇只介绍发送邮件的功能代码 2.在public common 文件夹中创建 ...

  8. Selenium实战(七)——自动发送邮件

    SMPT(Simple Mail Transfer Protocol)简单邮件传输协议,是一组由源地址到目的地址传送邮件的规则,可以控制信件的中转方式.Python的smptlib模块提供了简单的AP ...

  9. python 自动发送邮件遇到的问题

    在学习自动化测试高级应用,根据内容写关于自动发送邮件出现了几个问题以及解决办法: 问题1: 代码写好之后,运行的时候,出现如下报错: SMTPAuthenticationError: (550, '\ ...

随机推荐

  1. 再读Android sqlite

    再读Android sqlite Android原生支持sqlite数据库操作,sqlite时轻量级关系型数据库,支持标准sql语句.Android对sqlite进行良好的接口封装来避免sql注入等安 ...

  2. STL++?pb_ds平板电视初步探索

    什么是pb_ds? 除了众所周知的STL库,c++还自带了ext库(应该可以这么叫吧),其中有用pb_ds命名的名称空间(俗称平板电视).这个名称空间下有四个数据类型结构.这些都是鲜为人知的.经过测试 ...

  3. ORACLE 查看当前用户信息(用户,表视图,索引,表空间,同义词,存储过程,约束条件)

    1.用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select ...

  4. Linux:使用root踢掉其他用户

     首先使用w命令查看所有在线用户:  执行命令: pkill -kill -t tty3 再用w命令查看是否已经强制踢掉: TTY 是终端的意思    TTY :0 表示root用户登陆图形化界面的终 ...

  5. 三 , lnmp 一键包安装使用

    安装打包环境  #https://lnmp.org/----------------------------------------------------#安装wget -c http://soft ...

  6. STM32单片机串口一键下载电路与操作方法详解

    STM32三种启动模式对应的存储介质均是芯片内置的,它们是:1)用户闪存 = 芯片内置的Flash.2)SRAM = 芯片内置的RAM区,就是内存啦.3)系统存储器 = 芯片内部一块特定的区域,芯片出 ...

  7. javaHttp请求,接收到的是中文乱码如何处理

    可在service()方法中加日志,看哪种不是乱码 例如,中文乱码的话,中文编码一般有 UTF-8,GBK,ISO-8859-1 加日志为 List<String> list = new ...

  8. 封装的一些常见的JS DOM操作和数据处理的函数.

    //用 class 获取元素 function getElementsByClass(className,context) { context = context || document; if(do ...

  9. IIS301重定向:将不带www的域名跳转到带www上

    首先你的域名有这两条解析记录 进入服务器IIS,添加2个站点,如下图 第一个正常绑定你的域名:www.baidu.com 第二个绑定不带www的域名:baidu.com 然后点开ncgd-no-www ...

  10. 使用ajax,后台传回的数据处理

    使用ajax,后台传到前台的是json数据,但这只是一个字符串的形式,需要进行转换为对象 转换后再使用$.each()方法进行遍历 使用alert(typeof  msg) ;  可以查看msg的类型 ...