﻿1
00:00:00,790 --> 00:00:02,400
‫Kursleiter: Nachdem der Datei-Upload-Teil des

2
00:00:02,400 --> 00:00:03,960
‫Abschnitts abgeschlossen ist,

3
00:00:03,960 --> 00:00:07,300
‫wenden wir uns nun dem Senden von E-Mails zu.

4
00:00:07,300 --> 00:00:09,610
‫Und wir haben eigentlich schon vorher E-Mails

5
00:00:09,610 --> 00:00:13,170
‫geschickt, um das Passwort zurückzusetzen, aber in den nächsten paar Vorlesungen

6
00:00:13,170 --> 00:00:16,050
‫werden wir das auf eine ganz neue Ebene bringen.

7
00:00:16,050 --> 00:00:18,760
‫Und was wir tun werden, ist, E-Mail-Vorlagen mit

8
00:00:18,760 --> 00:00:21,350
‫Pug zu erstellen und echte E-Mails mit

9
00:00:21,350 --> 00:00:23,270
‫dem SendGrid-Dienst zu senden.

10
00:00:23,270 --> 00:00:25,220
‫Und jetzt werden wir in dieser

11
00:00:25,220 --> 00:00:27,630
‫ersten Vorlesung einen robusteren E-Mail-Handler aufbauen als den,

12
00:00:27,630 --> 00:00:29,313
‫den wir zuvor hatten.

13
00:00:30,870 --> 00:00:34,030
‫Öffnen wir also unseren Dienstprogramme-Ordner, und

14
00:00:34,030 --> 00:00:38,510
‫denken Sie daran, dass wir bereits eine E-Mail-Datei haben.

15
00:00:38,510 --> 00:00:40,100
‫Aber im Moment

16
00:00:40,100 --> 00:00:43,660
‫haben wir hier nur einen sehr einfachen E-Mail-Versand-Handler,

17
00:00:43,660 --> 00:00:46,810
‫der nicht viele Optionen aufnehmen kann.

18
00:00:46,810 --> 00:00:48,120
‫Und jetzt bauen

19
00:00:48,120 --> 00:00:50,190
‫wir hier eine viel robustere Lösung.

20
00:00:50,190 --> 00:00:51,450
‫Gut?

21
00:00:51,450 --> 00:00:53,833
‫Ich werde also eine Klasse erstellen, und

22
00:00:55,360 --> 00:00:57,503
‫diese Klasse wird E-Mail heißen.

23
00:00:58,750 --> 00:01:01,690
‫Also Modul. exports, und

24
00:01:01,690 --> 00:01:03,950
‫daher werden wir auch

25
00:01:03,950 --> 00:01:07,103
‫diese Klasse aus dieser Datei exportieren.

26
00:01:09,580 --> 00:01:13,340
‫Und dann braucht eine Klasse wie immer eine Konstruktorfunktion, die im

27
00:01:13,340 --> 00:01:16,170
‫Grunde die Funktion ist, die ausgeführt wird,

28
00:01:16,170 --> 00:01:19,300
‫wenn ein neues Objekt durch diese Klasse erstellt wird.

29
00:01:19,300 --> 00:01:20,910
‫Lassen Sie uns nun einen Blick

30
00:01:20,910 --> 00:01:23,393
‫darauf werfen, wie wir diese Klasse in der Praxis verwenden würden.

31
00:01:24,960 --> 00:01:26,770
‫Die Idee ist, diese

32
00:01:26,770 --> 00:01:28,840
‫E-Mail-Klasse zu importieren und dann

33
00:01:28,840 --> 00:01:32,960
‫so zu verwenden, wenn wir eine neue E-Mail senden möchten.

34
00:01:32,960 --> 00:01:34,713
‫Erstellen Sie also eine

35
00:01:35,970 --> 00:01:38,490
‫neue E-Mail, und dann möchten wir einen Benutzer

36
00:01:38,490 --> 00:01:41,150
‫einfügen, und dieser Benutzer enthält dann die E-Mail-Adresse

37
00:01:41,150 --> 00:01:44,563
‫und auch den Namen, falls wir die E-Mail personalisieren möchten.

38
00:01:45,800 --> 00:01:47,580
‫Und auch eine URL.

39
00:01:47,580 --> 00:01:49,120
‫Und ein gutes

40
00:01:49,120 --> 00:01:53,200
‫Beispiel hierfür ist zum Beispiel die Reset-URL zum Zurücksetzen des Passworts.

41
00:01:53,200 --> 00:01:54,033
‫Okay?

42
00:01:54,033 --> 00:01:56,660
‫Also ein neues E-Mail-Objekt, und dann wollen

43
00:01:56,660 --> 00:01:59,000
‫wir die Methode aufrufen, die die

44
00:01:59,000 --> 00:02:00,570
‫E-Mail tatsächlich versendet.

45
00:02:00,570 --> 00:02:02,843
‫Sagen wir also sendWelcome.

46
00:02:04,180 --> 00:02:07,410
‫Und so dass eines gesendet wird, wenn

47
00:02:07,410 --> 00:02:10,910
‫sich ein neuer Benutzer für unsere Anwendung anmeldet.

48
00:02:10,910 --> 00:02:11,743
‫Gut?

