当前位置: 首页 > 知识库问答 >
问题:

如何创建使用node和mongodb发送邮件的api

郭弘方
2023-03-14

我正在尝试创建一个发送邮件的应用程序。它获取用户输入(To、Subject、Message),单击表单按钮发送邮件,并将该邮件存储在mongodb上

前端

<form>
<span>
to :<input type='text' >
</span>

cc :<input type='text' >
</span>

bcc :<input type='text' >
</span>

<span>
subject :<input type='text' >
</span>

<span>
message :<input type='text' >
</span>
</form>

后端

to = 'sender@gmail.com',
cc = 'sender@gmail.com',
bcc = 'sender@gmail.com',
subject = 'A project proposal',
message = 'the body of your mail',
etc...

>

  • 架构

    常量mongoose=require(“mongoose”);

    const UserSchema=new mongoose.schema({

    收件人:{type:String,},抄送:{type:String,},密件抄送:{type:String,},密件抄送:{type:String,},主题:{type:String,},邮件:{type:String,},附件:{type:String,},日期:{type:Date,Default:Date.Now},

    });

    常量Mail=mongoose.model(“Mail”,UserSchema);

    module.exports=邮件;

    A.P.I

    const Mail = require('../models/Mail');
    
    // Home Page
    router.get('/', forwardAuthenticated, (req, res) => res.render('home'));
    
    // Mail
    router.get('/mail', ensureAuthenticated, (req, res) =>
      res.render('mail', {
        user: req.user,
        mail: req.mail
    
      })
    );
    
    router.post('/mail', (req, res) => {
      const { to, cc, bcc, subject, message, attachment, account } = req.body;
      let errors = [];
    
      if (!name || !subject || !message || !account) {
        errors.push({ msg: 'Please enter all fields' });
      }
    
      if (errors.length > 0) {
        res.render('register', {
          errors,
          name,
          subject,
          message,
          account
        });
      } else {
        const newMail = new Mail({
          to,
          cc,
          bcc,
          subject,
          message,
          attachment,
          account
        });
    
        newMail
          .save()
          .then(mail => {
            req.flash(
              'success_msg',
              'mail sent'
            );
    
          })
          .catch(err => console.log(err));
    
      }
    })
    module.exports = router;
    

    我在这里怎么做?

  • 共有2个答案

    黄意智
    2023-03-14

    我使用的是'nodeMailer'模块,你可以只阅读他们的文档,但我给你展示了一个简单的例子:

    var nodemailer = require ('nodemailer');
    process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
    var transporter = nodemailer.createTransport ({ 
        service: 'gmail', 
        auth: { 
                user: 'youre@gmail.com', 
                pass: 'yourePassword' 
            } 
        });
    
     module.exports={
         sendAUTH:function(link, email){
            const mailOptions = { 
                from: 'youre@gmail.com',  
                to: email,  
                subject: 'Subject of your email', 
                html: `<a href='`+link+`'>link</a>` 
              };
              transporter.sendMail (mailOptions, function (err, info) { 
                if (err) 
                  console.log (err) 
                else 
                  console.log (info); 
             });
         }
     }
    
    卢杰
    2023-03-14

    尝试express-mailer发送电子邮件。在这种情况下,您还可以通过逗号分隔的列表或数组以抄送和密件抄送方式发送电子邮件。请仔细检查特快专递文件。

    var app = require('express')(),
    var mailer = require('express-mailer')
    
    mailer.extend(app, {
        emailFrom: "yourEmail@gmail.com", 
        host: 'smtp.gmail.com', // hostname
        secureConnection: true, // use SSL
        port: 465, // port for secure SMTP
        transportMethod: 'SMTP', // default is SMTP.
        auth: {
            user: 'yourEmail@gmail.com', // Your Email 
            pass: '*******' // Your Password
        }
    });
    
    app.mailer.send('../views/emailTemplate/emailTemplate.ejs', { to: 'reciverEmail@gmail.com', subject: 'Your Email Subject'}, function (err, message) {
        if (err) throw new Error(err);
        console.log(message);
        return;
    });
    
     类似资料:
    • 当你有一个不成熟的 Idea 时,作为一个受精益思想影响的开发者,那么你可能会学习 Dropbox 创建一个 Landing Page 来验证你的想法。如下图所示: Launch Page 这个时候,你只需要大胆地公布出你的 Idea。等待用户的到来、在网页上提交他们的邮箱 blabla。然后在产品准备得差不多的时候,就可以大声地告诉全世界,你们可以来试用了。不过,这只里我们只讨论如何来发送邮件。

    • 大家好,我正在尝试使用JavaMail和Amazon SES发送电子邮件,这是我写的代码, 但我有个例外说, 线程“main”javax中出现异常。邮政SendFailedException:无法发送电子邮件;嵌套的例外是:com。亚马逊。服务。简单邮件。模型MessageRejectedException:未验证电子邮件地址。以下身份未通过US-EAST-1区域的登记 我没有得到任何解决方案,s

    • 在我的表格中有一个上传简历的部分,我使用MailgunAPI发送邮件,我发现使用表格发送附件有问题。 如何在用户提交时发送附加文件以及我的表单的其他详细信息。 请参见我的表单的下图。附件应该是动态的,而不是静态的。

    • 问题内容: 为了测试目的,我需要在数百个电子邮件框中填充各种消息,并打算为此使用smtplib。但是除其他外,我不仅需要能够向特定邮箱发送消息,而且还必须向它们发送CC和BCC消息。看起来smtplib在发送电子邮件时不支持CC- ing和BCC-ing。 寻找有关如何执行CC或BCC从python脚本发送消息的建议。 (而且-不,我不是在创建脚本向测试环境之外的任何人发送垃圾邮件。) 问题答案:

    • 我还尝试了一个包来执行NoAuth邮件,但在这个包中,它会给出端口连接错误(参见给定代码:- 我还将端口更改为8080,做完8080之后,它不会给出任何响应,它只显示请求。

    • 问题 如何用Gmail发送邮件? 解法 安装和维护邮件服务器通常是沉闷乏味的。所以如果你有Gmail帐号,就可以使用Gmail做为SMTP服务器来发送邮件,我们唯一要做的就只是在web.config中指定Gmail的用户名和密码。 web.config.smtp_server = 'smtp.gmail.com' web.config.smtp_port = 587 web.config.smtp