80 lines
1.8 KiB
JavaScript
80 lines
1.8 KiB
JavaScript
module.exports = {
|
|
|
|
|
|
friendlyName: 'Deliver contact form message',
|
|
|
|
|
|
description: 'Deliver a contact form message to the appropriate internal channel(s).',
|
|
|
|
|
|
inputs: {
|
|
|
|
emailAddress: {
|
|
required: true,
|
|
type: 'string',
|
|
description: 'A return email address where we can respond.',
|
|
example: 'hermione@hogwarts.edu'
|
|
},
|
|
|
|
topic: {
|
|
required: true,
|
|
type: 'string',
|
|
description: 'The topic from the contact form.',
|
|
example: 'I want to buy stuff.'
|
|
},
|
|
|
|
fullName: {
|
|
required: true,
|
|
type: 'string',
|
|
description: 'The full name of the human sending this message.',
|
|
example: 'Hermione Granger'
|
|
},
|
|
|
|
message: {
|
|
required: true,
|
|
type: 'string',
|
|
description: 'The custom message, in plain text.'
|
|
}
|
|
|
|
},
|
|
|
|
|
|
exits: {
|
|
|
|
success: {
|
|
description: 'The message was sent successfully.'
|
|
}
|
|
|
|
},
|
|
|
|
|
|
fn: async function({emailAddress, topic, fullName, message}) {
|
|
|
|
if (!sails.config.custom.internalEmailAddress) {
|
|
throw new Error(
|
|
`Cannot deliver incoming message from contact form because there is no internal
|
|
email address (\`sails.config.custom.internalEmailAddress\`) configured for this
|
|
app. To enable contact form emails, you'll need to add this missing setting to
|
|
your custom config -- usually in \`config/custom.js\`, \`config/staging.js\`,
|
|
\`config/production.js\`, or via system environment variables.`
|
|
);
|
|
}
|
|
|
|
await sails.helpers.sendTemplateEmail.with({
|
|
to: sails.config.custom.internalEmailAddress,
|
|
subject: 'New contact form message',
|
|
template: 'internal/email-contact-form',
|
|
layout: false,
|
|
templateData: {
|
|
contactName: fullName,
|
|
contactEmail: emailAddress,
|
|
topic,
|
|
message,
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
|
|
};
|