49
00:02:11,743 --> 00:02:14,630
‫Wir werden dann auch Passwort-Reset senden lassen.

50
00:02:14,630 --> 00:02:16,480
‫Und die Art und Weise,

51
00:02:16,480 --> 00:02:18,950
‫wie wir all dies einrichten, wird es wirklich

52
00:02:18,950 --> 00:02:21,490
‫einfach machen, dann immer neue und neue Methoden ähnlich

53
00:02:21,490 --> 00:02:24,450
‫dieser hinzuzufügen, um verschiedene E-Mails für verschiedene Szenarien zu senden.

54
00:02:24,450 --> 00:02:25,370
‫Gut?

55
00:02:25,370 --> 00:02:28,400
‫Wie auch immer, da wir den Benutzer und

56
00:02:28,400 --> 00:02:31,670
‫die URL in eine neue E-Mail einfügen, muss unser Konstruktor

57
00:02:31,670 --> 00:02:33,633
‫diese dann als Argumente aufnehmen.

58
00:02:34,720 --> 00:02:36,560
‫Also Benutzer und URL.

59
00:02:36,560 --> 00:02:40,340
‫Und was in diesem Konstruktor passiert, ist, dass dies. zu wird

60
00:02:43,020 --> 00:02:47,130
‫gleich dem Benutzer sein. email Dann wollen

61
00:02:49,926 --> 00:02:53,210
‫wir auch noch den Vornamen des Benutzers

62
00:02:53,210 --> 00:02:56,433
‫definieren, um die Email grundsätzlich zu personalisieren.

63
00:02:59,903 --> 00:03:03,170
‫Und das ist der Benutzer. name und teilen

64
00:03:03,170 --> 00:03:08,170
‫wir es auf und nehmen nur das erste Element im resultierenden Array.

65
00:03:09,530 --> 00:03:11,210
‫Also haben wir das

66
00:03:11,210 --> 00:03:16,210
‫schon mal gemacht, aber dann auch das. url ist gleich der eingehenden URL.

67
00:03:17,010 --> 00:03:22,010
‫Schließlich legen wir auch dies fest. von hier.

68
00:03:22,500 --> 00:03:24,450
‫also grundsätzlich auf Objektebene.

69
00:03:24,450 --> 00:03:26,970
‫Jedes aus dieser Klasse erstellte Objekt

70
00:03:26,970 --> 00:03:28,830
‫erhält dann diese Eigenschaft.

71
00:03:28,830 --> 00:03:32,720
‫Und so wird dieses ähnlich dem sein, was wir hier haben.

72
00:03:32,720 --> 00:03:35,020
‫Es ist also im Grunde genommen davon, also

73
00:03:35,020 --> 00:03:36,760
‫kopieren wir es einfach, aber

74
00:03:36,760 --> 00:03:40,230
‫es ist schön, es an einem zentralen Ort wie diesem zu haben.

75
00:03:40,230 --> 00:03:42,200
‫Was ich jetzt wirklich machen

76
00:03:42,200 --> 00:03:45,090
‫möchte, ist, diese E-Mail-Adresse hier im Grunde als

77
00:03:45,090 --> 00:03:46,770
‫Konfigurationsvariable zu definieren,

78
00:03:46,770 --> 00:03:48,740
‫und damit als Umgebungsvariable, die

79
00:03:48,740 --> 00:03:50,440
‫wir sehr einfach durch

80
00:03:50,440 --> 00:03:54,073
‫Manipulation der Konfiguration ändern können. env-Datei.

81
00:03:55,774 --> 00:03:56,607
‫Gut?

82
00:03:57,940 --> 00:04:00,100
‫Nennen wir dies also EMAIL_FROM.

83
00:04:02,490 --> 00:04:06,530
‫Und dann wollen wir nur die E-Mail-Adresse selbst.

84
00:04:06,530 --> 00:04:07,363
‫Gut?

85
00:04:08,560 --> 00:04:10,840
‫Also ein weiterer Fall, in dem es sehr

86
00:04:10,840 --> 00:04:12,353
‫hilfreich ist, Umgebungsvariablen zu verwenden.

87
00:04:13,260 --> 00:04:15,360
‫Und jetzt machen wir dies zu einer Vorlagenzeichenfolge.

88
00:04:18,400 --> 00:04:20,840
‫Und natürlich hier reinstecken.

89
00:04:20,840 --> 00:04:23,153
‫Das ist also der Prozess. env. E-MAIL VON.

90
00:04:28,540 --> 00:04:30,930
‫Als nächstes erstellen wir hier eine Methode,

91
00:04:30,930 --> 00:04:33,230
‫um den Transport zu erstellen.

92
00:04:33,230 --> 00:04:35,563
‫So ähnlich wie hier.

93
00:04:37,640 --> 00:04:39,347
‫Erstellen Sie also Transport.

94
00:04:43,450 --> 00:04:46,280
‫Und jetzt wollen wir hier eigentlich unterschiedliche Transporte haben, egal

95
00:04:46,280 --> 00:04:48,890
‫ob wir in der Produktion sind oder nicht.

96
00:04:48,890 --> 00:04:50,170
‫Wenn wir also

97
00:04:50,170 --> 00:04:52,470
‫in der Produktion sind, möchten wir eigentlich

