view src/private/tools/email.html @ 0:8f4df159f06b

start public repo
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 11 Jul 2025 20:57:49 -0600
parents
children
line wrap: on
line source

<!doctype html>
<html lang="en">
	<head>
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<style>
			@import "/tools/tools.css";

			body {
				margin: 3%;
			}
			textarea {
				width: 100%;
			}
			textarea[name=server] {
				height: 130px;
			}
			textarea[name=mail] {
				height: 260px;
			}
		</style>
		<script>
			let mails = {};

			mails.chatty_text = `
{
	To = "ftest@linkmy.style"
	From = "Link My Style <support@linkmy.style>"
	Subject = "checking in"
	["MIME-Version"] = "1.0"
	body = [[
Hi there,

just checking if this email reaches you.

Have a great day.

mlrch-6c2977f34d1e0
]]
}
`			.trim();

			mails.chatty_multipart = `
{
	To = "ftest@linkmy.style"
	From = "Link My Style <support@linkmy.style>"
	Subject = "checking in"
	["MIME-Version"] = "1.0"
	["Content-Type"] = "multipart/alternative"
	body = {
		{
			["Content-Type"] = [[text/plain; charset="UTF-8"]]
			body = [[
Hi there,

just checking if this email reaches you.

Have a great day.
]]
		}
		{
			["Content-Type"] = [[text/html; charset="UTF-8"]]
			body = [[
Hi there,<br>
<br>
just checking if this email reaches you.<br>
<br mailreach="mlrch-6c2977f34d1e0">
Have a great day.<br>
]]
		}
	}
}
`			.trim();

			mails.register_text = `
{
	To = "ftest@linkmy.style"
	From = "Link My Style <support@linkmy.style>"
	Subject = "Confirmation Code"
	["MIME-Version"] = "1.0"
	body = [[
Thank you for registering.  Please use the 6 digit confirmation code below to complete the process:

Confirmation Code: 999999

If you did not request this code, please ignore this email.

mlrch-6c2977f34d1e0
]]
}
`			.trim();

			mails.register_multipart = `
{
	To = "ftest@linkmy.style"
	From = "Link My Style <support@linkmy.style>"
	Subject = "Confirmation Code"
	["MIME-Version"] = "1.0"
	["Content-Type"] = "multipart/alternative"
	body = {
		{
			["Content-Type"] = [[text/plain; charset="UTF-8"]]
			body = [[
Thank you for registering.  Please use the 6 digit confirmation code below to complete the process:

Confirmation Code: 999999

If you did not request this code, please ignore this email.
]]
		}
		{
			["Content-Type"] = [[text/html; charset="UTF-8"]]
			body = [[
Thank you for registering.  Please use the 6 digit confirmation code below to complete the process:<br>
<br>
Confirmation Code: <b>999999</b><br>
<br mailreach="mlrch-6c2977f34d1e0">
If you did not request this code, please ignore this email.<br>
]]
		}
	}
}
`			.trim();

			function set(what) {
				document.querySelector('textarea[name=mail]').value = mails[what];
			}
		</script>
		<title>Test Email</title>
	</head>
	<body>
		<h1>Test Email</h1>

		<form method=post action="send_email.txt">
			<p>
				SMTP Server<br>
				<textarea name=server>
{
	host = "smtpcorp.com"
	port = 465
	username = "linkmystyle"
	password = "xxx"
}
</textarea>
			</p>
			<p>
				Mail<br>
				<textarea name=mail></textarea><br>
				<button type=button onclick="set('chatty_text')">chatty_text</button>
				<button type=button onclick="set('chatty_multipart')">chatty_multipart</button>
				<button type=button onclick="set('register_text')">register_text</button>
				<button type=button onclick="set('register_multipart')">register_multipart</button>
			</p>
			<p>
				<input type=submit>
			</p>
		</form>

		<p>The textareas contain <a href="https://www.luan.software/">Luan</a> tables which is more convenient than JSON.  Table keys can be like <b>key</b> when the key is like a variable name, or like <b>["a-key"]</b> when the key contains characters that aren't allowed in variable names.  String values can be like <b>"..."</b> or like <b>[[...]]</b> which can be multi-line.</b>

		<p>Change the server password to make this work</p>

		<p>Note that all mail fields except <b>body</b> are simply passed directly to SMTP.</p>
	</body>
	<script> set('register_multipart'); </script>
</html>