@@ -14,33 +14,108 @@ html
14
14
min-height : 800px ;
15
15
max-width : 600px ;
16
16
display : block ;
17
+ }
18
+ .preview-email-tabs {
19
+ display : flex ;
20
+ flex-wrap : wrap ;
21
+ max-width : 600px ;
17
22
border : 1px solid black ;
23
+ background : #e2e2e2 ;
24
+ }
25
+ .preview-email-tabs input [type = " radio" ] {
26
+ display : none ;
27
+ }
28
+ .preview-email-tabs label {
29
+ padding : 1rem ;
30
+ background : #e2e2e2 ;
31
+ font-weight : bold ;
32
+ cursor : pointer ;
33
+ }
34
+ .preview-email-tabs .preview-email-tab {
35
+ width : 100% ;
36
+ background : #fff ;
37
+ order : 1 ;
38
+ display : none ;
39
+ }
40
+ .preview-email-tabs input [type = ' radio' ]:checked + label + .preview-email-tab {
41
+ display : block ;
42
+ }
43
+ .preview-email-tabs input [type = " radio" ]:checked + label {
44
+ background : #fff ;
18
45
}
19
-
20
46
body
21
47
table
48
+ if base64
49
+ tr
50
+ td( colspan =2 , style ='text-align:right;' ) : button( type ='button' , onclick ='downloadRawEmail()' ) Download Original
51
+ script .
52
+ function downloadRawEmail () {
53
+ var link = document .createElement (' a' );
54
+ link .href = " data:message/rfc822;base64,#{base64}" ;
55
+ link .download = " #{messageId ? messageId.replace('<', '').replace('>', '').split('@')[0] : Date.now()}.eml" ;
56
+ link .click ();
57
+ }
22
58
each headerLine, i in headerLines
23
59
- const index = headerLine .line .indexOf (' : ' )
60
+ - const value = headerLine .line .slice (index + 1 )
61
+ - const header = headers .get (headerLine .key )
24
62
tr
25
63
td
26
- strong: code = headerLine .line .slice (0 , index)
64
+ strong= headerLine .line .slice (0 , index)
27
65
td
28
- code= headerLine .line .slice (index + 1 )
66
+ if header
67
+ case headerLine .key
68
+ when ' content-type'
69
+ when ' content-disposition'
70
+ when ' dkim-signature'
71
+ = header .value || header || value
72
+ //- TODO: header.params[key]
73
+ when ' subject'
74
+ when ' references'
75
+ when ' message-id'
76
+ when ' in-reply-to'
77
+ when ' priority'
78
+ when ' x-priority'
79
+ when ' x-msmail-priority'
80
+ when ' importance'
81
+ = header .value || header || value
82
+ when ' from'
83
+ when ' to'
84
+ when ' cc'
85
+ when ' bcc'
86
+ when ' sender'
87
+ when ' reply-to'
88
+ when ' delivered-to'
89
+ when ' return-path'
90
+ if header .html
91
+ != header .html
92
+ else
93
+ = header .value || header || value
94
+ default
95
+ //- when 'date'
96
+ = header .value || header || value
97
+ else
98
+ = value
29
99
if attachments && attachments .length > 0
30
100
tr
31
- td: strong: code Attachments
101
+ td: strong Attachments
32
102
td
33
103
ul
34
104
each a in attachments
35
105
li
36
106
a( href =` data:${ a .contentType } ;base64,${ a .content .toString (' base64' )} ` , download =a .filename , target ='_blank' )
37
107
if a .filename
38
- code= ` ${ a .filename } `
108
+ code= a .filename
39
109
else
40
110
code= ' Unnamed file'
111
+ .preview-email-tabs
41
112
if html
42
- tr: td( colspan =2 ) : strong: code HTML Version:
43
- tr: td( colspan =2 ) : iframe( sandbox , referrerpolicy ='no-referrer' , seamless ='seamless' , srcdoc =` <base target='_top'>${ html} ` ) #html
113
+ input( type ='radio' , name ='preview_email' , checked ) #tab-html
114
+ label( for ='tab-html' ) HTML
115
+ .preview-email-tab
116
+ iframe( sandbox , referrerpolicy ='no-referrer' , seamless ='seamless' , srcdoc =` <base target='_top'>${ html} ` ) #html
44
117
if text
45
- tr: td( colspan =2 ) : strong: code Text Version:
46
- tr: td( colspan =2 ) : iframe( sandbox , referrerpolicy ='no-referrer' , seamless ='seamless' , srcdoc =` <pre>${ text} </pre>` ) #text
118
+ input( type ='radio' , name ='preview_email' , checked =! html) #tab-text
119
+ label( for ='tab-text' ) Plain text
120
+ .preview-email-tab
121
+ iframe( sandbox , referrerpolicy ='no-referrer' , seamless ='seamless' , srcdoc =` <pre>${ text} </pre>` ) #text
0 commit comments