98
00:04:52,470 --> 00:04:55,540
‫echte E-Mails senden, und das werden wir etwas später mit SendGrid

99
00:04:55,540 --> 00:04:57,890
‫tun, aber wenn wir nicht in der Produktion

100
00:04:57,890 --> 00:05:00,730
‫sind, möchten wir unsere Mailtrap-Anwendung immer noch so verwenden, wie

101
00:05:00,730 --> 00:05:03,270
‫wir es zuvor getan haben wir versenden E-Mails.

102
00:05:03,270 --> 00:05:07,020
‫Anstatt die E-Mail an eine echte E-Mail-Adresse zu senden,

103
00:05:07,020 --> 00:05:10,730
‫wird sie also in unserem Mailtrap-Posteingang gespeichert, sodass wir

104
00:05:10,730 --> 00:05:12,260
‫sie in unserem

105
00:05:12,260 --> 00:05:13,843
‫Entwicklungsprozess tatsächlich überprüfen können.

106
00:05:14,950 --> 00:05:18,343
‫Dieser Transporter ist also genau derselbe wie dieser, also kopieren wir ihn

107
00:05:19,870 --> 00:05:25,277
‫einfach, aber zuerst sagen wir if(process.

108
00:05:25,277 --> 00:05:25,277
‫env. NODE_ENV).

109
00:05:30,360 --> 00:05:32,360
‫Denken Sie also daran, dass wir so überprüft haben,

110
00:05:32,360 --> 00:05:34,110
‫ob wir in Produktion sind oder nicht.

111
00:05:36,390 --> 00:05:38,230
‫Wenn das also in Produktion

112
00:05:38,230 --> 00:05:39,620
‫ist, und wenn

113
00:05:39,620 --> 00:05:43,830
‫wir in Produktion sind, möchten wir einen Transporter für SendGrid erstellen.

114
00:05:43,830 --> 00:05:45,890
‫Lassen Sie uns das einfach hier setzen, und das

115
00:05:45,890 --> 00:05:47,613
‫werden wir später noch einmal tun.

116
00:05:49,170 --> 00:05:51,410
‫Lassen Sie uns erst einmal etwas von hier zurückgeben.

117
00:05:51,410 --> 00:05:53,133
‫Egal, sagen wir mal.

118
00:05:54,680 --> 00:05:55,513
‫Gut?

119
00:05:56,750 --> 00:05:58,840
‫Und dann wollen wir im Grunde

120
00:05:58,840 --> 00:06:02,493
‫sonst diesen Nodemailer zurückgeben. Transport erstellen.

121
00:06:05,166 --> 00:06:05,999
‫Okay?

122
00:06:05,999 --> 00:06:06,840
‫Dieser Transport

123
00:06:06,840 --> 00:06:11,293
‫hier wird also im Grunde einen neuen Nodemailer-Transport wie diesen zurückgeben.

124
00:06:12,280 --> 00:06:14,660
‫Oder andererseits, wenn wir in der

125
00:06:14,660 --> 00:06:17,333
‫Produktion sind, dann der, der hier sein wird.

126
00:06:18,500 --> 00:06:19,333
‫Okay?

127
00:06:19,333 --> 00:06:21,020
‫Also lass es uns hier wirklich löschen.

128
00:06:23,930 --> 00:06:26,773
‫Auch diese möchten wir löschen.

129
00:06:32,970 --> 00:06:35,480
‫Und jetzt erstellen wir die send-Methode.

130
00:06:35,480 --> 00:06:37,520
‫Dies wird also die Methode

131
00:06:37,520 --> 00:06:39,610
‫sein, die das eigentliche Senden durchführt.

132
00:06:39,610 --> 00:06:40,443
‫Okay?

133
00:06:40,443 --> 00:06:43,650
‫Und dieser bekommt eine Vorlage und einen Betreff.

134
00:06:43,650 --> 00:06:45,150
‫Und Sie werden etwas besser

135
00:06:45,150 --> 00:06:48,003
‫verstehen, warum das so ist, wenn diese gesamte Klasse abgeschlossen ist.

136
00:06:49,270 --> 00:06:50,103
‫Okay?

137
00:06:51,550 --> 00:06:53,513
‫Also Vorlage und Betreff.

138
00:06:56,050 --> 00:06:58,553
‫Lassen Sie uns hier einen Kommentar dazu abgeben, was dies bewirken wird.

139
00:07:01,170 --> 00:07:03,600
‫Und jetzt, bevor wir diese Funktion tatsächlich schreiben, möchte

140
00:07:03,600 --> 00:07:05,690
‫ich Ihnen zeigen, wie wir sie verwenden

141
00:07:05,690 --> 00:07:08,753
‫werden und warum wir die Vorlage und den Betreff hier brauchen.

142
00:07:10,890 --> 00:07:12,893
‫Denken Sie also daran, wie

143
00:07:12,893 --> 00:07:16,890
‫wir hier oben gesagt haben, dass wir eine Methode namens sendWelcome

144
00:07:16,890 --> 00:07:21,890
‫haben werden, und auch eine Methode zum Senden einer E-Mail zum Zurücksetzen des Passworts.

