lixiuxiu 发表于 2021-11-17 14:38

eggjs 利用qq邮箱发送邮件服务


经常忘事,做了个代办事项提醒,使用eggjs作为后台服务,nodejs利用QQ邮箱发邮件来进行消息接收。

1.在eggjs项目service下新建一个文件,使用npm安装 nodemailer;
user_email是发送账号,auth_code是授权码;
```

'use strict';

const Service = require('egg').Service;

const nodemailer = require('nodemailer');
const user_email = 'xxx@qq.com';
const auth_code = 'xxxxx';

const transporter = nodemailer.createTransport({
    service: 'qq',
    secureConnection: true,
    port: 465,
    auth: {
      user: user_email, // 账号
      pass: auth_code, // 授权码

    },
});

class EmallService extends Service {

    async sendMail(email, subject, text, html) {

      const mailOptions = {
            from: user_email, // 发送者,与上面的user一致
            to: email,   // 接收者账号,可以同时发送多个,以逗号隔开
            subject,   // 标题
            text,   // 文本
            html,
      };

      try {
            await transporter.sendMail(mailOptions);
            return true;
      } catch (err) {
            return false;
      }
    }

}

module.exports = EmallService;
```

2.在Controller中引用就行
```
class emallController extends Controller {

    async emall() {
      const email = 'xxxx@qq.com';// 接收者的邮箱
      const subject = 'xxx生日提醒';
        const text = '文本';
      const html = '<h2>测试一下::</h2><a class="elem-a" ><span class="content-elem-span">测试链接</span></a>';
       
       //在此处调用。适当的改一下service路径
         const has_send = await this.service.admin.emall.sendMail(email, subject, text, html);
      
         if (has_send) {
             await this.ctx.returnBody(has_send, 200, '发送成功');

             return;
         }
         await this.ctx.returnBody(has_send, 400, '发送失败');
    }
}
```

ysc4798 发表于 2021-11-17 16:44

本帖最后由 ysc4798 于 2021-11-17 16:47 编辑

孙云 发表于 2021-11-17 15:26
大佬搞个python的呗


import yagmail

def email_send():
    yag = yagmail.SMTP(user='xxxxxxx', password='xxxxxxx', host='smtp.163.com', port=465)   #user:账号   password:授权码
    contents = 'xxxxxxx' #内容
    subject = 'xxxxxx' #主题
    try:
      yag.send(to=['xxxxxxxxx@xxxx','xxxxxxxx@xxxx'], subject=subject, contents=contents)   #可以同时发送给多人
      print('邮件已发送请查收...')
    except:
      print("邮件发送失败!!!")
email_send()
我自己写的一个python的,qq邮箱和163邮箱都能用

孙云 发表于 2021-11-17 15:26

孙云 发表于 2021-11-17 19:01

changshi 发表于 2022-3-20 20:26

我是小白,有没有已经编译好的,可以直接用?

lixiuxiu 发表于 2022-3-21 10:24

changshi 发表于 2022-3-20 20:26
我是小白,有没有已经编译好的,可以直接用?

这个按说明直接拿去用,下载node,egg就行
页: [1]
查看完整版本: eggjs 利用qq邮箱发送邮件服务