当前位置:网站首页>Splicing of.Net distribution with outlook mail format and table
Splicing of.Net distribution with outlook mail format and table
2022-07-23 23:51:00 【Drunken Li Bai】
As the title , Our common business needs to prepare an email , It may contain headers of specific colors , form , Script of a specific font , Like this :

So how to realize outlook It is particularly critical that a specific email format is sent through code , If you write the style step by step, it will be very slow .
Solution :( This plan is to move the letter intact .htm On the template , And not Chinese garbled )
First turn on the Outlook mail copy To a word In the document , Save as Single File Web Page(*.mht,*.mhtml), Use this file IE open ,F10 Save as Webpage , All (*.htm;*.html), Save code as Unicode(UTF-8), Then drag it into the code to make an email template , You can send the same email style as the one sent by the customer .
problem :
IE When the official has announced his retirement , How the Win11 Open down IE browser :
Create a new desktop .txt Text document , Enter the following line of code :
CreateObject("InternetExplorer.Application").Visible=truepreservation , Change the suffix to .vbs, Double click the file , Will open an empty page IE browser , Put the well preserved .mht Drag to the newly opened IE window , You can open .mht file , that will do F10 Save as UTF-8 coded .htm file .

Save another htm Templates ,
The table is determined by the number of rows in the data source , The idea of table splicing is based on the table code generated in the template , Use circular statements to dynamically splice headers , Every line , Closing labels, etc , Refer to the code sample for details :
string tableHeader = @"<TABLE class=MsoNormalTable
style='BORDER-TOP: medium none; BORDER-RIGHT: medium none; WIDTH: 432.05pt; BORDER-COLLAPSE: collapse; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 0cm 0cm 0cm; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext'
cellSpacing=0 cellPadding=0 width=576 border=1>
<TBODY>
<TR style='HEIGHT: 23pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes'>
<TD
style='BORDER-TOP: windowtext 1pt solid; HEIGHT: 23pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 79.2pt; BACKGROUND: #00b0f0; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 5.4pt; BORDER-LEFT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; mso-border-alt: solid windowtext .5pt'
vAlign=top width=106>
<P class=MsoNormal><SPAN style='mso-bookmark: _MailAutoSig'><B><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Arial',sans-serif'>Company
Code<o:p></o:p></SPAN></B></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN>
<TD
style='BORDER-TOP: windowtext 1pt solid; HEIGHT: 23pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 79.2pt; BACKGROUND: #00b0f0; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 5.4pt; BORDER-LEFT: medium none; PADDING-RIGHT: 5.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt'
vAlign=top width=106>
<P class=MsoNormal><SPAN style='mso-bookmark: _MailAutoSig'><B><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Arial',sans-serif; COLOR: black'>Account</SPAN></B></SPAN><SPAN
style='mso-bookmark: _MailAutoSig'><B><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Arial',sans-serif'><o:p></o:p></SPAN></B></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN>
<TD
style='BORDER-TOP: windowtext 1pt solid; HEIGHT: 23pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 79.2pt; BACKGROUND: #00b0f0; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 5.4pt; BORDER-LEFT: medium none; PADDING-RIGHT: 5.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt'
vAlign=top width=106>
<P class=MsoNormal><SPAN style='mso-bookmark: _MailAutoSig'><B><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Arial',sans-serif; COLOR: black'>Name</SPAN></B></SPAN><SPAN
style='mso-bookmark: _MailAutoSig'><B><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Arial',sans-serif'><o:p></o:p></SPAN></B></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN>
<TD
style='BORDER-TOP: windowtext 1pt solid; HEIGHT: 23pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 79.2pt; BACKGROUND: #00b0f0; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 5.4pt; BORDER-LEFT: medium none; PADDING-RIGHT: 5.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt'
vAlign=top width=106>
<P class=MsoNormal><SPAN style='mso-bookmark: _MailAutoSig'><B><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Arial',sans-serif; COLOR: black'>Grand
Total </SPAN></B></SPAN><SPAN style='mso-bookmark: _MailAutoSig'><B><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Arial',sans-serif'><o:p></o:p></SPAN></B></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN>
<TD
style='BORDER-TOP: windowtext 1pt solid; HEIGHT: 23pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 115.25pt; BACKGROUND: #00b0f0; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 0cm; BORDER-LEFT: medium none; PADDING-RIGHT: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt'
vAlign=top width=154>
<P class=MsoNormal><SPAN style='mso-bookmark: _MailAutoSig'><B><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Arial',sans-serif; COLOR: black'>Refund
Reason<o:p></o:p></SPAN></B></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN></TR>";
string tableHeaderEnd = "</TABLE>";
string tbodyStart = "<TBODY>";
string tbodyEnd = "</TBODY>";
for (int i = 0; i < result.Count; i++)
{
tr += @"<TR style='HEIGHT: 14pt; mso-yfti-irow: " + i + 1 + @"'>
<TD
style='BORDER-TOP: medium none; HEIGHT: 14pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 79.2pt; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 5.4pt; BORDER-LEFT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt'
vAlign=top width=106 noWrap>
<P class=MsoNormal><SPAN style='mso-bookmark: _MailAutoSig'><SPAN
style='FONT-SIZE: 10pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri'>" + result[i].CompanyCode + @"<o:p></o:p></SPAN></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN>
<TD
style='BORDER-TOP: medium none; HEIGHT: 14pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 79.2pt; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 5.4pt; BORDER-LEFT: medium none; PADDING-RIGHT: 5.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt'
vAlign=top width=106 noWrap>
<P class=MsoNormal><SPAN style='mso-bookmark: _MailAutoSig'><SPAN
style='FONT-SIZE: 10pt'>" + result[i].PersonnelNo + @"<o:p></o:p></SPAN></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN>
<TD
style='BORDER-TOP: medium none; HEIGHT: 14pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 79.2pt; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 5.4pt; BORDER-LEFT: medium none; PADDING-RIGHT: 5.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt'
vAlign=top width=106 noWrap>
<P class=MsoNormal><SPAN style='mso-bookmark: _MailAutoSig'><SPAN
class=SpellE><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Segoe UI',sans-serif'>" + result[i].Name + @"</SPAN></SPAN></SPAN><SPAN
style='mso-bookmark: _MailAutoSig'><SPAN
style='FONT-SIZE: 9pt; FONT-FAMILY: 'Segoe UI',sans-serif'><o:p></o:p></SPAN></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN>
<TD
style='BORDER-TOP: medium none; HEIGHT: 14pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 79.2pt; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 5.4pt; BORDER-LEFT: medium none; PADDING-RIGHT: 5.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt'
vAlign=top width=106 noWrap>
<P class=MsoNormal style='TEXT-ALIGN: right' align=right><SPAN
style='mso-bookmark: _MailAutoSig'><SPAN
style='FONT-SIZE: 10pt'>" + result[i].GrandTotal + @"<o:p></o:p></SPAN></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN>
<TD
style='BORDER-TOP: medium none; HEIGHT: 14pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 115.25pt; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 0cm; BORDER-LEFT: medium none; PADDING-RIGHT: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt'
vAlign=top width=154>
<P class=MsoNormal><SPAN style='mso-bookmark: _MailAutoSig'><SPAN
style='FONT-SIZE: 10pt'>" + result[i].DBReason + @"<o:p></o:p></SPAN></SPAN></P></TD><SPAN
style='mso-bookmark: _MailAutoSig'></SPAN></TR>";
}
tablehtml = tableHeader + tbodyStart + tr + tbodyEnd + tableHeaderEnd;Table splicing string and table placeholder in template ##Table## Replace :