145
00:07:21,900 --> 00:07:26,353
‫Also, fügen wir das jetzt tatsächlich hier hinzu, also sendWelcome.

146
00:07:28,460 --> 00:07:31,430
‫Und dieser erhält kein Argument und alles, was er wirklich

147
00:07:31,430 --> 00:07:34,410
‫tut, ist der Aufruf von send mit der Vorlage und

148
00:07:35,470 --> 00:07:37,030
‫dem Betreff, den wir

149
00:07:37,030 --> 00:07:38,690
‫für diese E-Mail haben möchten.

150
00:07:38,690 --> 00:07:39,523
‫Okay?

151
00:07:39,523 --> 00:07:41,800
‫Dies macht es wiederum sehr einfach,

152
00:07:41,800 --> 00:07:43,370
‫verschiedene E-Mails für

153
00:07:43,370 --> 00:07:45,480
‫alle möglichen Situationen zu erstellen.

154
00:07:45,480 --> 00:07:46,550
‫Okay?

155
00:07:46,550 --> 00:07:49,297
‫Wir haben also diese eine Route-Sendefunktion

156
00:07:49,297 --> 00:07:51,790
‫hier und dann all diese

157
00:07:51,790 --> 00:07:55,100
‫spezifischeren, die dann wiederum die Router-Sendefunktion aufrufen, die

158
00:07:55,100 --> 00:07:57,150
‫die eigentliche Arbeit erledigt.

159
00:07:57,150 --> 00:07:58,500
‫Okay?

160
00:07:58,500 --> 00:08:01,950
‫Und hier ist es tatsächlich. send weil natürlich

161
00:08:01,950 --> 00:08:03,970
‫diese Methoden hier sind, sie

162
00:08:03,970 --> 00:08:06,600
‫werden für das aktuelle Objekt definiert.

163
00:08:06,600 --> 00:08:07,643
‫Und das ist es.

164
00:08:09,530 --> 00:08:12,113
‫Dann fügen wir hier den Vorlagennamen ein.

165
00:08:14,280 --> 00:08:16,630
‫Und so wird dieser Vorlagenname, den ich hier

166
00:08:16,630 --> 00:08:19,020
‫eingegeben habe, in Zukunft eine Mops-Vorlage sein, die

167
00:08:19,020 --> 00:08:20,280
‫wir erstellen werden.

168
00:08:20,280 --> 00:08:22,320
‫In der nächsten Vorlesung werden

169
00:08:22,320 --> 00:08:24,600
‫wir also diese Mops-Vorlage erstellen, um

170
00:08:24,600 --> 00:08:26,523
‫diese Willkommens-E-Mail zu senden.

171
00:08:27,710 --> 00:08:28,543
‫Okay?

172
00:08:28,543 --> 00:08:29,763
‫Und dann nur noch die Betreffzeile.

173
00:08:31,250 --> 00:08:35,320
‫Sagen wir „Willkommen in der Familie Natours! ' Und

174
00:08:37,550 --> 00:08:40,920
‫so müssen wir uns beim eigentlichen

175
00:08:40,920 --> 00:08:43,210
‫Versenden der E-Mail um

176
00:08:43,210 --> 00:08:45,260
‫keine Implementierungsdetails kümmern.

177
00:08:45,260 --> 00:08:47,290
‫So müssen wir uns zum

178
00:08:47,290 --> 00:08:49,510
‫Beispiel an dem Punkt unseres Codes,

179
00:08:49,510 --> 00:08:51,900
‫an dem wir die Willkommens-E-Mail senden möchten,

180
00:08:51,900 --> 00:08:54,130
‫nicht um Vorlagennamen oder Betreffzeilen kümmern.

181
00:08:54,130 --> 00:08:57,130
‫Alles, was wir tun werden, ist zu sagen, Willkommens-E-Mail senden

182
00:08:57,130 --> 00:08:58,260
‫und das war's.

183
00:08:58,260 --> 00:09:00,380
‫Und dann kümmert

184
00:09:00,380 --> 00:09:03,563
‫sich unsere Klasse um die Umsetzung.

185
00:09:04,880 --> 00:09:05,780
‫Gut?

186
00:09:05,780 --> 00:09:09,023
‫Wie auch immer, lassen Sie uns nun tatsächlich diese Sendefunktion bauen.

187
00:09:10,180 --> 00:09:14,560
‫Was wir also in dieser Funktion tun werden,

188
00:09:14,560 --> 00:09:19,560
‫ist zuerst den HTML-Code für die E-Mail basierend auf einer

189
00:09:20,820 --> 00:09:22,663
‫Mops-Vorlage zu rendern.

190
00:09:25,650 --> 00:09:27,550
‫Also im Grunde diejenige,

191
00:09:27,550 --> 00:09:29,823
‫die wir hier mit Vorlage einfügen.

192
00:09:31,750 --> 00:09:34,533
‫Definieren Sie dann die E-Mail-Optionen, und

193
00:09:36,570 --> 00:09:40,883
‫das wird wieder dieser hier sehr ähnlich sein, und lassen

194
00:09:41,750 --> 00:09:43,530
‫Sie mich es

195
00:09:43,530 --> 00:09:46,453
‫von hier aus ausschneiden und hier einfügen.

