@pubsweet/component-email-templating

0.3.18 • Public • Published

Email Templating

About

The email-templating component contains an EmailTemplate class with one main instance method sendEmail for sending the email using the send-email component from PubSweet.

  1. sendEmail():
    • uses the send-email component from PubSweet to actually send the email based on the Email properties passed in the constructor

The Email class also provides a constructor whose properties will be used when sending the email:

  1. type: a String that can be either user or system which can be used in the unsubscribe process
  2. fromEmail: a String indicating the from name and from email address: Coko <team@coko.foundation>
  3. toUser: an Object with two properties: email and name. The name property will be used when addressing the recipient in the email content - for example: "Dear Dr. Rachel Smith".
  4. cc: can be either a string containing an email address, or an array of string with email addresses
  5. bcc: can be either a string containing an email address, or an array of string with email addresses
  6. content: an Object which contains properties about the email:
    • subject
    • paragraph: the main text part of the email body which informs the recipient
    • signatureName - the name which will appear in the signature
    • ctaLink - the URL which will be placed in the button
    • ctaText - the text which appears on the button
    • unsubscribeLink
    • signatureJournal - the journal or company name which will appear in the signature
  7. bodyProps:
    • hasLink: a boolean which indicates if the email body contains a CTA (big button) or not
    • hasIntro: a boolean which indicates if the email body contains the "Dear Dr. John" introduction or not.
    • hasSignature: a boolean which indicates if the email body contains a typical "Kind regards," signature or not

Usage

  1. Config

    In order to use this component, you need the to add the following data in your main config file:

      journal: {
        name: 'Coko Foundation',
        staffEmail: 'Coko <team@coko.foundation>',
        logo: 'https://coko.foundation/wp-content/uploads/2017/11/logo-coko.png',
        ctaColor: '#EE2B77', // the color of the email button
        logoLink: 'https://coko.foundation/',
        publisher: 'Coko Foundation', // this will appear in the email footer
        privacy: '', // a text containing information about the privacy policy that will appear in the email footer
        address: '2973 16th St., Suite 300, San Francisco, CA 94103', // the address in the footer
        footerText: 'You have received this email in regards to the account creation, submission, or peer review process of a paper submitted to a journal published by Coko Foundation.'
      },
  2. Dependencies

  3. Notifications

    These are the most basic emails, which contain at least a piece of text, called a paragraph, and may or may not contain an intro, an action button and a signature.

    notification

    const EmailTemplate = require('@pubsweet/component-email-template')
    const config = require('config')
    
    const { name: journalName, fromEmail: staffEmail } = config.get('journal')
    
    const paragraph = `We are please to inform you that the manuscript has passed the technical check process and is now submitted. Please click the link below to access the manuscript.`
    
    const sendNotifications = ({ user, editor, collection, fragment }) => {
      const email = new EmailTemplate({
        type: 'user',
        fromEmail,
        toUser: {
          email: user.email,
          name: `${user.lastName}`,
        },
        content: {
          ctaText: 'MANUSCRIPT DETAILS',
          signatureJournal: journalName,
          signatureName: `${editor.name}`,
          subject: `${collection.customId}: Manuscript Update`,
          paragraph,
          unsubscribeLink: `http://localhost:3000/unsubscribe/${user.id}`,
          ctaLink: `http://localhost:3000/projects/${collection.id}/versions/${fragment.id}/details`,
        },
        bodyProps: {
          hasLink: true,
          hasIntro: true,
          hasSignature: true,
        },
      })
    
      return email.sendEmail()
    }
  4. Reviewer Invitation This email template is specific to Hindawi and it requires some data that might not be available in other PubSweet apps.

    invitation

Readme

Keywords

none

Package Sidebar

Install

npm i @pubsweet/component-email-templating

Weekly Downloads

53

Version

0.3.18

License

MIT

Unpacked Size

49.4 kB

Total Files

20

Last publish

Collaborators

  • jure
  • shockandaudrey
  • diversemix
  • andrei.c9
  • yannisbarlas