Table Table structure can be opened in combination with browser .htm Observe Html Code hierarchy , Auxiliary splicing :
What we see is Table Label contains tbody contain tr A table of labels , Finally, or tr td such , Whether it's Jquery Of Datatable,bootstrap table The bottom layer is realized by this kind of thing .
The final letter :

Offensive learning reference , If there is any infringement, please contact me to delete it
边栏推荐
- How are you preparing for the Android golden nine silver ten interview? The latest Android Interview Questions Summary helps you prepare for the war
- Everything you need to know about parsing JSON with Jackson
- 第七章、测试架构元素
- Iptables prevent nmap scanning and binlog
- 树形DP
- DGS first acquaintance
- Idea cannot be switched to Chinese
- 【OpenCV】- cv.threshold()函数的参数type是数字时,代表的含义
- PushGateway+Prometheus+Grafana构建Flink实时监控
- DGS之联邦(Federation)
猜你喜欢

qiankun子应用package.json中的name成了默认路径

DGS的错误处理

Baidu editor uploads pictures and sets custom directories

Y75. Chapter IV Prometheus factory monitoring system and practice -- Prometheus alarm setting (VI)

ciscn_2019_c_1

ciscn_ 2019_ n_ one

Redis集群搭建(Cluster 集群模式,分片集群)
QT | set part size sizehint, minimumsizehint, sizepolicy, stretch factor

DDD思维架构学习

权重分析——CRITIC权重法
随机推荐
Longest increasing subsequence variant [deep understanding of the longest increasing sequence]
JS convert numbers to uppercase
.NET下发同Outlook邮件格式以及表格的拼接
怎么开户买收益6%的理财产品呢?
权重分析——熵权法
Thread pool serialization
warmup_ csaw_ two thousand and sixteen
idea无法切换成中文
DDD思维架构学习
Sentinel链路方式流控失效解决
Pushgateway+prometheus+grafana build Flink real-time monitoring
工具推荐-语雀
太空射击第08课: 改进的碰撞
warmup_csaw_2016
ret2text
The most complete 2022 Android interview questions in history
PushGateway+Prometheus+Grafana构建Flink实时监控
Tool recommendation - YuQue
pytorch中with torch.no_grad(): && model.eval()
pwn1_sctf_2016