@builder6/email 0.11.11 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,10 +12,18 @@ B6_EMAIL_PASSWORD=xxxxx
12
12
  B6_EMAIL_SECURE=false
13
13
  B6_EMAIL_DEBUG=true
14
14
  B6_EMAIL_LOGGER=true
15
+ B6_EMAIL_ENABLED=true
15
16
  ```
16
17
 
17
18
  ## 配置定时发送
18
19
 
19
- ```
20
- STEEDOS_CRON_MAILQUEUE_INTERVAL=3000 # 邮件定时器,单位:毫秒
20
+ B6_EMAIL_ENABLED 时会启动定时发送任务,从 _mail_queue 集合中读取邮件发送任务,发送成功后删除任务。
21
+
22
+ 以下环境变量非必须配置。
23
+
24
+ ```shell
25
+ STEEDOS_EMAIL_QUEUE_INTERVAL=3000 # 邮件定时器,单位:毫秒, 默认值:3000
26
+ STEEDOS_EMAIL_QUEUE_BATCH_SIZE=1 # 邮件队列批量发送数量,默认值:1
27
+ STEEDOS_EMAIL_QUEUE_TIMEOUT=60000 # 邮件队列超时时间,单位:毫秒,默认值:60000
28
+ STEEDOS_EMAIL_QUEUE_KEEPS=false # 邮件发送之后是否保留邮件队列,默认值:false
21
29
  ```
@@ -12,6 +12,16 @@ export declare class EmailController {
12
12
  };
13
13
  message?: undefined;
14
14
  }>;
15
+ sendMailToUsers(spaceId: string, fromUserId: string, toUserIds: string[], ccUserIds: string[], bccUserIds: string[], replyToUserId: string, subject: string, text: string, html: string, headers: object, attachments: object[], mailComposer: object): Promise<{
16
+ message: string;
17
+ error?: undefined;
18
+ } | {
19
+ error: {
20
+ code: number;
21
+ message: any;
22
+ };
23
+ message?: undefined;
24
+ }>;
15
25
  updateConfig(config: object): Promise<{
16
26
  message: string;
17
27
  error?: undefined;
@@ -36,6 +36,34 @@ let EmailController = class EmailController {
36
36
  };
37
37
  }
38
38
  }