196
00:09:48,130 --> 00:09:49,000
‫Okay?

197
00:09:49,000 --> 00:09:51,600
‫Natürlich wird es nicht genau dasselbe sein, aber

198
00:09:51,600 --> 00:09:53,573
‫das belassen wir etwas später.

199
00:09:54,500 --> 00:09:55,333
‫Gut?

200
00:09:55,333 --> 00:09:56,323
‫Und schließlich,

201
00:09:58,690 --> 00:10:01,423
‫Erstellen Sie einen Transport und senden Sie eine E-Mail.

202
00:10:06,930 --> 00:10:07,880
‫Okay?

203
00:10:07,880 --> 00:10:10,530
‫Und das lasse ich auch für später.

204
00:10:13,120 --> 00:10:15,440
‫Also, beginnend mit Punkt Nummer eins.

205
00:10:15,440 --> 00:10:18,670
‫Und normalerweise verwenden wir bis zu diesem Punkt immer nur

206
00:10:18,670 --> 00:10:20,160
‫pug, um eine Vorlage

207
00:10:20,160 --> 00:10:22,370
‫zu erstellen, und übergeben dann den

208
00:10:22,370 --> 00:10:24,780
‫Namen der Vorlage an die Render-Funktion der Antwort.

209
00:10:24,780 --> 00:10:25,870
‫Richtig.

210
00:10:25,870 --> 00:10:27,820
‫Also haben wir es immer nur so

211
00:10:29,890 --> 00:10:31,723
‫verwendet res. render, und

212
00:10:31,723 --> 00:10:33,630
‫dann hier den Namen der Vorlage.

213
00:10:33,630 --> 00:10:34,810
‫Richtig?

214
00:10:34,810 --> 00:10:37,370
‫Und was diese Render-Funktion hinter den Kulissen macht,

215
00:10:37,370 --> 00:10:41,200
‫ist, im Grunde den HTML-Code basierend auf dem Mops-Template zu erstellen und

216
00:10:41,200 --> 00:10:43,450
‫dann an den Client zu senden.

217
00:10:43,450 --> 00:10:46,840
‫Nun wollen wir in diesem Fall nicht wirklich rendern,

218
00:10:46,840 --> 00:10:50,400
‫sondern wir wollen im Grunde den HTML-Code aus dem

219
00:10:50,400 --> 00:10:53,960
‫Template erstellen, damit wir diesen HTML-Code dann als E-Mail

220
00:10:53,960 --> 00:10:55,110
‫versenden können.

221
00:10:55,110 --> 00:10:58,520
‫Definieren Sie es also im Grunde hier als HTML-Option

222
00:10:58,520 --> 00:11:00,070
‫in diesen Mail-Optionen.

223
00:11:00,070 --> 00:11:00,960
‫Okay?

224
00:11:00,960 --> 00:11:04,900
‫Denken Sie also daran, wie wir Text und HTML angeben können.

225
00:11:04,900 --> 00:11:08,790
‫Und hauptsächlich sind wir daran interessiert, eine HTML-E-Mail zu versenden.

226
00:11:08,790 --> 00:11:11,340
‫Deshalb haben wir ein Mops-Template, aus

227
00:11:11,340 --> 00:11:13,843
‫dem wir diesen HTML-Code generieren.

228
00:11:15,130 --> 00:11:16,120
‫Okay?

229
00:11:16,120 --> 00:11:18,720
‫Es wird also nicht so funktionieren, aber

230
00:11:18,720 --> 00:11:20,770
‫stattdessen brauchen wir hier tatsächlich

231
00:11:20,770 --> 00:11:22,173
‫das Mops-Paket.

232
00:11:24,560 --> 00:11:25,443
‫Also,

233
00:11:27,200 --> 00:11:28,780
‫Mops so, und dann

234
00:11:28,780 --> 00:11:32,600
‫müssen wir Mops verwenden.

235
00:11:32,600 --> 00:11:32,600
‫renderDatei.

236
00:11:36,890 --> 00:11:37,723
‫Okay?

237
00:11:37,723 --> 00:11:39,490
‫Dies nimmt die Datei

238
00:11:39,490 --> 00:11:42,450
‫auf und rendert dann den Mops-Code in echtes HTML.

239
00:11:42,450 --> 00:11:43,283
‫Okay?

240
00:11:43,283 --> 00:11:48,120
‫Und damit können wir dann in einem variablen HTML speichern.

241
00:11:48,120 --> 00:11:48,953
‫Gut?

242
00:11:49,870 --> 00:11:52,330
‫Also, wo ist diese Datei?

243
00:11:52,330 --> 00:11:55,173
‫Nun, es befindet sich in dirname, also

244
00:11:56,460 --> 00:11:58,500
‫D-I-R-Name, der sich an den

245
00:11:58,500 --> 00:12:00,120
‫Speicherort des

246
00:12:00,120 --> 00:12:01,960
‫derzeit ausgeführten Skripts erinnert,

247
00:12:01,960 --> 00:12:05,133
‫und das heißt jetzt in diesem Dienstprogrammordner.

248
00:12:06,570 --> 00:12:07,403
‫Okay?

249
00:12:07,403 --> 00:12:10,223
‫Von dort aus müssen wir also einen Schritt nach oben

