aws-receive-email

Helps you to retrieve emails from S3 bucket

Usage no npm install needed!

<script type="module">
  import awsReceiveEmail from 'https://cdn.skypack.dev/aws-receive-email';
</script>

README

AWS EMAIL RECEIVER

In order to receive emails, you should follow the instruction below

Installation

npm install aws-receive-email

Usage

const AWSEmailReceiver = require('email-receive');

AWSEmailReceiver.init(app,{"bucket":"","accessKeyId":"","secretAccessKey":""});
AWSEmailReceiver.emailReceived.subscribe(data=>{
    // console.log(data);
    AWSEmailReceiver.readEmail(data.to,data.mailId)
    .then(email => {
        console.log(email);
    })
    .catch(err => {
        console.log(err);
    });
});

DELETING EMAIL

AWSEmailReceiver.deleteEmail(data.to,data.mailId)
    .then(email => {
        console.log(email);
    })
    .catch(err => {
        console.log(err);
    });

EMAIL DATA

mail object

Parsed mail* object has the following properties

  • headers – a Map object with lowercase header keys
  • subject is the subject line (also available from the header mail.headers.get(‘subject’))
  • from is an address object for the From: header
  • to is an address object for the To: header
  • cc is an address object for the Cc: header
  • bcc is an address object for the Bcc: header (usually not present)
  • date is a Date object for the Date: header
  • messageId is the Message-ID value string
  • inReplyTo is the In-Reply-To value string
  • reply-to is an address object for the Cc: header
  • references is an array of referenced Message-ID values
  • html is the HTML body of the message. If the message included embedded images as cid: urls then these are all replaced with base64 formatted data: URIs
  • text is the plaintext body of the message
  • textAsHtml is the plaintext body of the message formatted as HTML
  • attachments is an array of attachments

address object

Address objects have the following structure:

  • value an array with address details

    • name is the name part of the email/group
    • address is the email address
    • group is an array of grouped addresses
  • text is a formatted address string for plaintext context

html is a formatted address string for HTML context

AWS SETUP

  • Login AWS console
  • Open SES
  • Click on "Rule Sets" below the "Email Receiving" section on the left menu
  • Enter the rule set name
  • Select the created rule set
  • Click on "Create Rule" button on the opened window
  • Enter the recipient email
  • Once entered it will ask you to confirm domain by entering confirmation DNS record and MX record pointing to the amazon
  • Once confirmation and MX record is completed you will see a verified sign beside the entered email
  • Click on "Next" button bottom right-hand side of the screen to continue setting up the action
  • From the dropdown of "Add action" select the "S3"
  • Once you select "S3" it will show you different fields to fill
  • Create a unique bucket name
  • Enter a prefix (I use the same as email generally)
  • Select and SNS (if don't have any follow below to create one)
    • Find SNS service section
    • Click on "Topics" from the left menu then click on the "Create Topic" button
    • Give your topic a proper name and display name
    • After the topic created select your topic and click on the "Create Subscription" button from the opened window
    • On this screen select HTTP or HTTPS from the protocol
    • Enter the main domain you are going to run the "aws-receive-email" module and add the "/aws-email-receiver" router to the URL it should look something like this (http://example.com/aws-email-receiver**)
    • Once you click on "Create subscription" it will send a post request to that URL, if the app was already running with the module, it should verify subscription right away, otherwise; once you placed the app on the correct URL, you can select the subscription and click on "Request Confirmation" to trigger submission of SubscriptionConfirmation notification
  • Once all setup completed on SES and SNS you can send a test email to receive a detail of email on your application and emails are stored on s3, there is also a function to delete the email as well.