formplug-serverless

Form forwarding service for AWS Lambda

  • 所有者: danielireson/formplug
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Formplug

Build Status
Dependencies

Formplug is a form forwarding service for AWS Lambda, use it to accept form submissions by email without server-side code. It's built using the Serverless Framework and uses Amazon SES to send emails.

Usage

Basic

Set the form action to your Formplug endpoint to have form submissions forwarded on by email. Email addresses can be passed in plain text (as in the example below) or encrypted as a hexedecimal string (see next section).

<form action="https://apigatewayurl.com" method="post">
    <input type="hidden" name="_to" value="johndoe@example.com">
    <input type="text" name="message">
    <input type="submit" value="send">
</form>

AJAX

Append format=json to the query string of the endpoint to get responses back in JSON with a CORS allow all origin header. You should do this if you plan on working with the API using JavaScript.

<form action="https://apigatewayurl.com?format=json" method="post">
    <input type="hidden" name="_to" value="johndoe@example.com">
    <input type="text" name="message">
    <input type="submit" value="send">
</form>

Special inputs

Name, Description, Multiple emails, Required
---, ---, ---, ---
_to, Email address of the primary recipient., N, Y
_cc, Email addresses to receive a carbon copy., Y, N
_bcc, Email addresses to receive a blind carbon copy., Y, N
_replyTo, Email addresses to set as reply to addresses., Y, N
_honeypot, A spam prevention field that should be hidden for regular website users. The submission will be ignored if the the _honeypot input is present and not empty., /, N
_redirect, A URL to redirect users to after a successful form submission., /, N

Dynamically changing recipients

Use a select if you want to change where the email goes based on a user choice.

<select name="_to">
  <option value="johndoe@example.com">Recipient option 1</option>
  <option value="janedoe@exmaple.com">Recipient option 2</option>
</select>

Accepting multiple email addresses

Separate multiple email addresses by a semicolon.

<!-- plain text emails -->
<input type="hidden" name="_cc" value="johndoe@example.com;janedoe@exmaple.com"

<!-- encrypted emails -->
<input type="hidden" name="_cc" value="ff19d0abcd474813ad;c031a9b24855090b5e8b">

Using the honeypot

When using the honeypot field you should use CSS to hide the input and keep the type as text.

<input type="text" name="_honeypot" value="" style="display:none">

Customising messages

Users will be shown a generic form submission success message if a redirect URL isn't provided. This message can be customised through adding a MSG_RECEIVE_SUCCESS entry to config.json. Similarly, the subject line for emails can be customised through MSG_SUBJECT in config.json.

Submission preview

Encryption

Email addresses can be encrypted so that they're not visible in the HTML source. Ensure ENCRYPTION_KEY in config.json is set to a unique random value as this is used to determine the encrypted values.

Encrypting an email address

> npm run encrypt johndoe@example.com
johndoe@example.com => ff17d6a0cd474813adc031a9b24855090b5e8b

Decrypting an email address

> npm run decrypt ff17d6a0cd474813adc031a9b24855090b5e8b
ff17d6a0cd474813adc031a9b24855090b5e8b => johndoe@example.com

Setup

Install Serverless

Follow the instructions on the Serverless website to install the Serverless Framework and setup your AWS credentials.

Setup SES identity

Amazon SES can only send emails from addresses that you have verified ownership of. Verification can be done using the AWS Management Console by visiting the SES Dashboard and heading to Identity Management. AWS also puts new SES accounts under limits which prevent emails from being sent to email addresses that haven't been verified. Check out the relevant AWS SES documentation for more information. The limits can be lifted by opening a support ticket as outlined in the docs, but this takes a few hours to approve.

Install dependencies

Run npm install to get the NPM dependencies.

Add config

Create a copy of config.sample.json as config.json and then customise as appropriate for your setup.

Name, Description, Required
---, ---, ---
SERVICE_NAME, The private name for the service., Y
ENCRYPTION_KEY, A random string used for encryption., Y
REGION, The AWS region to deploy to (this should be either eu-west-1, us-east-1, or us-west-2 as these are the only SES supported regions)., Y
STAGE, The AWS stage to deploy to (it's common to use dev or prod)., Y
SENDER_ARN, The ARN of the sender email address., Y
MSG_RECEIVE_SUCCESS, This is returned to the user on a successful form submission if a redirect URL isn't provided., N
MSG_SUBJECT, The subject line to use in emails., N

Deploy

Run serverless deploy to deploy to AWS.

主要指標

概覽
名稱與所有者danielireson/formplug
主編程語言JavaScript
編程語言JavaScript (語言數: 2)
平台
許可證MIT License
所有者活动
創建於2016-11-28 01:02:21
推送於2022-06-25 23:40:12
最后一次提交2021-06-28 16:15:53
發布數7
最新版本名稱v2.0.0 (發布於 )
第一版名稱1.0.0 (發布於 2019-09-23 22:32:52)
用户参与
星數248
關注者數6
派生數29
提交數442
已啟用問題?
問題數20
打開的問題數5
拉請求數9
打開的拉請求數2
關閉的拉請求數8
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?