﻿1
00:00:00,790 --> 00:00:02,400
‫Instrutor: Terminada a parte da

2
00:00:02,400 --> 00:00:03,960
‫seção de upload de

3
00:00:03,960 --> 00:00:07,300
‫arquivos, vamos agora voltar nossa atenção para o envio de emails.

4
00:00:07,300 --> 00:00:09,610
‫E na verdade já enviamos um

5
00:00:09,610 --> 00:00:13,170
‫e-mail antes, para a redefinição da senha, mas nas próximas duas

6
00:00:13,170 --> 00:00:16,050
‫palestras vamos levar isso a um nível totalmente novo.

7
00:00:16,050 --> 00:00:18,760
‫E o que vamos fazer é construir templates

8
00:00:18,760 --> 00:00:21,350
‫de email com pug e enviar emails

9
00:00:21,350 --> 00:00:23,270
‫reais usando o serviço SendGrid.

10
00:00:23,270 --> 00:00:25,220
‫E agora, nesta primeira aula, vamos

11
00:00:25,220 --> 00:00:27,630
‫construir um gerenciador de e-mail mais robusto do

12
00:00:27,630 --> 00:00:29,313
‫que o que tínhamos antes.

13
00:00:30,870 --> 00:00:34,030
‫Então, vamos abrir nossa pasta de

14
00:00:34,030 --> 00:00:38,510
‫utilitários, e aqui, lembre-se, já temos um arquivo de e-mail.

15
00:00:38,510 --> 00:00:40,100
‫Mas agora o que

16
00:00:40,100 --> 00:00:43,660
‫temos aqui é apenas um gerenciador de envio de e-mail muito

17
00:00:43,660 --> 00:00:46,810
‫simples, que não é capaz de abranger muitas opções.

18
00:00:46,810 --> 00:00:48,120
‫E agora vamos

19
00:00:48,120 --> 00:00:50,190
‫construir uma solução muito mais robusta aqui.

20
00:00:50,190 --> 00:00:51,450
‫Tudo bem?

21
00:00:51,450 --> 00:00:53,833
‫Então, o que vou fazer é criar uma

22
00:00:55,360 --> 00:00:57,503
‫classe, e essa classe se chamará e-mail.

23
00:00:58,750 --> 00:01:01,690
‫Portanto, módulo. exportações, e

24
00:01:01,690 --> 00:01:03,950
‫também esta classe é

25
00:01:03,950 --> 00:01:07,103
‫o que vamos exportar deste arquivo.

26
00:01:09,580 --> 00:01:13,340
‫E então, como sempre, uma classe precisa de uma função construtora, que

27
00:01:13,340 --> 00:01:16,170
‫é basicamente a função que estará em execução

28
00:01:16,170 --> 00:01:19,300
‫quando um novo objeto for criado por meio dessa classe.

29
00:01:19,300 --> 00:01:20,910
‫Agora, vamos realmente dar uma

30
00:01:20,910 --> 00:01:23,393
‫olhada em como usaríamos essa classe na prática.

31
00:01:24,960 --> 00:01:26,770
‫E então a ideia,

32
00:01:26,770 --> 00:01:28,840
‫basicamente, sempre que quisermos enviar um

33
00:01:28,840 --> 00:01:32,960
‫novo e-mail, é importar essa classe de e-mail e depois usá-la assim.

34
00:01:32,960 --> 00:01:34,713
‫Então, criando um novo

35
00:01:35,970 --> 00:01:38,490
‫email, e nele, queremos colar um usuário, e

36
00:01:38,490 --> 00:01:41,150
‫então esse usuário irá conter o endereço de

37
00:01:41,150 --> 00:01:44,563
‫email, e também o nome, caso desejemos personalizar o email.

38
00:01:45,800 --> 00:01:47,580
‫E também um URL.

39
00:01:47,580 --> 00:01:49,120
‫E um bom exemplo

40
00:01:49,120 --> 00:01:53,200
‫para este é, por exemplo, o URL de redefinição para redefinir a senha.

41
00:01:53,200 --> 00:01:54,033
‫OK?

42
00:01:54,033 --> 00:01:56,660
‫Então, um novo objeto de email, e aí

43
00:01:56,660 --> 00:01:59,000
‫queremos chamar o método que vai

44
00:01:59,000 --> 00:02:00,570
‫realmente enviar o email.

45
00:02:00,570 --> 00:02:02,843
‫Então, vamos dizer sendWelcome.

46
00:02:04,180 --> 00:02:07,410
‫E então esse será enviado sempre que

47
00:02:07,410 --> 00:02:10,910
‫um novo usuário se cadastrar em nosso aplicativo.

48
00:02:10,910 --> 00:02:11,743
‫Tudo bem?

49
00:02:11,743 --> 00:02:14,630
‫Em seguida, também enviaremos a redefinição da senha.

