Email Templating
About
The email-templating
component contains an Email
class with two main instance methods: getNotificationBody
for retrieving the email body (html and text) and sendEmail
for sending the email using the send-email
component from PubSweet.
-
getNotificationBody({ emailBodyProps = {} )
accepts one parameter object with should contain the following properties:-
paragraph
: the main text part of the email body which informs the recipient -
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 This function returns the HTML and text parts of the email which can then be used to send it.
-
-
sendEmail({ text, html })
:- accepts the text and HTML parts of an email and then uses the
send-email
component from PubSweet to actually send the email.
- accepts the text and HTML parts of an email and then uses the
The Email
class also provides a constructor
whose properties will be used when sending the email:
-
type
: a String that can be eitheruser
orsystem
which can be used in the unsubscribe process -
fromEmail
: a String indicating the from name and from email address:Coko <team@coko.foundation>
-
toUser
: an Object with two properties:email
andname
. Thename
property will be used when addressing the recipient in the email content - for example: "Dear Dr. Rachel Smith". -
content
: an Object which contains properties about the email:subject
-
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
Usage
-
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 },
-
Dependencies
-
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.
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() }
-
Reviewer Invitation This email template is specific to Hindawi and it requires some data that might not be available in other PubSweet apps.