要实现在表单中有多个附件,并发送给不同指定人员,可以使用以下步骤:
- 创建一个表单,包含多个附件字段。例如,使用HTML和JavaScript创建一个简单的表单,如下所示:
<form id="myForm">
<input type="file" name="attachment1" multiple>
<input type="file" name="attachment2" multiple>
<input type="submit" value="提交">
</form>
- 为表单添加一个事件监听器,以便在用户提交表单时触发。例如,使用JavaScript添加以下代码:
document.getElementById('myForm').addEventListener('submit', function(event) {
event.preventDefault(); // 阻止表单的默认提交行为
sendAttachments(); // 调用发送附件的函数
});
- 编写一个函数来处理附件的发送。这个函数应该接收一个包含附件信息的数组作为参数。例如,使用JavaScript编写以下代码:
function sendAttachments() {
const formData = new FormData(document.getElementById('myForm'));
const attachments = Array.from(formData.entries())
.filter(([key, value]) => key.startsWith('attachment'))
.map(([key, value]) => ({
name: key, file: value }));
const recipients = getRecipients(); // 获取收件人列表的函数
attachments.forEach((attachment) => {
recipients.forEach((recipient) => {
sendAttachmentToRecipient(attachment, recipient); // 发送附件给指定收件人的函数
});
});
}
- 编写一个函数来获取收件人列表。这个函数可以根据需要从数据库或其他数据源中获取收件人信息。例如,使用JavaScript编写以下代码:
function getRecipients() {
// 在这里实现获取收件人列表的逻辑,例如从数据库查询或API调用
// 返回一个包含收件人信息的数组,每个元素是一个对象,包含收件人的姓名和电子邮件地址等属性
}
- 编写一个函数来发送单个附件给指定的收件人。这个函数可以使用邮件服务(如SendGrid、Mailgun等)或第三方库(如Nodemailer)来实现。例如,使用Nodemailer编写以下代码:
const nodemailer = require('nodemailer');
async function sendAttachmentToRecipient(attachment, recipient) {
const transporter = nodemailer.createTransport({
service: 'gmail', // 使用Gmail服务,也可以选择其他邮件服务提供商
auth: {
user: 'your-email@example.com', // 你的邮箱地址
pass: 'your-email-password', // 你的邮箱密码
},
});
const mailOptions = {
from: 'your-email@example.com', // 发件人地址
to: recipient.email, // 收件人地址
subject: '带有附件的邮件', // 邮件主题
text: '这是一封带有附件的邮件。', // 邮件正文
attachments: [
{
filename: attachment.name, // 附件文件名
content: attachment.file, // 附件内容
},
],
};
try {
await transporter.sendMail(mailOptions);
console.log(`已发送附件 ${
attachment.name} 给 ${
recipient.email}`);
} catch (error) {
console.error(`发送附件 ${
attachment.name} 给 ${
recipient.email} 失败:`, error);
}
}
通过以上步骤,您可以实现在表单中有多个附件,并发送给不同指定人员的功能。请注意,您需要根据实际情况修改代码中的邮箱地址、密码等信息。