| {% extends "base.html" %} |
| |
| {% block title %}{{ application_name }} Development Console - Inbound Mail{% endblock %} |
| |
| {% block breadcrumbs %} |
| <span class="item"><a href="">Email</a></span> |
| {% endblock %} |
| |
| {% block head %} |
| |
| <style type="text/css">{% include "css/inboundmail.css" %}</style> |
| <script type="text/javascript"> |
| {% include "js/webhook.js" %} |
| {% include "js/multipart_form_data.js" %} |
| {% include "js/rfc822_date.js" %} |
| |
| var feedbackEl; |
| var formEl; |
| var payloadEl; |
| var fromEl; |
| var toEl; |
| var ccEl; |
| var subjectEl; |
| var bodyEl; |
| var contentLengthEl; |
| //var contentTypeEl; |
| |
| var sendInboundMailWebhook = function() { |
| |
| if (!feedbackEl) { |
| feedbackEl = document.getElementById('feedback'); |
| formEl = document.getElementById('inboundmail-form'); |
| fromEl = document.getElementById('from'); |
| toEl = document.getElementById('to'); |
| ccEl = document.getElementById('cc'); |
| subjectEl = document.getElementById('subject'); |
| bodyEl = document.getElementById('body'); |
| payloadEl = document.getElementById('payload'); |
| contentLengthEl = document.getElementById('content-length'); |
| } |
| |
| var from = fromEl.value; |
| var to = toEl.value; |
| var cc = ccEl.value; |
| var subject = subjectEl.value; |
| var body = bodyEl.value; |
| |
| if (!to || !from || !body) { |
| feedbackEl.className = 'ae-errorbox'; |
| feedbackEl.innerHTML = 'From, To and Message body are required.'; |
| return; |
| } |
| |
| feedbackEl.className = 'ae-message'; |
| feedbackEl.innerHTML = 'Sending mail message...'; |
| |
| var mpfd = new MultipartFormData(); |
| mpfd.addHeader('MIME-Version', '1.0'); |
| mpfd.addHeader('Date', RFC822Date.format(new Date())); |
| mpfd.addHeader('From', from); |
| mpfd.addHeader('To', to); |
| if (cc) { |
| mpfd.addHeader('Cc', cc); |
| } |
| mpfd.addHeader('Subject', subject); |
| mpfd.addHeader('Content-Type', 'multipart/alternative; ' + |
| 'boundary=' + mpfd.boundary); |
| mpfd.addPart(null, body, 'text/plain; charset=UTF-8'); |
| mpfd.addPart(null, body, 'text/html; charset=UTF-8'); |
| |
| payloadEl.value = mpfd.toString(); |
| |
| contentLengthEl = payloadEl.value.length; |
| |
| formEl.action = '/_ah/mail/' + escape(to); |
| |
| (new Webhook('inboundmail-form')).run(handleInboundMailResult); |
| |
| // Prevents actual form posts. |
| return false; |
| }; |
| |
| var handleInboundMailResult = function(hook, req, error) { |
| if (error != null || req == null || req.status != 200) { |
| feedbackEl.className = 'ae-errorbox'; |
| feedbackEl.innerHTML = 'Message send failure<br>' + |
| req.responseText; |
| } else { |
| var timestamp; |
| var dateString = new Date().toString(); |
| var match = dateString.match(/(\d\d:\d\d:\d\d).+\((.+)\)/); |
| if (!match || !match[0] || !match[2]) { |
| timestamp = dateString; |
| } else { |
| timestamp = match[1] + ' ' + match[2]; |
| } |
| |
| feedbackEl.className = 'ae-message'; |
| feedbackEl.innerHTML = 'Message has been sent at ' + timestamp; |
| } |
| }; |
| |
| </script> |
| {% endblock %} |
| |
| {% block body %} |
| <div id="inboundmail"> |
| <h3>Email</h3> |
| {% if inboundmail_configured %}{% else %} |
| <div class="ae-errorbox"> |
| Inbound mail is not yet configured properly in your app.yaml in the services section. |
| </div> |
| {% endif %} |
| <div id="feedback"></div> |
| <form id="inboundmail-form" |
| action="/_ah/mail/" method="post" |
| onsubmit="sendInboundMailWebhook(); return false"> |
| |
| <input type="hidden" name="xsrf_token" value="{{ xsrf_token }}"/> |
| <input type="hidden" name="payload" id="payload"> |
| <input type="hidden" id="content-type" name="header:Content-Type" value="message/rfc822"> |
| <input type="hidden" id="content-length" name="header:Content-Length"> |
| |
| <div class="fieldset"> |
| <label for="from">From:</label> |
| <input type="text" id="from" name="from" size="40"> |
| </div> |
| |
| <div class="fieldset"> |
| <label for="to">To:</label> |
| <input type="text" id="to" name="to" size="40"> |
| </div> |
| |
| <div class="fieldset"> |
| <label for="cc">Cc:</label> |
| <input type="text" id="cc" name="cc" size="40"> |
| </div> |
| |
| <div class="fieldset"> |
| <label for="subject">Subject:</label> |
| <input type="text" id="subject" name="subject" size="40"> |
| </div> |
| |
| <div id="body-c" class="fieldset"> |
| <label for="body">Message body (plain text):</label> |
| <textarea id="body" name="body" rows="10" cols="50"></textarea> |
| </div> |
| |
| <div id="inboundmail-submit"> |
| <input type="submit" value="Send Email"> |
| </div> |
| |
| </form> |
| </div> |
| |
| {% endblock %} |
| |
| {% block final %} |
| {% endblock %} |