728x90
반응형
이번에는 저번 글에서 구현한 내용을 확장해서 SendGrid의 Dynamic Template을 활용한 템플릿 기능을 사용해 보자!
SendGrid는 단순 이메일 전송 기능뿐 아니라 포괄적인 메일링 서비스를 제공한다. Dynamic Template은 이메일 템플릿 기능으로, 전송하는 이메일을 디자인하기에 아주 좋다. 웹 상에서 템플릿 에디터를 이용해 편집할 수 있으므로 어렵게 HTML 코드 작성을 하지 않아도 된다. 심지어 JSON을 이용해서 변수들을 템플릿에 전달해 동적으로 이메일을 생성할 수 있다!
Dashboard에서 좌측 사이드바 Email API > Dynamic Templates > Create a Dynamic Template 선택해서 템플릿을 생성할 수 있다.
이미지, 텍스트, 버튼 등 여러 모듈이 있으며 드래그해서 쉽게 배치할 수 있다. 굉장히 편함.
여기서 동적으로 내용을 생성할 수 있는데 바로 {{변수이름}} 이렇게 작성하면 변수가 된다.
위의 사진처럼 {{name}} 이 동적으로 생성되는 자리인 것이다.
Spring에서 SendGrid API로 요청을 보낼 때 JSON에 해당 값을 집어넣으면 그 값으로 내용이 들어감.
이제 코드 구현을 보자. 이전 글에서 이어진다.
application.yml
spring:
sendgrid:
from: aaa@bbb.com SendGrid에서 인증한 이메일 주소
template-id: Dynamic Template 아이디
api-key: SG.로 시작하는 API Key
SendGridUtil.java
@Component
@RequiredArgsConstructor
public class SendGridUtil {
private final SendGrid sendGrid;
@Value("${spring.sendgrid.from}")
private String fromEmail;
@Value("${spring.sendgrid.template-id}")
private String templateId;
public void sendDynamicTemplateEmail(Member member, Report report) throws IOException {
Email from = new Email(fromEmail);
Email to = new Email(member.getEmail());
Mail mail = new Mail();
mail.setFrom(from);
mail.setTemplateId(templateId);
Personalization personalization = new Personalization();
// JSON에 해당하는 값 삽입
personalization.addDynamicTemplateData("name", member.getName());
personalization.addDynamicTemplateData("link", report.getReportUri());
personalization.addTo(to);
mail.addPersonalization(personalization);
send(mail);
}
private void send(Mail mail) throws IOException {
sendGrid.addRequestHeader("X-Mock", "true");
Request request = new Request();
request.setMethod(Method.POST);
request.setEndpoint("mail/send");
request.setBody(mail.build());
Response response = sendGrid.api(request);
log.info("SendGrid Response: {}", response.getStatusCode());
log.info("SendGrid Response: {}", response.getBody());
log.info("SendGrid Response: {}", response.getHeaders());
}
}
728x90
반응형
'개발 > Spring' 카테고리의 다른 글
[Spring] Spring Boot에서 Google Cloud Storage(GCS)에 파일 업로드하기 - 2 (0) | 2024.05.23 |
---|---|
[Spring] Spring Boot에서 Google Cloud Storage(GCS)에 파일 업로드하기 - 1 (0) | 2024.05.22 |
[Spring] Spring Boot에서 SendGrid로 이메일 전송하기 - 2 (0) | 2024.05.21 |
[Spring] Spring Boot에서 SendGrid로 이메일 전송하기 - 1 (0) | 2024.05.21 |