@@ -284,35 +284,33 @@ func (h *APIHandler) EmailHandler(w http.ResponseWriter, r *http.Request) {
284
284
http .Error (w , "필수 필드가 누락되었습니다." , http .StatusBadRequest )
285
285
return
286
286
}
287
+ go func (recipients []RecipientInfo ) {
288
+ for _ , rec := range recipients {
289
+ data := map [string ]interface {}{
290
+ "name" : rec .Name ,
291
+ "email" : rec .Email ,
292
+ "year" : time .Now ().Year (),
293
+ }
287
294
288
- successCount := 0
289
- // 각 수신자에 대해 템플릿 렌더링 후 개별 이메일 발송
290
- for _ , rec := range reqData .Recipient {
291
- // 템플릿 내 플레이스홀더에 사용할 데이터 (예: {{.name}}, {{.email}}, {{.year}})
292
- data := map [string ]interface {}{
293
- "name" : rec .Name ,
294
- "email" : rec .Email ,
295
- "year" : time .Now ().Year (),
296
- }
297
-
298
- body , err := h .TemplateManager .RenderTemplate (reqData .Template , data )
299
- if err != nil {
300
- log .Printf ("템플릿 렌더링 실패 (%s): %v" , rec .Email , err )
301
- continue
302
- }
303
-
304
- go func () {
305
- if err := h .SMTPClient .SendEmail ([]string {rec .Email }, reqData .Subject , body ); err != nil {
306
- log .Printf ("이메일 발송 실패 (%s): %v" , rec .Email , err )
307
- return
295
+ body , err := h .TemplateManager .RenderTemplate (reqData .Template , data )
296
+ if err != nil {
297
+ log .Printf ("템플릿 렌더링 실패 (%s): %v" , rec .Email , err )
298
+ continue
299
+ }
300
+ for i := 0 ; i < 10 ; i ++ {
301
+ time .Sleep (10 * time .Second )
302
+ if err := h .SMTPClient .SendEmail ([]string {rec .Email }, reqData .Subject , body ); err != nil {
303
+ log .Printf ("이메일 발송 실패 (%s): %v" , rec .Email , err )
304
+ continue
305
+ }
306
+ break
308
307
}
309
308
log .Printf ("이메일 발송 성공 (%s)" , rec .Email )
310
- }()
311
- successCount ++
312
- }
309
+ }
310
+ }(reqData .Recipient )
313
311
314
312
response := map [string ]interface {}{
315
- "message" : fmt .Sprintf ("총 %d명의 수신자에게 이메일 발송에 성공했습니다 ." , successCount ),
313
+ "message" : fmt .Sprintf ("총 %d명의 수신자에게 이메일을 발송합니다 ." , len ( reqData . Recipient ) ),
316
314
}
317
315
w .Header ().Set ("Content-Type" , "application/json" )
318
316
_ = json .NewEncoder (w ).Encode (response )
0 commit comments