Javascript 发送文档nodeEmailer和chatbot

Javascript 发送文档nodeEmailer和chatbot,javascript,node.js,chatbot,nodemailer,Javascript,Node.js,Chatbot,Nodemailer,我想发送通过聊天机器人接收的文档,但发送时,文档已损坏,无法打开 client.on('message', async message => { if(message.hasMedia) { let attachmentData = await message.downloadMedia(); var extension = ""; if (attachmentData.mimetype == "ima

我想发送通过聊天机器人接收的文档,但发送时,文档已损坏,无法打开

client.on('message', async message => {
    if(message.hasMedia) {
        let attachmentData = await message.downloadMedia();

        var extension = "";
        if (attachmentData.mimetype == "image/jpeg") 
            extension = "jpg";
        else if (attachmentData.mimetype == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
            extension = "xlsx";
        if (extension == "")
            return;
        
        var base64Data = attachmentData.data.replace(/^data:image\/png;base64,/, "");
    
        var transporter = nodemailer.createTransport({
            service: 'gmail',
            auth: {
              user: '<>',
              pass: '<>'
            }
        });

        var mailOptions = {
            from: '<>',                                   
            to: '<>',                                 
            subject: 'Chatbot',                                                 
            text: 'Documento enviado:',                                                                                               
            attachments: [
                {
                    filename: 'document'+'.'+extension,
                    contentType: base64Data
                }
            ]
        };

        transporter.sendMail(mailOptions, function(error, info){
            if (error) {
              console.log(error);
            } else {
              console.log('Email enviado: ' + info.response);
            }
        });
    }
})
client.on('message',异步消息=>{
if(message.hasMedia){
让attachmentData=wait message.downloadMedia();
var扩展=”;
如果(attachmentData.mimetype==“图像/jpeg”)
extension=“jpg”;
else if(attachmentData.mimetype==“application/vnd.openxmlformats of icedocument.spreadsheetml.sheet”)
extension=“xlsx”;
如果(扩展名==“”)
返回;
var base64Data=attachmentData.data.replace(/^data:image\/png;base64,/,“”);
var transporter=nodeEmailer.createTransport({
服务:“gmail”,
认证:{
用户:“”,
通行证:“”
}
});
var mailpoptions={
从:“”,
至:'',
主题:“聊天机器人”,
文本:“Documento enviado:”,
附件:[
{
文件名:“文档”+“.+扩展名,
contentType:base64Data
}
]
};
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
console.log(错误);
}否则{
console.log('Email enviado:'+info.response);
}
});
}
})
我使用了聊天机器人检测到文件时生成的错误值这就是解决方案

var mailOptions = {
        from: '<>',                                   
        to: '<>',                                 
        subject: '<>',                                                 
        text: 'Documento enviado',                                                                                               
        attachments: [
            {
                filename: 'Documento'+'.'+extension,
                contentType: attachmentData.mimetype,
                encoding: 'base64',
                content: base64Data 
            }
        ]
    };
var mailpoptions={
从:“”,
至:'',
主题:'',
文本:“Documento enviado”,
附件:[
{
文件名:“Documento”+“.+扩展名,
contentType:attachmentData.mimetype,
编码:“base64”,
内容:base64Data
}
]
};

您应该创建NodeEmailer传输全局,而不是针对任何消息事件