如何发送仅包含值的对象键值对?
How to send object key value pairs that contain values only?
我正在创建一个在线工作申请,提交后会通过 nodemailer 和 mailgun 向招聘经理发送一封电子邮件。该应用程序相当长,并非所有字段都是必需的。目前,我已将其设置为通过电子邮件将所有键值对发送给招聘经理,但如果该字段留空,我宁愿将该键值对留在电子邮件中。我怎样才能做到这一点?
这是我的 nodemailer 代码:
const nodemailer = require('nodemailer');
const mailgun = require('nodemailer-mailgun-transport');
const debug = require('debug')('app:mail');
const auth = {
auth: {
api_key: '**************************************',
domain: '*************************.mailgun.org'
}
};
const transporter = nodemailer.createTransport(mailgun(auth));
function sendAppliedEmail(applicant) {
let html = '<div style="background: url(****************************************) center center/cover no-repeat; background-size: auto;">'
html += '<img src="**************************" alt="logo" style="margin: 0 auto;">';
html += '<h2 style="color: #f49842; text-align: center">New Applicant</h2>'
html += '<ul>';
Object.entries(applicant).forEach(([key, value]) => {
html += `<li>${key.replace(/([a-z])([A-Z])/g, ` `).toUpperCase().fontcolor('green')}: ${value}</li>`;
});
html += '</ul></div>';
const mailOptions = {
from: 'info@example.com',
to: 'sample@example.com, sampleme@example.com, sampletwo@example.com',
subject: 'New Applicant to Tropical Sno',
html
};
transporter.sendMail(mailOptions, (err, info) => {
if (err) {
debug(`Error: ${err}`);
} else {
debug(`Info: ${info}`);
}
});
}
module.exports = sendAppliedEmail;
您可以使用条件 (if
)
Object.entries(applicant).forEach(([key, value]) => {
if(value) {
html += `<li>${key.replace(/([a-z])([A-Z])/g, ` `).toUpperCase().fontcolor('green')}: ${value}</li>`;
}
});
您可以使用 Array.Prototype.Filter
获取所有值不为空或未定义的对,然后在该过滤数组上创建 html。
Object.entries(applicant).filter(([key,value])=>value).forEach(([key, value]) => {
html += `<li>${key.replace(/([a-z])([A-Z])/g, ` `).toUpperCase().fontcolor('green')}: ${value}</li>`;
});
我正在创建一个在线工作申请,提交后会通过 nodemailer 和 mailgun 向招聘经理发送一封电子邮件。该应用程序相当长,并非所有字段都是必需的。目前,我已将其设置为通过电子邮件将所有键值对发送给招聘经理,但如果该字段留空,我宁愿将该键值对留在电子邮件中。我怎样才能做到这一点?
这是我的 nodemailer 代码:
const nodemailer = require('nodemailer');
const mailgun = require('nodemailer-mailgun-transport');
const debug = require('debug')('app:mail');
const auth = {
auth: {
api_key: '**************************************',
domain: '*************************.mailgun.org'
}
};
const transporter = nodemailer.createTransport(mailgun(auth));
function sendAppliedEmail(applicant) {
let html = '<div style="background: url(****************************************) center center/cover no-repeat; background-size: auto;">'
html += '<img src="**************************" alt="logo" style="margin: 0 auto;">';
html += '<h2 style="color: #f49842; text-align: center">New Applicant</h2>'
html += '<ul>';
Object.entries(applicant).forEach(([key, value]) => {
html += `<li>${key.replace(/([a-z])([A-Z])/g, ` `).toUpperCase().fontcolor('green')}: ${value}</li>`;
});
html += '</ul></div>';
const mailOptions = {
from: 'info@example.com',
to: 'sample@example.com, sampleme@example.com, sampletwo@example.com',
subject: 'New Applicant to Tropical Sno',
html
};
transporter.sendMail(mailOptions, (err, info) => {
if (err) {
debug(`Error: ${err}`);
} else {
debug(`Info: ${info}`);
}
});
}
module.exports = sendAppliedEmail;
您可以使用条件 (if
)
Object.entries(applicant).forEach(([key, value]) => {
if(value) {
html += `<li>${key.replace(/([a-z])([A-Z])/g, ` `).toUpperCase().fontcolor('green')}: ${value}</li>`;
}
});
您可以使用 Array.Prototype.Filter
获取所有值不为空或未定义的对,然后在该过滤数组上创建 html。
Object.entries(applicant).filter(([key,value])=>value).forEach(([key, value]) => {
html += `<li>${key.replace(/([a-z])([A-Z])/g, ` `).toUpperCase().fontcolor('green')}: ${value}</li>`;
});