50
00:02:14,630 --> 00:02:16,480
‫E a maneira como

51
00:02:16,480 --> 00:02:18,950
‫vamos configurar tudo isso tornará muito fácil

52
00:02:18,950 --> 00:02:21,490
‫continuar adicionando novos e novos métodos semelhantes

53
00:02:21,490 --> 00:02:24,450
‫a este para enviar e-mails diferentes para cenários diferentes.

54
00:02:24,450 --> 00:02:25,370
‫Tudo bem?

55
00:02:25,370 --> 00:02:28,400
‫De qualquer forma, como colamos o usuário e

56
00:02:28,400 --> 00:02:31,670
‫a URL em um novo e-mail, nosso construtor

57
00:02:31,670 --> 00:02:33,633
‫precisa considerá-los como argumentos.

58
00:02:34,720 --> 00:02:36,560
‫Então, usuário e URL.

59
00:02:36,560 --> 00:02:40,340
‫E então o que acontece nesse construtor é isso. para será

60
00:02:43,020 --> 00:02:47,130
‫igual ao usuário. email Em seguida, também

61
00:02:49,926 --> 00:02:53,210
‫queremos definir o primeiro nome do usuário, novamente

62
00:02:53,210 --> 00:02:56,433
‫a fim de personalizar basicamente o email.

63
00:02:59,903 --> 00:03:03,170
‫E então esse é o usuário. nome e vamos

64
00:03:03,170 --> 00:03:08,170
‫dividi-lo e pegar apenas o primeiro elemento na matriz resultante.

65
00:03:09,530 --> 00:03:11,210
‫Então já fizemos

66
00:03:11,210 --> 00:03:16,210
‫isso antes, mas também isso. url é igual ao URL de entrada.

67
00:03:17,010 --> 00:03:22,010
‫Finalmente, vamos definir isso também. daqui.

68
00:03:22,500 --> 00:03:24,450
‫então, basicamente, no nível do objeto.

69
00:03:24,450 --> 00:03:26,970
‫E então cada objeto criado a partir

70
00:03:26,970 --> 00:03:28,830
‫dessa classe receberá essa propriedade.

71
00:03:28,830 --> 00:03:32,720
‫E então este será semelhante ao que temos aqui.

72
00:03:32,720 --> 00:03:35,020
‫Então é basicamente isso, vamos apenas

73
00:03:35,020 --> 00:03:36,760
‫copiá-lo, mas é

74
00:03:36,760 --> 00:03:40,230
‫bom tê-lo em um lugar central como este.

75
00:03:40,230 --> 00:03:42,200
‫Agora, uma coisa que eu realmente

76
00:03:42,200 --> 00:03:45,090
‫quero fazer, é basicamente definir este endereço de e-mail

77
00:03:45,090 --> 00:03:46,770
‫aqui como uma

78
00:03:46,770 --> 00:03:48,740
‫variável de configuração e, portanto, uma

79
00:03:48,740 --> 00:03:50,440
‫variável de ambiente que podemos

80
00:03:50,440 --> 00:03:54,073
‫alterar facilmente manipulando a configuração. arquivo env.

81
00:03:55,774 --> 00:03:56,607
‫Tudo bem?

82
00:03:57,940 --> 00:04:00,100
‫Então, vamos chamá-lo de EMAIL_FROM.

83
00:04:02,490 --> 00:04:06,530
‫E então queremos apenas o próprio endereço de e-mail.

84
00:04:06,530 --> 00:04:07,363
‫Tudo bem?

85
00:04:08,560 --> 00:04:10,840
‫Outro caso em que é muito útil

86
00:04:10,840 --> 00:04:12,353
‫usar variáveis de ambiente.

87
00:04:13,260 --> 00:04:15,360
‫E agora vamos fazer disso uma string de modelo.

88
00:04:18,400 --> 00:04:20,840
‫E, claro, conecte isso aqui.

89
00:04:20,840 --> 00:04:23,153
‫Então esse é o processo. env. E-MAIL DE.

90
00:04:28,540 --> 00:04:30,930
‫A seguir, vamos criar um método

91
00:04:30,930 --> 00:04:33,230
‫aqui para criar o transporte.

92
00:04:33,230 --> 00:04:35,563
‫Tão semelhante ao que temos aqui.

93
00:04:37,640 --> 00:04:39,347
‫Portanto, crie o transporte.

94
00:04:43,450 --> 00:04:46,280
‫E agora aqui nós realmente queremos ter transportes

95
00:04:46,280 --> 00:04:48,890
‫diferentes, estejamos em produção ou não.

96
00:04:48,890 --> 00:04:50,170
‫Então, quando

97
00:04:50,170 --> 00:04:52,470
‫estamos em produção, queremos enviar emails

