postmailer
Version:
HTTP POST -> SMTP proxy, as Express middleware
95 lines (80 loc) • 4.2 kB
HTML
<html>
<head>
<title>POST for {{name}}</title>
<style>
body {
max-width: 800px;
margin: auto;
font-family: 'Open Sans', Tahoma;
font-size: 11pt;
color: #111;
}
h1 {
font-size: 1.5em;
margin: 0.5em 0;
text-align: center;
}
h2 {
font-size: 1.2em;
margin: 1em 0em;
}
code {
display: inline-block;
padding: 0.3em 0.3em 0.1em 0.3em;
background-color: #EEE;
border-radius: 0.3em;
font-family: Consolas, Monaco, 'Andale Mono', monospace;
box-shadow: 0px 1px #DDD;
}
pre {
margin: 0.5em 2em;
padding: 0;
font-size: inherit;
}
pre code {
display: block;
width: 100%;
overflow: auto;
}
.cmd-option {
color: #048;
}
.cmd-value {
color: #800;
}
.cmd-value-file {
color: #482;
}
</style>
</head>
<body data-url="{{url}}" data-ws-url="{{ws-url}}" data-name="{{name}}">
<h1>POST for <span class="self-name">{{name}}</span></h1>
<p>This is an HTTP POST endpoint. Any text/document you POST to this URL will be received by the user.</p>
<p>You must provide a <code>From:</code> header (borrowed from SMTP), and can include other mail headers as well.</p>
<h2>Use with cURL:</h2>
<p>To send a plain text message:</p>
<pre><code>curl <span class="cmd-option">--data-binary</span> <span class="cmd-value">"Hello, world"</span> <span class="cmd-option">--header</span> <span class="cmd-value">"Content-Type: text/plain"</span> \
<span class="cmd-option">--header</span> <span class="cmd-value">"From: Somebody <somebody@example.com>"</span> \
<span class="cmd-argument"><span class="self-url">{{url}}</span></span></code></pre>
<p>To send an inline picture:</p>
<pre><code>curl <span class="cmd-option">--data-binary</span> <span class="cmd-value-file">@small-image.png</span> <span class="cmd-option">--header</span> <span class="cmd-value">"Content-Type: image/png"</span> \
<span class="cmd-option">--header</span> <span class="cmd-value">"From: Somebody <somebody@example.com>"</span> \
<span class="cmd-argument"><span class="self-url">{{url}}</span></span></code></pre>
<p>To send a picture (or other document) as an attachment:</p>
<pre><code>curl <span class="cmd-option">--data-binary</span> <span class="cmd-value-file">@large-image.jpg</span> <span class="cmd-option">--header</span> <span class="cmd-value">"Content-Type: image/jpeg"</span> \
<span class="cmd-option">--header</span> <span class="cmd-value">"Content-Disposition: attachment; filename=\"large-image.jpg\""</span> \
<span class="cmd-option">--header</span> <span class="cmd-value">"From: Somebody <somebody@example.com>"</span> \
<span class="cmd-argument"><span class="self-url">{{url}}</span></span></code></pre>
<script>
(function (document) { // Wrap so that minifying is more effective
// Replace template values with JS so we can just use the template on its own
var selfUrl = location.href.replace(/[?#].*/, ''); // Strip query and hash
var selfUrlEscaped = selfUrl.replace(/&/g, '&').replace(/</g, '<');
var backupName = selfUrl.replace(/.*?:\/\//, '');
var backupNameEscaped = backupName.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"');
document.title = document.title.replace(/\{\{name\}\}/g, backupName);
document.body.innerHTML = document.body.innerHTML.replace(/\{\{url\}\}/g, selfUrlEscaped).replace(/\{\{name\}\}/g, backupNameEscaped);
})(document);
</script>
</body>
</html>