250
00:12:12,010 --> 00:12:16,000
‫gehen, dann zu Ansichten gehen und von dort aus in einen E-Mail-Ordner, den wir

251
00:12:16,860 --> 00:12:18,950
‫ebenfalls in einer Sekunde erstellen werden.

252
00:12:18,950 --> 00:12:19,783
‫Und

253
00:12:19,783 --> 00:12:22,103
‫dann haben wir dort die Vorlagendatei.

254
00:12:23,450 --> 00:12:28,650
‫Also Vorlage}.

255
00:12:28,650 --> 00:12:28,650
‫Mops.

256
00:12:28,650 --> 00:12:32,340
‫Für die Willkommens-E-Mail heißt diese Vorlage

257
00:12:32,340 --> 00:12:34,180
‫also willkommen.

258
00:12:34,180 --> 00:12:38,920
‫Und so erstellen wir das jetzt tatsächlich hier in den Ansichten, erstellen einen

259
00:12:38,920 --> 00:12:40,293
‫neuen Ordner, eine

260
00:12:42,910 --> 00:12:45,623
‫E-Mail und dann dort eine neue Datei,

261
00:12:47,730 --> 00:12:48,677
‫willkommen. Mops.

262
00:12:49,784 --> 00:12:50,660
‫Okay?

263
00:12:50,660 --> 00:12:52,860
‫Und wir werden diese Vorlage in diesem

264
00:12:52,860 --> 00:12:56,130
‫Video nicht wirklich erstellen, aber ich wollte Ihnen nur zeigen,

265
00:12:56,130 --> 00:12:58,320
‫wie das alles funktionieren wird.

266
00:12:58,320 --> 00:12:59,153
‫Okay?

267
00:12:59,153 --> 00:13:01,750
‫Diese Begrüßung wird also hier in die

268
00:13:01,750 --> 00:13:06,060
‫Vorlage eingefügt und dann wird diese Datei aus dem Ordner "Ansichten" abgerufen.

269
00:13:06,060 --> 00:13:06,893
‫Richtig?

270
00:13:06,893 --> 00:13:08,710
‫Das ist also der erste Schritt.

271
00:13:08,710 --> 00:13:11,043
‫Als Nächstes definieren wir die E-Mail-Optionen.

272
00:13:11,980 --> 00:13:16,980
‫Also, ab jetzt ist das. von.

273
00:13:17,110 --> 00:13:17,943
‫Merken?

274
00:13:19,060 --> 00:13:20,183
‫Also gleich hier.

275
00:13:21,820 --> 00:13:23,710
‫Als nächstes

276
00:13:26,130 --> 00:13:30,200
‫haben wir das hier. zu, und wir haben auch den

277
00:13:30,200 --> 00:13:34,230
‫Betreff, der gleich dem Betreff ist, der hier reinkommt, und also,

278
00:13:34,230 --> 00:13:37,700
‫yah, eigentlich brauchen wir diesen nicht einmal zu definieren und

279
00:13:39,550 --> 00:13:41,383
‫wir haben unseren HTML-Code.

280
00:13:42,590 --> 00:13:45,670
‫Also so oder natürlich ist das

281
00:13:45,670 --> 00:13:49,213
‫nicht einmal notwendig, weil es der gleiche Name ist.

282
00:13:51,760 --> 00:13:55,427
‫Als nächstes wollen wir auch eine Textversion unserer

283
00:13:55,427 --> 00:13:57,960
‫E-Mail in die E-Mail einfügen.

284
00:13:57,960 --> 00:13:58,793
‫Okay?

285
00:13:58,793 --> 00:14:01,750
‫Und das ist eigentlich sehr wichtig,

286
00:14:01,750 --> 00:14:05,560
‫denn es ist besser für E-Mail-Zustellraten und auch für Spam-Ordner.

287
00:14:05,560 --> 00:14:06,670
‫Gut?

288
00:14:06,670 --> 00:14:11,130
‫Und einige Leute bevorzugen einfache einfache Text-E-Mails

289
00:14:11,130 --> 00:14:14,970
‫anstelle von stärker formatierten HTML-E-Mails.

290
00:14:14,970 --> 00:14:15,900
‫Gut?

291
00:14:15,900 --> 00:14:18,830
‫Im Grunde brauchen wir also eine Möglichkeit, den

292
00:14:18,830 --> 00:14:21,560
‫gesamten HTML-Code in einfachen Text umzuwandeln.

293
00:14:21,560 --> 00:14:25,760
‫Entfernen Sie also den gesamten HTML-Code und lassen Sie nur den Inhalt zurück.

294
00:14:25,760 --> 00:14:27,980
‫Und dafür werden wir

295
00:14:27,980 --> 00:14:29,193
‫noch

296
00:14:31,640 --> 00:14:36,640
‫ein weiteres Paket installieren, und daher heißt dieses html-to-text.

297
00:14:40,640 --> 00:14:41,810
‫Gut?

298
00:14:41,810 --> 00:14:43,133
‫Nehmen wir das hier

299
00:14:46,161 --> 00:14:46,994
‫auf, ToText.

300
00:14:50,520 --> 00:14:54,103
‫require('html-to-text'), wie folgt.

301
00:14:56,150 --> 00:14:57,560
‫Okay?

