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 를 이용한 발송은 아래 페이지를 참고해서 작성했습니다.

https://docs.microsoft.com/ko-kr/azure/store-sendgrid-java-how-to-send-email#how-to-use-the-javaxmail-libraries

 

SendGrid 메일 서비스를 사용하는 방법(Java)

Azure에서 SendGrid 메일 서비스를 사용하여 메일을 보내는 방법을 알아봅니다. 코드 샘플은 Java로 작성되었습니다.

docs.microsoft.com

 

 

 

 

 

https://sendgrid.com/docs/for-developers/sending-email/building-an-x-smtpapi-header/#customizing-your-send-filters

 

Building an X-SMTPAPI Header

Learn how to build email content, add recipients and schedule your send.

sendgrid.com

 

 

+ Recent posts