98
00:04:52,470 --> 00:04:55,540
‫reais, e faremos isso um pouco mais tarde

99
00:04:55,540 --> 00:04:57,890
‫usando SendGrid, mas se não estivermos

100
00:04:57,890 --> 00:05:00,730
‫em produção, ainda queremos usar nosso aplicativo Mailtrap

101
00:05:00,730 --> 00:05:03,270
‫exatamente como fazíamos antes, quando enviamos e-mails.

102
00:05:03,270 --> 00:05:07,020
‫Portanto, em vez de o e-mail ir para um endereço de e-mail real,

103
00:05:07,020 --> 00:05:10,730
‫ele ficará preso em nossa caixa de entrada do Mailtrap para que

104
00:05:10,730 --> 00:05:12,260
‫possamos dar uma olhada

105
00:05:12,260 --> 00:05:13,843
‫em nosso processo de desenvolvimento.

106
00:05:14,950 --> 00:05:18,343
‫Então esse transportador será exatamente o mesmo que este, então vamos apenas copiá-lo,

107
00:05:19,870 --> 00:05:25,277
‫mas primeiro vamos dizer if (processar.

108
00:05:25,277 --> 00:05:25,277
‫env. NODE_ENV).

109
00:05:30,360 --> 00:05:32,360
‫Então, lembre-se, é assim que verificamos se

110
00:05:32,360 --> 00:05:34,110
‫estamos em produção ou não.

111
00:05:36,390 --> 00:05:38,230
‫E se isso estiver

112
00:05:38,230 --> 00:05:39,620
‫em produção, e

113
00:05:39,620 --> 00:05:43,830
‫se estivermos em produção, queremos criar um transportador para SendGrid.

114
00:05:43,830 --> 00:05:45,890
‫Então, vamos apenas colocar isso aqui

115
00:05:45,890 --> 00:05:47,613
‫e faremos isso mais tarde.

116
00:05:49,170 --> 00:05:51,410
‫Por enquanto, vamos apenas retornar algo daqui.

117
00:05:51,410 --> 00:05:53,133
‫Não importa, vamos dizer um.

118
00:05:54,680 --> 00:05:55,513
‫Tudo bem?

119
00:05:56,750 --> 00:05:58,840
‫E então, basicamente, do contrário,

120
00:05:58,840 --> 00:06:02,493
‫queremos retornar este nodemailer. createTransport.

121
00:06:05,166 --> 00:06:05,999
‫OK?

122
00:06:05,999 --> 00:06:06,840
‫Portanto,

123
00:06:06,840 --> 00:06:11,293
‫este Transporte aqui basicamente retornará um novo transporte nodemailer como este.

124
00:06:12,280 --> 00:06:14,660
‫Ou, por outro lado, quando estamos

125
00:06:14,660 --> 00:06:17,333
‫em produção, então o que vai estar aqui.

126
00:06:18,500 --> 00:06:19,333
‫OK?

127
00:06:19,333 --> 00:06:21,020
‫Então, vamos realmente excluí-lo daqui.

128
00:06:23,930 --> 00:06:26,773
‫Além disso, queremos excluir este.

129
00:06:32,970 --> 00:06:35,480
‫E agora vamos criar o método send.

130
00:06:35,480 --> 00:06:37,520
‫E então este será o

131
00:06:37,520 --> 00:06:39,610
‫método que fará o envio real.

132
00:06:39,610 --> 00:06:40,443
‫OK?

133
00:06:40,443 --> 00:06:43,650
‫E este receberá um template e um assunto.

134
00:06:43,650 --> 00:06:45,150
‫E você entenderá um pouco

135
00:06:45,150 --> 00:06:48,003
‫melhor por que isso acontece quando toda a classe for concluída.

136
00:06:49,270 --> 00:06:50,103
‫OK?

137
00:06:51,550 --> 00:06:53,513
‫Portanto, modelo e assunto.

138
00:06:56,050 --> 00:06:58,553
‫Portanto, vamos comentar aqui o que isso fará.

139
00:07:01,170 --> 00:07:03,600
‫E agora, antes de realmente escrevermos essa

140
00:07:03,600 --> 00:07:05,690
‫função, deixe-me mostrar como vamos usá-la

141
00:07:05,690 --> 00:07:08,753
‫e por que precisamos do modelo e do assunto aqui.

142
00:07:10,890 --> 00:07:12,893
‫Então, lembre-se de como

143
00:07:12,893 --> 00:07:16,890
‫dissemos aqui que teremos um método chamado sendWelcome, e

144
00:07:16,890 --> 00:07:21,890
‫também um método para enviar um e-mail de redefinição de senha.

145
00:07:21,900 --> 00:07:26,353
‫E então, vamos agora realmente adicionar isso aqui, então envie Bem-vindo.

