Mercurial Hosting > mailer
annotate src/index.html @ 9:14932af93327 default tip
minor fix
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 23 Sep 2024 18:35:54 -0600 (4 months ago) |
parents | f35ce99118ad |
children |
rev | line source |
---|---|
0 | 1 <!doctype html> |
2 <html> | |
3 <head> | |
4 <meta name="viewport" content="width=device-width, initial-scale=1"> | |
5 <style> | |
6 @import "/site.css"; | |
7 | |
8 h1 { | |
9 margin-bottom: 8px; | |
10 } | |
11 h4 { | |
12 margin-top: 0; | |
13 } | |
14 | |
15 textarea { | |
16 width: 100%; | |
17 } | |
18 textarea[name=server] { | |
19 height: 120px; | |
20 } | |
21 textarea[name=mail] { | |
22 height: 260px; | |
23 } | |
24 </style> | |
25 <script> | |
26 let server = { | |
27 host: 'mail.smtp2go.com', | |
5 | 28 port: 465, |
29 username: 'reactionary', | |
0 | 30 password: 'not telling', |
31 }; | |
32 server = JSON.stringify(server,null,'\t'); | |
33 | |
34 let mails = {}; | |
35 | |
36 mails.simple = { | |
37 From: 'mailer@reactionary.software', | |
38 To: 'someone@reactionary.software', | |
39 Subject: 'Simple', | |
40 body: 'Google sucks.', | |
41 }; | |
42 | |
43 mails.html = { | |
44 From: 'mailer@reactionary.software', | |
45 To: 'someone@reactionary.software', | |
46 Subject: 'HTML', | |
47 'Content-Type': 'multipart/alternative', | |
48 body: [ | |
49 { | |
50 'Content-Type': 'text/plain; charset="UTF-8"', | |
51 body: 'Google sucks.', | |
52 }, | |
53 { | |
54 'Content-Type': 'text/html; charset="UTF-8"', | |
55 body: '<a href="https://www.google.com/">Google</a> sucks.', | |
56 }, | |
57 ], | |
58 }; | |
59 | |
60 mails.attachment = { | |
61 From: 'mailer@reactionary.software', | |
62 To: 'someone@reactionary.software', | |
63 Subject: 'Attachment', | |
64 'Content-Type': 'multipart/mixed', | |
65 body: [ | |
66 { | |
67 'Content-Type': 'multipart/alternative', | |
68 body: [ | |
69 { | |
70 'Content-Type': 'text/plain; charset="UTF-8"', | |
71 body: 'Google sucks.', | |
72 }, | |
73 { | |
74 'Content-Type': 'text/html; charset="UTF-8"', | |
75 body: '<a href="https://www.google.com/">Google</a> sucks.', | |
76 }, | |
77 ], | |
78 }, | |
79 { | |
80 'Content-Disposition': 'attachment; filename="test.txt"', | |
81 body: 'test file', | |
82 }, | |
83 ] | |
84 }; | |
85 | |
86 function set(what) { | |
87 let s = JSON.stringify( mails[what], null, '\t' ); | |
9 | 88 document.querySelector('textarea[name=mail]').value = s; |
0 | 89 } |
90 | |
91 function init() { | |
9 | 92 document.querySelector('textarea[name=server]').value = server; |
0 | 93 set('simple'); |
94 } | |
95 </script> | |
96 <title>Mailer REST API</title> | |
97 </head> | |
98 <body> | |
99 <h1>Mailer REST API</h1> | |
7 | 100 <h4><a href="https://www.reactionary.software/">Reactionary Software</a> by <a href="https://linkmy.style/fschmidt">fschmidt</a></h4> |
0 | 101 |
102 <p>Send emails by a POST request.</p> | |
103 | |
104 <form method=post action="/send.json"> | |
105 <p> | |
106 SMTP Server<br> | |
107 <textarea name=server></textarea><br> | |
108 <small>Update to your server.</small> | |
109 </p> | |
110 <p> | |
111 Mail<br> | |
112 <textarea name=mail></textarea><br> | |
113 <button type=button onclick="set('simple')">Simple</button> | |
114 <button type=button onclick="set('html')">HTML</button> | |
115 <button type=button onclick="set('attachment')">Attachment</button> | |
116 </p> | |
117 <p> | |
118 <input type=submit> | |
119 </p> | |
120 </form> | |
121 | |
122 <p>Note that all <b>mail</b> fields except <b>body</b> are simply passed directly to SMTP.</p> | |
123 | |
3 | 124 <p>Port 465 uses SSL. Other ports are unencrypted. If anyone can give me good reason why TLS or STARTTLS are needed, I can implement them.</p> |
125 | |
8 | 126 <p>Here is <a href="https://hg.reactionary.software/repo/mailer/">the source</a> of this website. This service is implemented in <a href="https://www.luan.software/">Luan</a>. The entire implemention is in the file <a href="/send.json.luan">send.json.luan</a>. And here is <a href="https://mikraite.arkian.net/Mailer-REST-API-tp3435.html">a discussion thread</a> if you want to comment.</p> |
0 | 127 </body> |
128 <script> init(); </script> | |
129 </html> |