SMTP를 이용해 다량 메일을 보는 경우 발송 메일 html 내 건별 텍스트 대치를 하고 싶었습니다.
회원별 이름이나 닉네임 등을 변경하여 OOO님 이런 식으로 보내고 싶었어요-
Sendgrid 에서 Customizing your send 라는 걸 지원하더라구요-
{
"to": ["example@example.com", "example@example.com"],
"sub": {
"%name%": ["Ben", "Joe"]
}
}
JSON 방식으로 위 값처럼 만들어서 보내주면 됩니다~
아래 방식으로 JSONObject에 담아 String으로 변환하여 보내줍니다.
List<Map> rstList = [DB에서 받아온 데이터];
List<String> to = new ArrayList<String>(); // 받는사람 email
List<String> name = new ArrayList<String>(); // 받는사람 닉네임
for (Map map: rstList) {
if(map.get("e-mail") != null && map.get("name") != null) { // 두 값 모두 필수 이기 때문에 if문 추가
to.add(map.get("email").toString());
name.add(map.get("name").toString());
}
}
JSONObject json = new JSONObject();
JSONObject jsonSub = new JSONObject();
json.put("to", to);
jsonSub.put("%name%", name);
json.put("sub", jsonSub);
String jsonRst = json.toString();
헤더에 전달하는 방법 : message.addHeader("X-SMTPAPI", jsonRst);
Multipart multipart = new MimeMultipart("alternative");
BodyPart part = new MimeBodyPart();
message.addHeader("X-SMTPAPI", jsonRst);
part.setContent(content, "text/html; charset=utf-8");
multipart.addBodyPart(part);
message.setContent(multipart);
SMTP 를 이용한 발송은 아래 페이지를 참고해서 작성했습니다.
SendGrid 메일 서비스를 사용하는 방법(Java)
Azure에서 SendGrid 메일 서비스를 사용하여 메일을 보내는 방법을 알아봅니다. 코드 샘플은 Java로 작성되었습니다.
docs.microsoft.com
Building an X-SMTPAPI Header
Learn how to build email content, add recipients and schedule your send.
sendgrid.com
'개발자 > Sendgrid' 카테고리의 다른 글
[Sendgrid/intellij/JAVA] invalid JSON - 텍스트 대치 UTF-8 처리 (0) | 2021.05.21 |
---|---|
[Sendgrid/intellij/JAVA] unknown charset 'ms949' (0) | 2021.05.21 |
[Sendgrid/intellij/JAVA] JAVA SMTP 발송 소스 (0) | 2021.05.18 |
[Sendgrid/intellij/JAVA] API_KEY 발급 + JAVA 메일 발송 401, 403 오류 (0) | 2021.05.17 |