146
00:07:28,460 --> 00:07:31,430
‫E este não recebe nenhum argumento e tudo o

147
00:07:31,430 --> 00:07:34,410
‫que realmente faz é chamar send com o template

148
00:07:35,470 --> 00:07:37,030
‫e o assunto

149
00:07:37,030 --> 00:07:38,690
‫que queremos para este email.

150
00:07:38,690 --> 00:07:39,523
‫OK?

151
00:07:39,523 --> 00:07:41,800
‫E, novamente, isso torna realmente fácil criar

152
00:07:41,800 --> 00:07:43,370
‫diferentes e-mails para

153
00:07:43,370 --> 00:07:45,480
‫todos os tipos de situações diferentes.

154
00:07:45,480 --> 00:07:46,550
‫OK?

155
00:07:46,550 --> 00:07:49,297
‫Portanto, temos essa função de envio de uma rota aqui

156
00:07:49,297 --> 00:07:51,790
‫e, em seguida, todas essas funções mais específicas,

157
00:07:51,790 --> 00:07:55,100
‫que, por sua vez, chamarão a função de envio do roteador

158
00:07:55,100 --> 00:07:57,150
‫que está fazendo o trabalho real.

159
00:07:57,150 --> 00:07:58,500
‫OK?

160
00:07:58,500 --> 00:08:01,950
‫E na verdade aqui é isso. enviar porque é

161
00:08:01,950 --> 00:08:03,970
‫claro que esses métodos aqui,

162
00:08:03,970 --> 00:08:06,600
‫eles serão definidos no objeto atual.

163
00:08:06,600 --> 00:08:07,643
‫E então é isso.

164
00:08:09,530 --> 00:08:12,113
‫Em seguida, colamos aqui o nome do modelo.

165
00:08:14,280 --> 00:08:16,630
‫E então este nome de modelo que coloquei

166
00:08:16,630 --> 00:08:19,020
‫aqui, será no futuro um modelo de pug

167
00:08:19,020 --> 00:08:20,280
‫que iremos criar.

168
00:08:20,280 --> 00:08:22,320
‫Então, na próxima aula, vamos criar

169
00:08:22,320 --> 00:08:24,600
‫este template de pug para enviar

170
00:08:24,600 --> 00:08:26,523
‫este e-mail de boas-vindas.

171
00:08:27,710 --> 00:08:28,543
‫OK?

172
00:08:28,543 --> 00:08:29,763
‫E então apenas a linha de assunto.

173
00:08:31,250 --> 00:08:35,320
‫Vamos dizer 'Bem-vindo à Família Natours! 'E assim, assim,

174
00:08:37,550 --> 00:08:40,920
‫não precisamos nos preocupar com nenhum dos

175
00:08:40,920 --> 00:08:43,210
‫detalhes de implementação quando estamos

176
00:08:43,210 --> 00:08:45,260
‫realmente enviando o e-mail.

177
00:08:45,260 --> 00:08:47,290
‫Por exemplo, no ponto do nosso

178
00:08:47,290 --> 00:08:49,510
‫código para onde queremos enviar o e-mail

179
00:08:49,510 --> 00:08:51,900
‫de boas-vindas, não precisamos nos preocupar com os nomes

180
00:08:51,900 --> 00:08:54,130
‫dos modelos ou com as linhas de assunto.

181
00:08:54,130 --> 00:08:57,130
‫Tudo o que vamos fazer é mandar um e-mail de

182
00:08:57,130 --> 00:08:58,260
‫boas-vindas e pronto.

183
00:08:58,260 --> 00:09:00,380
‫E então nossa classe

184
00:09:00,380 --> 00:09:03,563
‫se encarregará de lidar com a implementação.

185
00:09:04,880 --> 00:09:05,780
‫Tudo bem?

186
00:09:05,780 --> 00:09:09,023
‫De qualquer forma, vamos agora construir esta função de envio.

187
00:09:10,180 --> 00:09:14,560
‫E então, o que vamos fazer nesta função, é

188
00:09:14,560 --> 00:09:19,560
‫primeiro renderizar o HTML para o e-mail com base em

189
00:09:20,820 --> 00:09:22,663
‫um template pug.

190
00:09:25,650 --> 00:09:27,550
‫Então, basicamente aquele que

191
00:09:27,550 --> 00:09:29,823
‫estamos colando aqui com o modelo.

192
00:09:31,750 --> 00:09:34,533
‫Em seguida, defina as opções de e-mail, e

193
00:09:36,570 --> 00:09:40,883
‫isso mais uma vez será muito parecido com este, e na verdade

194
00:09:41,750 --> 00:09:43,530
‫deixe-me ir em frente

195
00:09:43,530 --> 00:09:46,453
‫e cortar a partir daqui e colá-lo aqui.

