sendgrid-mail
Version:
The easiest way to send mail with sendgrid.
42 lines (32 loc) • 1.03 kB
JavaScript
const debug = require('debug')('sendgrid-mail:util')
const _ = require('lodash')
const parseList = commaSeparatedList => {
const trim = s => s.trim()
const nonEmpty = val => !_.isEmpty(val)
return (commaSeparatedList || '').split(',').map(trim).filter(nonEmpty).map(parseEmail)
}
// supported formats are 'user@domain.tld' and 'Name <user@domain.tld>'
const parseEmail = emailAddress => {
if (!emailAddress || emailAddress.length < 1) {
debug(`${emailAddress} --> null`)
return null
}
const emailRegExp = /(?:"?([^"]*)"?\s)?(?:<?(.+@[^>]+)>?)/
const matchData = emailAddress.match(emailRegExp)
if (!matchData) {
debug(`${emailAddress} --> null`)
return null
}
const retVal = { email: matchData[2] }
if (matchData[1]) {
retVal.name = matchData[1]
}
debug(`${emailAddress} --> ${inspect(retVal)}`)
return retVal
}
const inspect = obj => require('util').inspect(obj, { depth: null })
module.exports = {
parseList: parseList,
parseEmail: parseEmail,
inspect: inspect
}