302
00:14:57,560 --> 00:15:00,973
‫Verwenden wir das nun, um unseren HTML-Code zu konvertieren.

303
00:15:03,260 --> 00:15:07,080
‫Also verwenden wir htmlToText. fromString und dann

304
00:15:09,877 --> 00:15:12,340
‫wird diese Zeichenfolge in HTML gespeichert.

305
00:15:13,300 --> 00:15:14,133
‫Richtig?

306
00:15:15,620 --> 00:15:18,230
‫Das sind also unsere Mail-Optionen, und tatsächlich

307
00:15:18,230 --> 00:15:21,160
‫habe ich etwas sehr, sehr Wichtiges vergessen, hier in

308
00:15:21,160 --> 00:15:24,130
‫diesem ersten Schritt, also in dieser Renderdatei, denn genau

309
00:15:24,130 --> 00:15:27,200
‫wie bei der Antwort. rendern, wir können

310
00:15:27,200 --> 00:15:30,010
‫auch Daten in die Renderdatei einfügen.

311
00:15:30,010 --> 00:15:32,160
‫Und das ist natürlich sehr

312
00:15:32,160 --> 00:15:35,390
‫wichtig, wenn wir tatsächlich eine E-Mail-Personalisierung mit dem Namen

313
00:15:35,390 --> 00:15:38,283
‫durchführen und auch die URL einfügen möchten.

314
00:15:39,580 --> 00:15:42,590
‫Also machen wir es so wie wir es normalerweise in

315
00:15:42,590 --> 00:15:44,053
‫der Render-Funktion gemacht haben.

316
00:15:46,290 --> 00:15:51,290
‫Das ist also firstName, schick es an dieses. firstName, und die

317
00:15:53,733 --> 00:15:58,733
‫URL lautet diese. url, und fügen wir auch den Betreff

318
00:15:58,910 --> 00:16:01,300
‫ein und Sie werden etwas später

319
00:16:02,260 --> 00:16:04,623
‫sehen, warum wir das brauchen.

320
00:16:06,690 --> 00:16:08,300
‫Okay?

321
00:16:08,300 --> 00:16:11,210
‫Lassen Sie uns nun endlich einen Transport mit

322
00:16:11,210 --> 00:16:13,680
‫unserer Funktion zum Erstellen von Transporten erstellen

323
00:16:13,680 --> 00:16:15,940
‫und dann die E-Mail senden.

324
00:16:15,940 --> 00:16:20,867
‫Also, fair genug, das ist es. Transport erstellen.

325
00:16:23,670 --> 00:16:28,670
‫Denken Sie also daran, dass dies nur diese Methode hier ist, diese, und sie

326
00:16:29,200 --> 00:16:30,960
‫hat genau den gleichen

327
00:16:30,960 --> 00:16:33,980
‫Namen wie diese Funktion hier, die von nodemailer stammt.

328
00:16:33,980 --> 00:16:35,450
‫Das ist etwas

329
00:16:35,450 --> 00:16:38,583
‫verwirrend, also nennen wir es hier newTransport.

330
00:16:40,380 --> 00:16:43,847
‫Okay, und das ist hier auch newTransport, damit es

331
00:16:45,370 --> 00:16:47,520
‫etwas weniger verwirrend ist.

332
00:16:47,520 --> 00:16:48,500
‫Gut?

333
00:16:48,500 --> 00:16:50,783
‫Erinnern wir uns nun daran, wie wir es hier zuvor gemacht haben.

334
00:16:51,620 --> 00:16:53,330
‫Wir hatten also unseren

335
00:16:53,330 --> 00:16:55,700
‫Transporter, den wir in diesem Fall

336
00:16:55,700 --> 00:17:00,360
‫separat erstellt haben, und daran haben wir dann sendMail mit den Optionen angekettet.

337
00:17:00,360 --> 00:17:04,373
‫Also greifen wir das hier einfach auf und löschen den restlichen Code.

338
00:17:07,220 --> 00:17:09,320
‫Setzen Sie das also im Grunde hier als Referenz.

339
00:17:10,280 --> 00:17:11,130
‫Okay?

340
00:17:11,130 --> 00:17:13,123
‫Dieser Transporter ist jetzt also dieser.

341
00:17:16,470 --> 00:17:17,700
‫Gut?

342
00:17:17,700 --> 00:17:21,170
‫Und dann geht es weiter, wir verketten E-Mail und dann

343
00:17:21,170 --> 00:17:23,993
‫mit den E-Mail-Optionen, die wir hier definiert haben.

344
00:17:25,010 --> 00:17:27,040
‫Dann müssen wir all dies

345
00:17:27,040 --> 00:17:30,220
‫abwarten, da es sich natürlich um eine asynchrone Funktion handelt.

346
00:17:30,220 --> 00:17:33,043
‫Lassen Sie uns diesen hier nun als asynchron markieren.

347
00:17:34,880 --> 00:17:35,730
‫Okay?

348
00:17:35,730 --> 00:17:40,083
‫Also müssen wir jetzt auch hier auf die Funktion warten.

349
00:17:41,490 --> 00:17:42,323
‫Gut?

350
00:17:42,323 --> 00:17:46,120
‫Weil das. send ist nun tatsächlich eine asynchrone Funktion.