196
00:09:48,130 --> 00:09:49,000
‫OK?

197
00:09:49,000 --> 00:09:51,600
‫Claro que não vai ser exatamente o mesmo, mas vamos

198
00:09:51,600 --> 00:09:53,573
‫deixar isso para um pouco mais tarde.

199
00:09:54,500 --> 00:09:55,333
‫Tudo bem?

200
00:09:55,333 --> 00:09:56,323
‫E, por

201
00:09:58,690 --> 00:10:01,423
‫fim, crie um transporte e envie e-mail.

202
00:10:06,930 --> 00:10:07,880
‫OK?

203
00:10:07,880 --> 00:10:10,530
‫E então, vou deixar esse para depois também.

204
00:10:13,120 --> 00:10:15,440
‫Então, começando com o ponto número um.

205
00:10:15,440 --> 00:10:18,670
‫E normalmente até este ponto, nós apenas usamos o pug

206
00:10:18,670 --> 00:10:20,160
‫para criar um template,

207
00:10:20,160 --> 00:10:22,370
‫e então passamos o nome do

208
00:10:22,370 --> 00:10:24,780
‫template para a função render na resposta.

209
00:10:24,780 --> 00:10:25,870
‫Direito.

210
00:10:25,870 --> 00:10:27,820
‫Então, nós sempre usamos como

211
00:10:29,890 --> 00:10:31,723
‫este res. render, e

212
00:10:31,723 --> 00:10:33,630
‫aqui o nome do modelo.

213
00:10:33,630 --> 00:10:34,810
‫Direito?

214
00:10:34,810 --> 00:10:37,370
‫E o que esta função de renderização

215
00:10:37,370 --> 00:10:41,200
‫faz nos bastidores é basicamente criar o HTML baseado no template

216
00:10:41,200 --> 00:10:43,450
‫pug e então enviá-lo ao cliente.

217
00:10:43,450 --> 00:10:46,840
‫Agora, neste caso, não queremos realmente renderizar, tudo o

218
00:10:46,840 --> 00:10:50,400
‫que queremos fazer é basicamente criar o HTML a partir

219
00:10:50,400 --> 00:10:53,960
‫do modelo para que possamos enviar esse HTML como

220
00:10:53,960 --> 00:10:55,110
‫o e-mail.

221
00:10:55,110 --> 00:10:58,520
‫Portanto, basicamente defini-lo aqui como uma opção HTML para

222
00:10:58,520 --> 00:11:00,070
‫essas opções de e-mail.

223
00:11:00,070 --> 00:11:00,960
‫OK?

224
00:11:00,960 --> 00:11:04,900
‫Portanto, lembre-se de como podemos especificar texto e HTML.

225
00:11:04,900 --> 00:11:08,790
‫E principalmente estamos interessados em enviar um email em HTML.

226
00:11:08,790 --> 00:11:11,340
‫E é por isso que teremos um template pug

227
00:11:11,340 --> 00:11:13,843
‫a partir do qual geraremos esse HTML.

228
00:11:15,130 --> 00:11:16,120
‫OK?

229
00:11:16,120 --> 00:11:18,720
‫Portanto, não vai funcionar assim, mas em

230
00:11:18,720 --> 00:11:20,770
‫vez disso, precisamos exigir o

231
00:11:20,770 --> 00:11:22,173
‫pacote pug aqui.

232
00:11:24,560 --> 00:11:25,443
‫Então,

233
00:11:27,200 --> 00:11:28,780
‫pug assim, e aí

234
00:11:28,780 --> 00:11:32,600
‫a gente precisa usar pug.

235
00:11:32,600 --> 00:11:32,600
‫renderFile.

236
00:11:36,890 --> 00:11:37,723
‫OK?

237
00:11:37,723 --> 00:11:39,490
‫E então isso vai pegar

238
00:11:39,490 --> 00:11:42,450
‫o arquivo e então renderizar o código pug em HTML real.

239
00:11:42,450 --> 00:11:43,283
‫OK?

240
00:11:43,283 --> 00:11:48,120
‫E para que possamos salvar em um HTML variável.

241
00:11:48,120 --> 00:11:48,953
‫Tudo bem?

242
00:11:49,870 --> 00:11:52,330
‫Então, onde está esse arquivo?

243
00:11:52,330 --> 00:11:55,173
‫Bem, está em dirname, então o nome

244
00:11:56,460 --> 00:11:58,500
‫D-I-R, que lembra é a

245
00:11:58,500 --> 00:12:00,120
‫localização do script

246
00:12:00,120 --> 00:12:01,960
‫em execução no momento,

247
00:12:01,960 --> 00:12:05,133
‫e isso é, agora, nesta pasta de utilitários.

248
00:12:06,570 --> 00:12:07,403
‫OK?