39
+ async sendMailToUsers(spaceId, fromUserId, toUserIds, ccUserIds, bccUserIds, replyToUserId, subject, text, html, headers, attachments, mailComposer) {
40
+ try {
41
+ await this.emailService.sendMailToUsers({
42
+ spaceId,
43
+ fromUserId,
44
+ toUserIds,
45
+ ccUserIds,
46
+ bccUserIds,
47
+ replyToUserId,
48
+ subject,
49
+ text,
50
+ html,
51
+ headers,
52
+ attachments,
53
+ mailComposer
54
+ });
55
+ return { message: '给多人发送邮件发送成功' };
56
+ }
57
+ catch (error) {
58
+ console.error('Query error', error);
59
+ return {
60
+ error: {
61
+ code: 500,
62
+ message: error.message,
63
+ },
64
+ };
65
+ }
66
+ }
39
67
  async updateConfig(config) {
40
68
  try {
41
69
  await this.emailService.updateConfig(config);
@@ -101,6 +129,106 @@ __decorate([
101
129
  __metadata("design:paramtypes", [String, String, String, String, String]),
102
130
  __metadata("design:returntype", Promise)
103
131
  ], EmailController.prototype, "sendEmail", null);
132
+ __decorate([
133
+ (0, common_1.Post)('sendMailToUsers'),
134
+ (0, swagger_1.ApiOperation)({
135
+ summary: '给多人发送邮件',
136
+ description: '通过提供收件人id列表、主题和邮件内容发送邮件',
137
+ }),
138
+ (0, swagger_1.ApiBody)({
139
+ description: '发送邮件所需的参数',
140
+ schema: {
141
+ type: 'object',
142
+ properties: {
143
+ spaceId: {
144
+ type: 'string',
145
+ example: '67505d7484ff2b0b4fc245bb',
146
+ description: 'space id',
147
+ },
148
+ fromUserId: {
149
+ type: 'string',
150
+ example: '67505d5f84ff2b0b4fc245b9',
151
+ description: '发送人的用户id',
152
+ },
153
+ toUserIds: {
154
+ type: 'array',
155
+ items: {
156
+ type: 'string',
157
+ },
158
+ example: ['675b95f987d0d8467f525e91', '6756c5be07e329d0106cdd36'],
159
+ description: '接收邮件的邮箱地址',
160
+ },
161
+ ccUserIds: {
162
+ type: 'array',
163
+ items: {
164
+ type: 'string',
165
+ },
166
+ example: ['675b95f987d0d8467f525e91', '6756c5be07e329d0106cdd36'],
167
+ description: '抄送的用户ids',
168
+ },
169
+ bccUserIds: {
170
+ type: 'array',
171
+ items: {
172
+ type: 'string',
173
+ },
174
+ example: ['675b95f987d0d8467f525e91', '6756c5be07e329d0106cdd36'],
175
+ description: '秘密抄送的用户ids',
176
+ },
177
+ replyToUserId: {
178
+ type: 'string',
179
+ example: '67505d5f84ff2b0b4fc245b9',
180
+ description: '回复某人的邮件id',
181
+ },
182
+ subject: {
183
+ type: 'string',
184
+ example: '邮件标题示例',
185
+ description: '邮件主题',
186
+ },
187
+ text: {
188
+ type: 'string',
189
+ example: '这是一封测试邮件的文本内容',
190
+ description: '邮件的纯文本内容',
191
+ },
192
+ html: {
193
+ type: 'string',
194
+ example: '<h1>这是 HTML 格式的内容</h1>',
195
+ description: '邮件的 HTML 格式内容',
196
+ },
197
+ headers: {
198
+ type: 'object',
199
+ description: '特殊的消息头',
200
+ },
201
+ attachments: {
202
+ type: 'array',
203
+ items: {
204
+ type: 'object'
205
+ },
206
+ description: '附件列表',
207
+ },
208
+ mailComposer: {
209
+ type: 'object',
210
+ description: 'MailComposer对象',
211
+ }
212
+ },
213
+ required: ['spaceId', 'toUserIds', 'subject'],
214
+ },
215
+ }),
216
+ __param(0, (0, common_1.Body)('spaceId')),
217
+ __param(1, (0, common_1.Body)('fromUserId')),
218
+ __param(2, (0, common_1.Body)('toUserIds')),
219
+ __param(3, (0, common_1.Body)('ccUserIds')),
220
+ __param(4, (0, common_1.Body)('bccUserIds')),
221
+ __param(5, (0, common_1.Body)('replyToUserId')),
222
+ __param(6, (0, common_1.Body)('subject')),
223
+ __param(7, (0, common_1.Body)('text')),
224
+ __param(8, (0, common_1.Body)('html')),
225
+ __param(9, (0, common_1.Body)('headers')),
226
+ __param(10, (0, common_1.Body)('attachments')),
227
+ __param(11, (0, common_1.Body)('mailComposer')),
228
+ __metadata("design:type", Function),
229
+ __metadata("design:paramtypes", [String, String, Array, Array, Array, String, String, String, String, Object, Array, Object]),
230
+ __metadata("design:returntype", Promise)
231
+ ], EmailController.prototype, "sendMailToUsers", null);
104
232
  __decorate([
105
233
  (0, common_1.Patch)('config'),
106
234
  (0, swagger_1.ApiOperation)({
@@ -1 +1 @@
1
- {"version":3,"file":"email.controller.js","sourceRoot":"","sources":["../../src/email/email.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.controller.js","sourceRoot":"","sources":["../../src/email/email.controller.ts"],"names":[],"mappings":"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"}
@@ -12,12 +12,13 @@ const core_1 = require("@builder6/core");
12
12
  const email_service_1 = require("./email.service");
13
13
  const email_controller_1 = require("./email.controller");
14
14
  const email_moleculer_1 = require("./email.moleculer");
15
+ const email_schedule_1 = require("./email.schedule");
15
16
  let EmailModule = class EmailModule {
16
17
  };
17
18
  EmailModule = __decorate([
18
19
  (0, common_1.Module)({
19
20
  imports: [core_1.AuthModule, core_1.MongodbModule],
20
- providers: [email_service_1.EmailService, email_moleculer_1.EmailMoleculer],
21
+ providers: [email_service_1.EmailService, email_moleculer_1.EmailMoleculer, email_schedule_1.EmailScheduleService],
21
22
  controllers: [email_controller_1.EmailController],
22
23
  exports: [email_service_1.EmailService],
23
24
  })
@@ -1 +1 @@
1
- {"version":3,"file":"email.module.js","sourceRoot":"","sources":["../../src/email/email.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yCAA2D;AAC3D,mDAA+C;AAC/C,yDAAqD;AACrD,uDAAmD;AAQ5C,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,WAAW;IANvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,iBAAU,EAAE,oBAAa,CAAC;QACpC,SAAS,EAAE,CAAC,4BAAY,EAAE,gCAAc,CAAC;QACzC,WAAW,EAAE,CAAC,kCAAe,CAAC;QAC9B,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAAG;AAAd,kCAAW"}
1
+ {"version":3,"file":"email.module.js","sourceRoot":"","sources":["../../src/email/email.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yCAA2D;AAC3D,mDAA+C;AAC/C,yDAAqD;AACrD,uDAAmD;AACnD,qDAAwD;AAQjD,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,WAAW;IANvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,iBAAU,EAAE,oBAAa,CAAC;QACpC,SAAS,EAAE,CAAC,4BAAY,EAAE,gCAAc,EAAE,qCAAoB,CAAC;QAC/D,WAAW,EAAE,CAAC,kCAAe,CAAC;QAC9B,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAAG;AAAd,kCAAW"}
@@ -16,4 +16,9 @@ export declare class EmailMoleculer extends Service {
16
16
  message: any;
17
17
  };
18
18
  }>;
19
+ sendMailToUsers(ctx: Context): Promise<void | {
20
+ error: {
21
+ message: any;
22
+ };
23
+ }>;
19
24
  }
@@ -17,6 +17,7 @@ const moleculer_1 = require("moleculer");
17
17
  const common_1 = require("@nestjs/common");
18
18
  const moleculer_2 = require("@builder6/moleculer");
19
19
  const email_service_1 = require("./email.service");
20
+ const lodash_1 = require("lodash");
20
21
  let EmailMoleculer = class EmailMoleculer extends moleculer_1.Service {
21
22
  constructor(emailService, broker) {
22
23
  super(broker);
@@ -26,6 +27,7 @@ let EmailMoleculer = class EmailMoleculer extends moleculer_1.Service {
26
27
  settings: {},
27
28
  actions: {
28
29
  send: this.send,
30
+ sendMailToUsers: this.sendMailToUsers,
29
31
  },
30
32
  created: this.serviceCreated,
31
33
  started: this.serviceStarted,
@@ -36,7 +38,8 @@ let EmailMoleculer = class EmailMoleculer extends moleculer_1.Service {
36
38
  async serviceStarted() { }
37
39
  async serviceStopped() { }
38
40
  async send(ctx) {
39
- const { from, to, subject, text, html } = ctx.params;
41
+ let { from, to, toUsers, subject, text, html } = ctx.params;
42
+ to = (0, lodash_1.isArray)(toUsers) && toUsers.length > 0 ? toUsers.join(',') : to;
40
43
  try {
41
44
  const result = await this.emailService.sendMail({
42
45
  from,
@@ -77,6 +80,28 @@ let EmailMoleculer = class EmailMoleculer extends moleculer_1.Service {
77
80
  };
78
81
  }
79
82
  }
83
+ async sendMailToUsers(ctx) {
84
+ const { spaceId, toUserIds, subject } = ctx.params;
85
+ if (!spaceId || !(0, lodash_1.isArray)(toUserIds) || !subject) {
86
+ console.error(`参数错误:spaceId=${spaceId}, toUserIds=${(toUserIds ?? []).join(',')}, subject=${subject?.substring(0, 10)}`);
87
+ return {
88
+ error: {
89
+ message: '参数错误',
90
+ },
91
+ };
92
+ }
93
+ try {
94
+ return this.emailService.sendMailToUsers(ctx.params);
95
+ }
96
+ catch (error) {
97
+ console.error(error);
98
+ return {
99
+ error: {
100
+ message: error.message,
101
+ },
102
+ };
103
+ }
104
+ }
80
105
  };
81
106
  EmailMoleculer = __decorate([
82
107
  (0, common_1.Injectable)(),
@@ -1 +1 @@
1
- {"version":3,"file":"email.moleculer.js","sourceRoot":"","sources":["../../src/email/email.moleculer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA4D;AAC5D,2CAA4C;AAC5C,mDAAmD;AACnD,mDAA+C;AAGxC,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,mBAAO;IACzC,YACmB,YAA0B,EAC3B,MAAqB;QAErC,KAAK,CAAC,MAAM,CAAC,CAAC;QAHG,iBAAY,GAAZ,YAAY,CAAc;QAK3C,IAAI,CAAC,kBAAkB,CAAC;YACtB,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;YACD,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,OAAO,EAAE,IAAI,CAAC,cAAc;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,cAAc,KAAI,CAAC;IAEnB,KAAK,CAAC,cAAc,KAAI,CAAC;IAEzB,KAAK,CAAC,cAAc,KAAI,CAAC;IAEzB,KAAK,CAAC,IAAI,CAAC,GAAY;QACrB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAa,CAAC;QAC5D,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC9C,IAAI;gBACJ,EAAE;gBACF,OAAO;gBACP,IAAI;gBACJ,IAAI;aACL,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;gBACL,KAAK,EAAE;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;SACH;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAY;QAC3B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAa,CAAC;QACxE,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;gBACpD,UAAU;gBACV,QAAQ;gBACR,OAAO;gBACP,IAAI;gBACJ,IAAI;aACL,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;gBACL,KAAK,EAAE;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;SACH;IACH,CAAC;CACF,CAAA;AAlEY,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,wBAAY,GAAE,CAAA;qCADgB,4BAAY;QACnB,yBAAa;GAH5B,cAAc,CAkE1B;AAlEY,wCAAc"}
1
+ {"version":3,"file":"email.moleculer.js","sourceRoot":"","sources":["../../src/email/email.moleculer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ import { MongodbService } from '@builder6/core';
3
+ import { EmailService } from './email.service';
4
+ export declare class EmailScheduleService {
5
+ private configService;
6
+ private mongodbService;
7
+ private readonly emailService;
8
+ private readonly logger;
9
+ private isSendingMail;
10
+ private static interval;
11
+ private batchSize;
12
+ private timeout;
13
+ private keepMails;
14
+ constructor(configService: ConfigService, mongodbService: MongodbService, emailService: EmailService);
15
+ sendEmail(): Promise<void>;
16
+ }
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var EmailScheduleService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.EmailScheduleService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const schedule_1 = require("@nestjs/schedule");
16
+ const common_2 = require("@nestjs/common");
17
+ const config_1 = require("@nestjs/config");
18
+ const core_1 = require("@builder6/core");
19
+ const email_service_1 = require("./email.service");
20
+ const MyPromise = require("bluebird");
21
+ const lodash_1 = require("lodash");
22
+ let EmailScheduleService = EmailScheduleService_1 = class EmailScheduleService {
23
+ constructor(configService, mongodbService, emailService) {
24
+ this.configService = configService;
25
+ this.mongodbService = mongodbService;
26
+ this.emailService = emailService;
27
+ this.logger = new common_2.Logger(EmailScheduleService_1.name);
28
+ this.batchSize = Number(this.configService.get('email.queue.batch.size') || 1);
29
+ this.timeout = Number(this.configService.get('email.queue.timeout') || 60000);
30
+ this.keepMails = this.configService.get('email.queue.keeps');
31
+ }
32
+ async sendEmail() {
33
+ this.logger.log(`Called SendEmail ${new Date()}`);
34
+ if (this.isSendingMail)
35
+ return;
36
+ this.isSendingMail = true;
37
+ const now = Date.now();
38
+ try {
39
+ const pendingMails = await this.mongodbService.find('_mail_queue', {
40
+ sent: false,
41
+ sending: {
42
+ $lt: now,
43
+ },
44
+ errMsg: {
45
+ $exists: false,
46
+ },
47
+ }, {
48
+ sort: {
49
+ createdAt: 1,
50
+ },
51
+ limit: this.batchSize,
52
+ });
53
+ if (pendingMails.length > 0) {
54
+ const mailqueueCol = await this.mongodbService.getCollection('_mail_queue');
55
+ await MyPromise.map(pendingMails, async (pendingMail) => {
56
+ const timeoutAt = now + this.timeout;
57
+ var reserved = await mailqueueCol.updateOne({
58
+ _id: pendingMail._id,
59
+ sent: false,
60
+ sending: {
61
+ $lt: now,
62
+ },
63
+ }, {
64
+ $set: {
65
+ sending: timeoutAt,
66
+ },
67
+ });
68
+ if (!(0, lodash_1.isEmpty)(reserved)) {
69
+ try {
70
+ await this.emailService.sendMail(pendingMail.mail);
71
+ if (this.keepMails) {
72
+ await mailqueueCol.updateOne({
73
+ _id: pendingMail._id,
74
+ }, {
75
+ $set: {
76
+ sent: true,
77
+ sentAt: new Date(),
78
+ sending: 0
79
+ },
80
+ });
81
+ }
82
+ else {
83
+ await mailqueueCol.deleteOne({
84
+ _id: pendingMail._id,
85
+ });
86
+ }
87
+ }
88
+ catch (error) {
89
+ this.logger.error(error);
90
+ await mailqueueCol.updateOne({
91
+ _id: pendingMail._id,
92
+ }, {
93
+ $set: {
94
+ errMsg: error.message || error.toString(),
95
+ },
96
+ });
97
+ }
98
+ }
99
+ }, { concurrency: pendingMails.length });
100
+ }
101
+ this.isSendingMail = false;
102
+ }
103
+ catch (error) {
104
+ }
105
+ finally {
106
+ this.isSendingMail = false;
107
+ }
108
+ }
109
+ };
110
+ EmailScheduleService.interval = Number(process.env.STEEDOS_EMAIL_QUEUE_INTERVAL || 3000);
111
+ __decorate([
112
+ (0, schedule_1.Interval)(EmailScheduleService_1.interval),
113
+ __metadata("design:type", Function),
114
+ __metadata("design:paramtypes", []),
115
+ __metadata("design:returntype", Promise)
116
+ ], EmailScheduleService.prototype, "sendEmail", null);
117
+ EmailScheduleService = EmailScheduleService_1 = __decorate([
118
+ (0, common_1.Injectable)(),
119
+ __metadata("design:paramtypes", [config_1.ConfigService,
120
+ core_1.MongodbService,
121
+ email_service_1.EmailService])
122
+ ], EmailScheduleService);
123
+ exports.EmailScheduleService = EmailScheduleService;
124
+ //# sourceMappingURL=email.schedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.schedule.js","sourceRoot":"","sources":["../../src/email/email.schedule.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { MongodbService } from '@builder6/core';
2
2
  import { ConfigService } from '@nestjs/config';
3
+ import * as nodemailer from 'nodemailer';
3
4
  export declare class EmailService {
4
5
  private configService;
5
6
  private mongodbService;
@@ -7,12 +8,32 @@ export declare class EmailService {
7
8
  private emailConfig;
8
9
  private readonly logger;
9
10
  constructor(configService: ConfigService, mongodbService: MongodbService);
10
- sendMail({ from, to, subject, text, html, }: {
11
+ sendMail({ from, to, cc, bcc, replyTo, subject, text, html, headers, attachments, mailComposer, }: {
11
12
  from?: string;
12
13
  to: string;
14
+ cc?: string;
15
+ bcc?: string;
16
+ replyTo?: string;
13
17
  subject: string;
14
18
  text?: string;
15
19
  html?: string;
20
+ headers?: object;
21
+ attachments?: nodemailer.Attachment[];
22
+ mailComposer?: nodemailer.MailComposer;
23
+ }): Promise<void>;
24
+ sendMailToUsers({ spaceId, fromUserId, toUserIds, ccUserIds, bccUserIds, replyToUserId, subject, text, html, headers, attachments, mailComposer, }: {
25
+ spaceId: string;
26
+ fromUserId: string;
27
+ toUserIds: string[];
28
+ ccUserIds?: string[];
29
+ bccUserIds?: string[];
30
+ replyToUserId?: string;
31
+ subject: string;
32
+ text?: string;
33
+ html?: string;
34
+ headers?: object;
35
+ attachments?: nodemailer.Attachment[];
36
+ mailComposer?: nodemailer.MailComposer;
16
37
  }): Promise<void>;
17
38
  sendMailToUser({ fromUserId, toUserId, subject, text, html, }: {
18
39
  fromUserId?: string;
@@ -22,5 +43,11 @@ export declare class EmailService {
22
43
  html?: string;
23
44
  }): Promise<void>;
24
45
  getUserEmail(userId: string): Promise<any>;
46
+ getUsersEmail(userIds: string[], spaceId: string): Promise<any>;
47
+ convertUserIdsToEmails(userIds: string[], allUsers: {
48
+ _id: string;
49
+ email: string;
50
+ name: string;
51
+ }[]): string;
25
52
  updateConfig(config: object): Promise<void>;
26
53
  }
@@ -14,6 +14,7 @@ exports.EmailService = void 0;
14
14
  const core_1 = require("@builder6/core");
15
15
  const common_1 = require("@nestjs/common");
16
16
  const config_1 = require("@nestjs/config");
17
+ const lodash_1 = require("lodash");
17
18
  const nodemailer = require("nodemailer");
18
19
  let EmailService = EmailService_1 = class EmailService {
19
20
  constructor(configService, mongodbService) {
@@ -40,16 +41,22 @@ let EmailService = EmailService_1 = class EmailService {
40
41
  this.transporter = nodemailer.createTransport(this.emailConfig);
41
42
  }
42
43
  }
43
- async sendMail({ from = this.configService.get('email.from'), to, subject, text, html, }) {
44
+ async sendMail({ from = this.configService.get('email.from'), to, cc, bcc, replyTo, subject, text, html, headers, attachments, mailComposer, }) {
44
45
  if (!this.transporter) {
45
46
  throw new Error('Email service not enabled');
46
47
  }
47
48
  const mailOptions = {
48
- from: from,
49
+ from,
49
50
  to,
51
+ cc,
52
+ bcc,
53
+ replyTo,
50
54
  subject,
51
55
  text,
52
56
  html,
57
+ headers,
58
+ attachments,
59
+ mailComposer,
53
60
  };
54
61
  try {
55
62
  const info = await this.transporter.sendMail(mailOptions);
@@ -61,6 +68,44 @@ let EmailService = EmailService_1 = class EmailService {
61
68
  throw error;
62
69
  }
63
70
  }
71
+ async sendMailToUsers({ spaceId, fromUserId, toUserIds, ccUserIds, bccUserIds, replyToUserId, subject, text, html, headers, attachments, mailComposer, }) {
72
+ const allUsers = await this.getUsersEmail((0, lodash_1.compact)([
73
+ fromUserId,
74
+ replyToUserId,
75
+ ...toUserIds,
76
+ ...(ccUserIds ?? []),
77
+ ...(bccUserIds ?? []),
78
+ ]), spaceId);
79
+ const from = this.convertUserIdsToEmails([fromUserId], allUsers) ||
80
+ this.configService.get('email.from');
81
+ let to = this.convertUserIdsToEmails(toUserIds, allUsers);
82
+ const cc = this.convertUserIdsToEmails(ccUserIds ?? [], allUsers);
83
+ const bcc = this.convertUserIdsToEmails(bccUserIds ?? [], allUsers);
84
+ if ((0, lodash_1.isEmpty)(to) && (0, lodash_1.isEmpty)(cc) && (0, lodash_1.isEmpty)(bcc)) {
85
+ throw new Error('没有满足要求的接收者');
86
+ }
87
+ to = (0, lodash_1.isEmpty)(to) ? '华炎魔方 <noreply@xxx.com>' : to;
88
+ const replyTo = this.convertUserIdsToEmails([replyToUserId], allUsers);
89
+ await this.mongodbService.insertOne('_mail_queue', {
90
+ createdAt: new Date().toISOString(),
91
+ createdBy: fromUserId ?? '<SERVER>',
92
+ mail: {
93
+ from,
94
+ to,
95
+ cc,
96
+ bcc,
97
+ replyTo,
98
+ subject,
99
+ text,
100
+ html,
101
+ headers,
102
+ attachments,
103
+ mailComposer,
104
+ },
105
+ sent: false,
106
+ sending: 0,
107
+ });
108
+ }
64
109
  async sendMailToUser({ fromUserId, toUserId, subject, text, html, }) {
65
110
  const from = (fromUserId && (await this.getUserEmail(fromUserId))) ||
66
111
  this.configService.get('email.from');
@@ -89,6 +134,48 @@ let EmailService = EmailService_1 = class EmailService {
89
134
  return null;
90
135
  }
91
136
  }
137
+ async getUsersEmail(userIds, spaceId) {
138
+ const [users, spaceUsers] = await Promise.all([
139
+ this.mongodbService.find('users', {
140
+ _id: { $in: userIds },
141
+ email: { $exists: true },
142
+ }, {
143
+ projection: {
144
+ _id: 1,
145
+ name: 1,
146
+ email: 1,
147
+ },
148
+ }),
149
+ this.mongodbService.find('space_users', {
150
+ space: spaceId,
151
+ user: { $in: userIds },
152
+ email_notification: true,
153
+ }, {
154
+ projection: {
155
+ user: 1,
156
+ },
157
+ }),
158
+ ]);
159
+ const spaceUsersIds = spaceUsers.map((spaceUser) => spaceUser.user);
160
+ return (users ?? []).filter((user) => spaceUsersIds.includes(user._id));
161
+ }
162
+ convertUserIdsToEmails(userIds, allUsers) {
163
+ if ((0, lodash_1.isEmpty)(userIds) || (0, lodash_1.isEmpty)(allUsers)) {
164
+ return undefined;
165
+ }
166
+ return (0, lodash_1.compact)(userIds.map((userId) => {
167
+ const currUser = allUsers.find((user) => user._id === userId);
168
+ if (currUser && currUser.name) {
169
+ return `"${currUser.name}" <${currUser.email}>`;
170
+ }
171
+ else if (currUser) {
172
+ return currUser.email;
173
+ }
174
+ else {
175
+ return null;
176
+ }
177
+ })).join(', ');
178
+ }
92
179
  async updateConfig(config) {
93
180
  const emailConfig = {
94
181
  ...this.emailConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../src/email/email.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../src/email/email.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builder6/email",
3
- "version": "0.11.11",
3
+ "version": "0.12.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -12,11 +12,16 @@
12
12
  "build:watch": "rimraf dist && tsc --watch"
13
13
  },
14
14
  "dependencies": {
15
- "@builder6/core": "^0.11.11",
15
+ "@builder6/core": "^0.12.0",
16
+ "bluebird": "^3.7.2",
17
+ "lodash": "^4.17.5",
16
18
  "nodemailer": "^6.9.16"
17
19
  },
18
20
  "publishConfig": {
19
21
  "access": "public"
20
22
  },
21
- "gitHead": "43ade804943969b9b131ac2437ba4a3d760e9132"
23
+ "gitHead": "36d1112d78ee668de5dc61c6b2cb7eceff6d123d",
24
+ "devDependencies": {
25
+ "@types/bluebird": "^3.5.42"
26
+ }
22
27
  }