comparison src/index.html @ 0:bd4802730bab

its working
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 18 May 2023 21:20:59 -0600
parents
children 6cd68fe047c7
comparison
equal deleted inserted replaced
-1:000000000000 0:bd4802730bab
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',
28 username: 'luan.software',
29 password: 'not telling',
30 port: 2525,
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' );
88 document.querySelector('textarea[name=mail]').textContent = s;
89 }
90
91 function init() {
92 document.querySelector('textarea[name=server]').textContent = server;
93 set('simple');
94 }
95 </script>
96 <title>Mailer REST API</title>
97 </head>
98 <body>
99 <h1>Mailer REST API</h1>
100 <h4><a href="http://www.reactionary.software/">Reactionary Software</a> by <a href="https://www.linkmystyle.com/fschmidt">fschmidt</a></h4>
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
124 <p>Here is <a href="https://hg.reactionary.software/repo/mailer/">the source</a> of this website. This service is implemented in <a href="http://www.luan.software/">Luan</a>. The entire implemention is in the file <a href="/send.json.luan">send.json.luan</a>. And here are discussion threads on <a href="https://communities.win/c/programming/p/16b6N5KIjr/mailer-rest-api/c">Scored</a> and <a href="http://www.mikraite.org/Mailer-REST-API-tp3435.html">Reactionary Software</a> if you want to comment.</p>
125 </body>
126 <script> init(); </script>
127 </html>