249
00:12:07,403 --> 00:12:10,223
‫A partir daí, precisamos avançar um passo, ir para

250
00:12:12,010 --> 00:12:16,000
‫as visualizações e, a partir daí, ir para uma pasta de e-mails que

251
00:12:16,860 --> 00:12:18,950
‫também criaremos em um segundo.

252
00:12:18,950 --> 00:12:19,783
‫E aí

253
00:12:19,783 --> 00:12:22,103
‫é onde teremos o arquivo de modelo.

254
00:12:23,450 --> 00:12:28,650
‫Então, modelo}.

255
00:12:28,650 --> 00:12:28,650
‫pug.

256
00:12:28,650 --> 00:12:32,340
‫Então, para o e-mail de boas-vindas, este modelo será

257
00:12:32,340 --> 00:12:34,180
‫chamado de welcome.

258
00:12:34,180 --> 00:12:38,920
‫E agora vamos realmente criar isso aqui nas visualizações, criar uma

259
00:12:38,920 --> 00:12:40,293
‫nova pasta, e-mail,

260
00:12:42,910 --> 00:12:45,623
‫e então ali um novo arquivo,

261
00:12:47,730 --> 00:12:48,677
‫bem-vindo. pug.

262
00:12:49,784 --> 00:12:50,660
‫OK?

263
00:12:50,660 --> 00:12:52,860
‫E não vamos realmente criar esse

264
00:12:52,860 --> 00:12:56,130
‫modelo neste vídeo, mas eu só queria mostrar como

265
00:12:56,130 --> 00:12:58,320
‫tudo isso vai funcionar.

266
00:12:58,320 --> 00:12:59,153
‫OK?

267
00:12:59,153 --> 00:13:01,750
‫Portanto, as boas-vindas serão coladas aqui no

268
00:13:01,750 --> 00:13:06,060
‫modelo e, em seguida, ele irá obter esse arquivo da pasta de visualizações.

269
00:13:06,060 --> 00:13:06,893
‫Direito?

270
00:13:06,893 --> 00:13:08,710
‫Então, esse é o primeiro passo.

271
00:13:08,710 --> 00:13:11,043
‫A seguir, vamos definir as opções de e-mail.

272
00:13:11,980 --> 00:13:16,980
‫Então, de agora é isso. a partir de.

273
00:13:17,110 --> 00:13:17,943
‫Lembrar?

274
00:13:19,060 --> 00:13:20,183
‫Então, bem aqui.

275
00:13:21,820 --> 00:13:23,710
‫Em

276
00:13:26,130 --> 00:13:30,200
‫seguida, temos isso. para, e também temos o

277
00:13:30,200 --> 00:13:34,230
‫assunto que é igual ao assunto que está vindo aqui,

278
00:13:34,230 --> 00:13:37,700
‫e então, sim, na verdade nem precisamos definir este

279
00:13:39,550 --> 00:13:41,383
‫e temos nosso HTML.

280
00:13:42,590 --> 00:13:45,670
‫Então assim, ou claro, isso nem

281
00:13:45,670 --> 00:13:49,213
‫é necessário porque é o mesmo nome.

282
00:13:51,760 --> 00:13:55,427
‫Agora, a seguir, também queremos incluir uma versão em

283
00:13:55,427 --> 00:13:57,960
‫texto do nosso e-mail no e-mail.

284
00:13:57,960 --> 00:13:58,793
‫OK?

285
00:13:58,793 --> 00:14:01,750
‫E isso é muito importante porque é melhor

286
00:14:01,750 --> 00:14:05,560
‫para taxas de entrega de e-mail e também para pastas de spam.

287
00:14:05,560 --> 00:14:06,670
‫Tudo bem?

288
00:14:06,670 --> 00:14:11,130
‫E também algumas pessoas preferem e-mails de texto simples em

289
00:14:11,130 --> 00:14:14,970
‫vez de e-mails em HTML mais formatados.

290
00:14:14,970 --> 00:14:15,900
‫Tudo bem?

291
00:14:15,900 --> 00:14:18,830
‫E então, basicamente, precisamos de uma maneira de

292
00:14:18,830 --> 00:14:21,560
‫converter todo o HTML em texto simples.

293
00:14:21,560 --> 00:14:25,760
‫Então, removendo todo o HTML deixando apenas o conteúdo.

294
00:14:25,760 --> 00:14:27,980
‫E para isso, vamos

295
00:14:27,980 --> 00:14:29,193
‫instalar

296
00:14:31,640 --> 00:14:36,640
‫mais um pacote, e então este se chama html-to-text.

297
00:14:40,640 --> 00:14:41,810
‫Tudo bem?

298
00:14:41,810 --> 00:14:43,133
‫Vamos incluir isso aqui,

299
00:14:46,161 --> 00:14:46,994
‫ToText.