351
00:17:46,120 --> 00:17:49,800
‫Und so warten wir hier darauf, dass diese Funktion erst zurückkehrt,

352
00:17:49,800 --> 00:17:52,000
‫sobald die E-Mail tatsächlich gesendet wurde.

353
00:17:53,120 --> 00:17:56,533
‫Und so markieren Sie natürlich auch diesen als asynchron.

354
00:17:58,130 --> 00:17:59,380
‫Genial.

355
00:17:59,380 --> 00:18:02,920
‫Das war's eigentlich für diese Klasse.

356
00:18:02,920 --> 00:18:05,523
‫Wir brauchen dieses Beispiel also nicht mehr.

357
00:18:06,450 --> 00:18:07,283
‫Okay?

358
00:18:07,283 --> 00:18:09,740
‫Und so werden wir im nächsten Video

359
00:18:09,740 --> 00:18:13,570
‫dann tatsächlich diese neue Klasse verwenden, um eine Willkommens-E-Mail zu senden.

360
00:18:13,570 --> 00:18:16,570
‫Fassen Sie also kurz zusammen, was wir hier gemacht haben.

361
00:18:16,570 --> 00:18:18,600
‫Also haben wir eine neue E-Mail-Klasse

362
00:18:18,600 --> 00:18:20,730
‫erstellt, aus der wir E-Mail-Objekte erstellen können,

363
00:18:20,730 --> 00:18:23,610
‫die wir dann zum Senden von E-Mails verwenden können.

364
00:18:23,610 --> 00:18:28,010
‫Und um ein neues E-Mail-Objekt zu erstellen, fügen wir den Benutzer und auch eine

365
00:18:28,010 --> 00:18:31,330
‫URL ein, die in dieser E-Mail enthalten sein soll.

366
00:18:31,330 --> 00:18:35,160
‫Also weisen wir hier all das Zeug dem aktuellen Objekt zu

367
00:18:35,160 --> 00:18:37,940
‫und auch einige andere Einstellungen, die wir

368
00:18:37,940 --> 00:18:41,890
‫verfügbar haben möchten, wie zum Beispiel den Vornamen und die Absender-E-Mail.

369
00:18:41,890 --> 00:18:44,000
‫Im Grunde also, diese Informationen von

370
00:18:44,000 --> 00:18:45,990
‫der Sendefunktion zu abstrahieren und

371
00:18:45,990 --> 00:18:48,550
‫alles an einem zentralen Ort zu haben.

372
00:18:48,550 --> 00:18:51,360
‫Dann haben wir hier eine neue Transportfunktion,

373
00:18:51,360 --> 00:18:54,290
‫die es wirklich einfach macht, verschiedene Transporte für

374
00:18:54,290 --> 00:18:55,940
‫verschiedene Umgebungen zu erstellen.

375
00:18:55,940 --> 00:18:58,500
‫Und so wird diese Logik noch einmal

376
00:18:58,500 --> 00:19:00,770
‫von der eigentlichen Sendefunktion abstrahiert, die

377
00:19:00,770 --> 00:19:04,093
‫sich nur um das Senden der E-Mail kümmern sollte.

378
00:19:05,120 --> 00:19:05,953
‫Okay?

379
00:19:05,953 --> 00:19:09,500
‫Hier ist also die Sendefunktion, die eine Vorlage

380
00:19:09,500 --> 00:19:14,240
‫und einen Betreff aufnimmt, und basierend darauf erstellt sie den HTML-Code

381
00:19:14,240 --> 00:19:17,370
‫aus einer Mops-Vorlage, die dann in die

382
00:19:17,370 --> 00:19:19,830
‫E-Mail-Optionen gesetzt wird, die am

383
00:19:19,830 --> 00:19:23,150
‫Ende der Funktion dann endlich in dieser Codezeile

384
00:19:23,150 --> 00:19:24,470
‫gesendet werden.

385
00:19:24,470 --> 00:19:25,390
‫Okay?

386
00:19:25,390 --> 00:19:27,880
‫Aber es wird nicht diese Sendefunktion sein, die

387
00:19:27,880 --> 00:19:29,950
‫wir in unserem Code verwenden werden.

388
00:19:29,950 --> 00:19:31,840
‫Stattdessen erstellen wir für jede

389
00:19:31,840 --> 00:19:34,183
‫Art von E-Mail, die wir senden möchten,

390
00:19:34,183 --> 00:19:35,417
‫eine andere Funktion.

391
00:19:35,417 --> 00:19:39,380
‫Und das erste, das ich hier erstellt habe, ist sendWelcome.

392
00:19:39,380 --> 00:19:40,213
‫Gut?

393
00:19:40,213 --> 00:19:43,440
‫Für sendWelcome haben wir dann grundsätzlich den

394
00:19:43,440 --> 00:19:45,420
‫Vorlagennamen als Willkommen

395
00:19:45,420 --> 00:19:48,480
‫und den Betreff als diesen String voreingestellt.

396
00:19:48,480 --> 00:19:49,313
‫Okay?

397
00:19:49,313 --> 00:19:52,723
‫Also, ich hoffe, das hat Sinn gemacht und ich sehe dich gleich.