300
00:14:50,520 --> 00:14:54,103
‫require ('html-to-text'), assim.

301
00:14:56,150 --> 00:14:57,560
‫OK?

302
00:14:57,560 --> 00:15:00,973
‫Agora vamos usar isso para converter nosso HTML.

303
00:15:03,260 --> 00:15:07,080
‫Portanto, usamos htmlToText. fromString e essa

304
00:15:09,877 --> 00:15:12,340
‫string é armazenada em HTML.

305
00:15:13,300 --> 00:15:14,133
‫Direito?

306
00:15:15,620 --> 00:15:18,230
‫Então, essas são nossas opções de e-mail, e

307
00:15:18,230 --> 00:15:21,160
‫na verdade eu esqueci algo muito, muito importante, aqui

308
00:15:21,160 --> 00:15:24,130
‫nesta primeira etapa, então neste arquivo de renderização, porque assim

309
00:15:24,130 --> 00:15:27,200
‫como com a resposta. renderizar, também podemos

310
00:15:27,200 --> 00:15:30,010
‫colar dados no arquivo de renderização.

311
00:15:30,010 --> 00:15:32,160
‫E, claro, isso é muito

312
00:15:32,160 --> 00:15:35,390
‫importante se quisermos realmente fazer ou personalizar por email

313
00:15:35,390 --> 00:15:38,283
‫com o nome e também colar a URL.

314
00:15:39,580 --> 00:15:42,590
‫E então vamos fazer exatamente como fizemos normalmente na

315
00:15:42,590 --> 00:15:44,053
‫função de renderização.

316
00:15:46,290 --> 00:15:51,290
‫Então esse é firstName, envie-o para este. firstName e o

317
00:15:53,733 --> 00:15:58,733
‫URL é este. url, e também vamos colar o

318
00:15:58,910 --> 00:16:01,300
‫assunto e você verá um pouco

319
00:16:02,260 --> 00:16:04,623
‫mais tarde porque precisamos disso.

320
00:16:06,690 --> 00:16:08,300
‫OK?

321
00:16:08,300 --> 00:16:11,210
‫Então, agora vamos finalmente criar um transporte

322
00:16:11,210 --> 00:16:13,680
‫usando nossa função de transporte criar

323
00:16:13,680 --> 00:16:15,940
‫e enviar o e-mail.

324
00:16:15,940 --> 00:16:20,867
‫Então, justo, é isso. createTransport.

325
00:16:23,670 --> 00:16:28,670
‫Então, lembre-se que este é apenas este método aqui, este, e

326
00:16:29,200 --> 00:16:30,960
‫tem exatamente o

327
00:16:30,960 --> 00:16:33,980
‫mesmo nome desta função vindo do nodemailer.

328
00:16:33,980 --> 00:16:35,450
‫Isso é um

329
00:16:35,450 --> 00:16:38,583
‫pouco confuso, então vamos chamá-lo de newTransport aqui.

330
00:16:40,380 --> 00:16:43,847
‫Ok, e aqui também é newTransport, para que seja

331
00:16:45,370 --> 00:16:47,520
‫um pouco menos confuso.

332
00:16:47,520 --> 00:16:48,500
‫Tudo bem?

333
00:16:48,500 --> 00:16:50,783
‫Agora vamos lembrar como fizemos aqui antes.

334
00:16:51,620 --> 00:16:53,330
‫Então nós tivemos

335
00:16:53,330 --> 00:16:55,700
‫nosso transportador, que criamos separadamente

336
00:16:55,700 --> 00:17:00,360
‫neste caso, e então nele encadeamos sendMail com as opções.

337
00:17:00,360 --> 00:17:04,373
‫Então, vamos pegar isso aqui, deletar todo o código restante.

338
00:17:07,220 --> 00:17:09,320
‫Então, basicamente, coloque isso aqui como uma referência.

339
00:17:10,280 --> 00:17:11,130
‫OK?

340
00:17:11,130 --> 00:17:13,123
‫Então, este transportador agora é isso.

341
00:17:16,470 --> 00:17:17,700
‫Tudo bem?

342
00:17:17,700 --> 00:17:21,170
‫E assim por diante, enviamos e-mail em cadeia e depois

343
00:17:21,170 --> 00:17:23,993
‫com as opções de e-mail que definimos aqui.

344
00:17:25,010 --> 00:17:27,040
‫Então, precisamos aguardar tudo

345
00:17:27,040 --> 00:17:30,220
‫isso, porque, claro, é uma função assíncrona.

346
00:17:30,220 --> 00:17:33,043
‫E agora vamos marcar este aqui como assíncrono.

347
00:17:34,880 --> 00:17:35,730
‫OK?

348
00:17:35,730 --> 00:17:40,083
‫E agora, também precisamos aguardar a função aqui.

349
00:17:41,490 --> 00:17:42,323
‫Tudo bem?

350
00:17:42,323 --> 00:17:46,120
‫Porque isso. enviar agora é de fato uma função assíncrona.

351
00:17:46,120 --> 00:17:49,800
‫E então aqui o aguardamos para que esta função só retorne assim

352
00:17:49,800 --> 00:17:52,000
‫que o e-mail for realmente enviado.

353
00:17:53,120 --> 00:17:56,533
‫E então, é claro, marque este também como assíncrono.

354
00:17:58,130 --> 00:17:59,380
‫Incrível.

355
00:17:59,380 --> 00:18:02,920
‫Isso é realmente tudo para esta classe.

356
00:18:02,920 --> 00:18:05,523
‫Portanto, não precisamos mais deste exemplo.

357
00:18:06,450 --> 00:18:07,283
‫OK?

358
00:18:07,283 --> 00:18:09,740
‫E assim, no próximo vídeo, iremos em

359
00:18:09,740 --> 00:18:13,570
‫frente e usaremos essa nova classe para enviar um e-mail de boas-vindas.

360
00:18:13,570 --> 00:18:16,570
‫Portanto, recapitule rapidamente o que fizemos aqui.

361
00:18:16,570 --> 00:18:18,600
‫Então, criamos uma nova classe de

362
00:18:18,600 --> 00:18:20,730
‫e-mail a partir da qual podemos criar

363
00:18:20,730 --> 00:18:23,610
‫objetos de e-mail que podemos usar para enviar e-mails reais.

364
00:18:23,610 --> 00:18:28,010
‫E para criar um novo objeto de e-mail, vamos colar o usuário e

365
00:18:28,010 --> 00:18:31,330
‫também uma URL que queremos que esteja nesse e-mail.

366
00:18:31,330 --> 00:18:35,160
‫Então, atribuímos todas essas coisas ao objeto atual e

367
00:18:35,160 --> 00:18:37,940
‫também algumas outras configurações que queremos

368
00:18:37,940 --> 00:18:41,890
‫disponibilizar, como o nome e o e-mail do remetente.

369
00:18:41,890 --> 00:18:44,000
‫Então, basicamente, abstrair essa informação

370
00:18:44,000 --> 00:18:45,990
‫da função de envio

371
00:18:45,990 --> 00:18:48,550
‫e ter tudo em um lugar central.

372
00:18:48,550 --> 00:18:51,360
‫Então, temos aqui uma nova função de

373
00:18:51,360 --> 00:18:54,290
‫transporte que torna realmente fácil criar diferentes transportes

374
00:18:54,290 --> 00:18:55,940
‫para diferentes ambientes.

375
00:18:55,940 --> 00:18:58,500
‫E assim, mais uma vez, abstraindo essa

376
00:18:58,500 --> 00:19:00,770
‫lógica da função de envio real,

377
00:19:00,770 --> 00:19:04,093
‫que deveria se preocupar apenas com o envio do e-mail.

378
00:19:05,120 --> 00:19:05,953
‫OK?

379
00:19:05,953 --> 00:19:09,500
‫Então aqui está aquela função de envio que leva em

380
00:19:09,500 --> 00:19:14,240
‫um modelo e um assunto e, com base nisso, cria o HTML a

381
00:19:14,240 --> 00:19:17,370
‫partir de um modelo pug que será definido

382
00:19:17,370 --> 00:19:19,830
‫nas opções de e-mail, que irão,

383
00:19:19,830 --> 00:19:23,150
‫no final da função, finalmente ser enviado nesta linha

384
00:19:23,150 --> 00:19:24,470
‫de código.

385
00:19:24,470 --> 00:19:25,390
‫OK?

386
00:19:25,390 --> 00:19:27,880
‫Mas não será essa função de envio

387
00:19:27,880 --> 00:19:29,950
‫que usaremos em nosso código.

388
00:19:29,950 --> 00:19:31,840
‫Em vez disso, criaremos uma

389
00:19:31,840 --> 00:19:34,183
‫função diferente para cada tipo de e-mail

390
00:19:34,183 --> 00:19:35,417
‫que desejamos enviar.

391
00:19:35,417 --> 00:19:39,380
‫E o primeiro que criei aqui é o sendWelcome.

392
00:19:39,380 --> 00:19:40,213
‫Tudo bem?

393
00:19:40,213 --> 00:19:43,440
‫E assim, para sendWelcome, basicamente predefinimos o nome

394
00:19:43,440 --> 00:19:45,420
‫do modelo como

395
00:19:45,420 --> 00:19:48,480
‫welcome e o assunto como esta string.

396
00:19:48,480 --> 00:19:49,313
‫OK?

397
00:19:49,313 --> 00:19:52,723
‫Espero que tenha feito sentido e vejo você em um segundo.

