Sendgrid-nodejs: ํ…œํ”Œ๋ฆฟ mail.send ()์—์„œ ์ œ๋ชฉ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2018๋…„ 08์›” 01์ผ  ยท  26์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sendgrid/sendgrid-nodejs

๋ฌธ์ œ ์š”์•ฝ

์ด๋ฉ”์ผ์—์„œ ์ œ๋ชฉ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ

์žฌํ˜„ ๋‹จ๊ณ„

์ „ํ™” sgMail.send (seeBellow)

const seeBellow = {
  "from": "[email protected]",
  "templateId": "d-1da76d64a1bd4c8b87c035ccaa3f6cfb",
  "dynamicTemplateData": {
    "username": "[email protected]",
    "giftcardAmount": "$45",
    "validUntil": "Aug 2019",
    "receiptNumber": 111299,
    "ewayTransactionId": "00003100003509951fac7d25e8dd96e0"
  },
  "personalizations": [
    {
      "to": "[email protected]",
      "subject": "Somebody has sent you a Gift Card"
    }
  ],
  "isMultiple": false,
  "substitutionWrappers": [
    "{{",
    "}}"
  ]
}

๊ทธ ๊ฒฐ๊ณผ ๋‹ค์Œ ๊ฒŒ์‹œ๋ฌผ์ด

{
  "method": "POST",
  "url": "/v3/mail/send",
  "body": {
    "from": {
      "email": "[email protected]"
    },
    "personalizations": [
      {
        "to": [
          {
            "email": "[email protected]"
          }
        ],
        "subject": "Somebody has sent you a Gift Card",
        "dynamic_template_data": {
          "username": "[email protected]",
          "giftcardAmount": "$45",
          "validUntil": "Aug 2019",
          "receiptNumber": 111299,
          "ewayTransactionId": "00003100003509951fac7d25e8dd96e0"
        }
      }
    ],
    "template_id": "d-1da76d64a1bd4c8b87c035ccaa3f6cfb"
  }
}

๋‚˜๋Š” ๋˜ํ•œ ๊ฐœ์ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋ฉ”์‹œ์ง€ ๋ฐฐ์—ด์„ ํ†ตํ•ด 2 ๊ฐœ์˜ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ด๊ฒƒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ from ํ•„๋“œ ์˜†์— ์ฃผ์ œ๋ฅผ ๋ฐฐ์น˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์  ์„ธ๋ถ€ ์‚ฌํ•ญ:

  • lockfile์˜ sendgrid ๋ฒ„์ „ :
    "@sendgrid/mail": {
      "version": "6.3.1",
      "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-6.3.1.tgz",
      "integrity": "sha512-5zIeAV9iU+0hQkrOQ/D4RB2MfpK+lNbOortIfQdCh95aMDF/TRc9WB8FGNhmQrx9YMuJTms5eiBklF0Fi/dbVg==",
      "requires": {
        "@sendgrid/client": "6.3.0",
        "@sendgrid/helpers": "6.3.0"
      }
    },
  • Node.js ๋ฒ„์ „ : 8.11.1
unknown or a hacktoberfest help wanted bug

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผํ•ฉ๋‹ˆ๋‹ค.
"dynamic_template_data": {
"์ œ๋ชฉ": "์ œ๋ชฉ",
},

https://sendgrid.com/dynamic_templates ๋กœ ์ด๋™
TEMPLATE SETTINGS์— {{{subject}}}๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•ฉ๋‹ˆ๋‹ค : +1 :

๋ชจ๋“  26 ๋Œ“๊ธ€

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ {{subject}}์™€ ๊ฐ™์€ SendGrid์˜ ์›น ์ธํ„ฐํŽ˜์ด์Šค์— ์ œ๋ชฉ์„ ์ถ”๊ฐ€ ํ•œ ๋‹ค์Œ ์ œ๋ชฉ ๋ณ€์ˆ˜๋ฅผ dynamic_template_data ์ž…๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜๋Š” ์ฃผ์ œ์—์„œ ์ž‘๋™ํ•˜๋ฏ€๋กœ ๋ณธ์งˆ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ „์ฒด ์ฃผ์ œ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @falconmick ,

@ wbw20 ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทผ๋ณธ ์›์ธ์„ ์กฐ์‚ฌ ํ•  ๋•Œ ์‹œ๋„ํ•ด๋ณด์‹ญ์‹œ์˜ค.

@ wbw20 ,

๋„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์†”๋ฃจ์…˜์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ์ง€๋ฅผ ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์˜๋„๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งˆ์Œ์„ ๋‹ด์•„,

Elmer

FWIW, Ruby lib์—์„œ๋„ ๋น„์Šทํ•œ ๋™์ž‘์ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ด๋ฉ”์ผ ๊ฐœ์ฒด์— ์ œ๋ชฉ์„ ์„ค์ •ํ•ด๋„ ์›น ๋„๊ตฌ์˜ ํ…œํ”Œ๋ฆฟ์— ์ •์˜ ๋œ ๋‚ด์šฉ์„ ์žฌ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ธ๋“ค ๋ฐ”๋กœ ๋งŒ๋“ค๊ณ  ๊ฐ ๊ฐœ์ธํ™”์— ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋„์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‹คํŒจํ•œ ์ด์œ ๋ฅผ ์ •ํ™•ํžˆ ์ง€์ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•ด ๋ณด์ด์ง€๋งŒ ๋‹ค๋ฅธ ๋ชจ๋“  SendGrid ์ „์ž ๋ฉ”์ผ์— ๋Œ€ํ•œ ์„ค์ •์— ์–ด๊ธ‹๋‚˜ ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆํƒ€๊น์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผํ•ฉ๋‹ˆ๋‹ค.
"dynamic_template_data": {
"์ œ๋ชฉ": "์ œ๋ชฉ",
},

https://sendgrid.com/dynamic_templates ๋กœ ์ด๋™
TEMPLATE SETTINGS์— {{{subject}}}๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•ฉ๋‹ˆ๋‹ค : +1 :

@atarabbi ์˜ ์†”๋ฃจ์…˜์€ ํ•„์š”ํ•œ ๊ฒƒ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด์ด ์Šค๋ ˆ๋“œ์— ๊ณ„์† ๋Œ“๊ธ€์„ ๋‹ฌ์•„์ฃผ์„ธ์š”. ๊ฐ์‚ฌ!

@atarabbi ์˜ ์†”๋ฃจ์…˜์€ ํ•„์š”ํ•œ ๊ฒƒ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด์ด ์Šค๋ ˆ๋“œ์— ๊ณ„์† ๋Œ“๊ธ€์„ ๋‹ฌ์•„์ฃผ์„ธ์š”. ๊ฐ์‚ฌ!

๊ทธ๋Ÿฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์†Œ๋น„ํ•˜๋„๋ก ๋ฌธ์„œํ™” ๋œ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๊ถ๊ทน์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ๋‚จ์•„ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์‚ฌ๋ฌผ์ด ํ—ˆ์šฉํ•˜๋Š”๋Œ€๋กœ ์ฃผ์ œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ๊นจ์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ๊นŒ์š”?

์˜ˆ, ๋ฌธ์„œ๊ฐ€ ์ฃผ์ œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด dynamic_template_data์˜ ๋ฌธ์ œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ด๊ฒƒ๋„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๋ชฉ ์ค„์— ๋™์  ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ•˜๋Š”๋ฐ ๋ฌธ์„œ๊ฐ€ ๋†€๋ž๋„๋ก ์ผ๊ด€์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋ฌธ์„œ @baugarten ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด, ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์—†๋‹ค๋Š” ๋ง์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์„ ์ง€์  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ํŒจํ‚ค์ง€์— dynamic_template_data๋ฅผ ๋ฌธ์„œํ™” ํ•˜๊ณ 

๋˜ํ•œ ์ตœ์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ v6.3.1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

ํ™•์‹คํžˆ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ํ˜ผ๋ž€์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

FWIW Golang ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋„์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. API ํ˜ธ์ถœ์—์„œ ํ…œํ”Œ๋ฆฟ ์ œ๋ชฉ์„ ์žฌ์ •์˜ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด ๊ฑฐ๊ธฐ์—์„œ๋„ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด, ๋ฌธ์„œ๋Š” ๊ตฌ์ฒด์ ์œผ๋กœ ๊ธฐ๋ณธ ์ฃผ์ œ๊ฐ€ ๊ฐœ์ธํ™” ์ฃผ์ œ๋กœ ๋ฎ์–ด ์“ฐ์ผ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋ฉฐ ์ฃผ์ œ๋ฅผ ํ…œํ”Œ๋ฆฟ ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ๊ณผ ์ „ํ˜€ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ํŠนํžˆ ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ. ํ…œํ”Œ๋ฆฟ์— ์‚ฌ์šฉํ•  ์ˆ˜์—†๋Š” ๊ฐœ์ธํ™”์— ์ฃผ์ œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฌธ์„œํ™” ๋œ ๋™์ž‘ ์ผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๊ฒฝ์šฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š”์ด๋ฅผ dynamic_template_data ํ•˜์œ„ ๊ฐœ์ฒด์— ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด๊ฒƒ์— ๋ถ€๋”ช์ณ ์ฃผ์ œ๋ฅผ ๋ฎ์–ด ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์ œ๋ฅผ 'dynamic_template_data'์— ๋‚จ๊ฒจ๋‘๊ณ  ํ…œํ”Œ๋ฆฟ์—์„œ {{{subject}}}๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐธ์กฐํ•˜๋ฉด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‚ด๊ฐ€ ์•Œ์•„ ์ฐจ๋ฆฐ ๊ฒƒ์€ custom_args๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์ฒด์™€ ํ•จ๊ป˜ 'dynamic_template_data'๋กœ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๋ฌธ์„œ๋Š” ์ด๊ฒƒ์„ ๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์–ธ์–ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋ ค๋ฉด 'dynamic_template_data'์—์„œ๋„์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

"dynamic_template_data"ํ•„๋“œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค : https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์™œ ์ด๊ฒƒ์ด ๋‹ซํ˜”์Šต๋‹ˆ๊นŒ?

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ œ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ~ 30 ๊ฐœ์˜ ์ด๋ฉ”์ผ์„ ๋ฃจํ”„๋กœ ๋ณด๋‚ด๋ฉด ๋‚ด๊ฐ€ ๋ณด๋‚ธ ์ œ๋ชฉ๊ณผ ํ•จ๊ป˜ ์ผ๋ถ€๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  (์ œ๋ชฉ ์—†์Œ) ์ผ๋ถ€๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ API๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ง€์ • ์ œ๋ชฉ์„ ์•ˆ์ •์ ์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@ deepai-org ์—ฌ๊ธฐ์—์„œ ์ตœ์‹  ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค : https://sendgrid.com/docs/API_Reference/api_v3.html

@vladkosarev ํ•ธ๋“ค ๋ฐ”๋กœ ํ…œํ”Œ๋ฆฟ ํ™” ๋œ ์ œ๋ชฉ (https://github.com/sendgrid/sendgrid-nodejs/issues/713#issuecomment-443206995 ์ฐธ์กฐ)๊ณผ ๋™์ผํ•œ ๋™์  ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์š”์ฒญ ํŽ˜์ด๋กœ๋“œ์— ์ ์ ˆํ•œ ์ฃผ์ œ์— ๋Œ€ํ•œ ๋™์  ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ์™€ ์ฃผ์ œ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ง€์›ํŒ€์— ๋ฌธ์˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

@ childish-sambino ์ž ์‹œ ํ›„ ์ œ๋ชฉ์ด ์‹ค์ œ๋กœ ๋ชจ๋“  ์ด๋ฉ”์ผ์—์„œ ์ •ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž ์‹œ ๋™์•ˆ ๋น„๋™๊ธฐ๊ฐ€ ์ง„ํ–‰๋˜๊ณ  ์ผ๋ถ€ ์ด๋ฉ”์ผ์—๋Š” ์ด์ „ ์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ๊ณผ ์ƒˆ๋กœ์šด ํ…œํ”Œ๋ฆฟ์ด ์ œ๊ณต๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://sendgrid.com/docs/API_Reference/api_v3.html ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ์„œ์ž…๋‹ˆ๊นŒ? ํ•ด๋‹น ๋ฌธ์„œ์— ์„ค๋ช… ๋œ๋Œ€๋กœ ์ œ๋ชฉ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์ž‘๋™ ํ•œ ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€์ด ํ‹ฐ์ผ“์— ์„ค๋ช… ๋œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@vladkosarev ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ๋™์  ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ด ๋ฌธ์ œ์— ์„ค๋ช… ๋œ๋Œ€๋กœ ์ด๋ฉ”์ผ๋ณ„๋กœ ์ œ๋ชฉ์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ์ œ๋ชฉ์„ ํ…œํ”Œ๋ฆฟ ํ™”ํ•˜๊ณ  ๋™์  ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ๋กœ ์ „๋‹ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฉ”์ผ ์ „์†ก ํŽ˜์ด๋กœ๋“œ์— ์ œ๊ณต๋œ ์ œ๋ชฉ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ œ๋ชฉ์ด ๋ชจ๋“  ์ด๋ฉ”์ผ์— ๋Œ€ํ•ด ์ •ํ™•ํ•˜๊ธฐ ์œ„ํ•ด ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ์ง€์›ํŒ€์— ๋ฌธ์˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

@ childish-sambino ๋ฌธ์„œ์—์„œ ๋™์  ํ…œํ”Œ๋ฆฟ์—์„œ ์ฃผ์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ƒˆ ๋งํฌ ์–ด๋””์—์„œ๋„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

@vladkosarev๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ธฐ์–ตํ•˜๋ฉด ์ฃผ์ œ์— ๋Œ€ํ•œ ํ…œํ”Œ๋ฆฟ ์ž์ฒด์— ํ•ธ๋“ค ๋ฐ” ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.์ด ์ž‘์—…์€ ํ…œํ”Œ๋ฆฟ GUI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฝ”๋“œ์—์„œ ํ•ด๋‹น ๊ฐ’์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

image

@aroach ๊ฐ์‚ฌํ•˜์ง€๋งŒ github์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด ์•„๋‹ˆ๋ผ ๋ฌธ์„œ์—์„œ ๋ณด๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ {{}}๋Š” ๋‚ด๊ฐ€ ์‹œ๋„ํ–ˆ์„ ๋•Œ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๊ณ  ์‚ผ์ค‘ ๋Œ€๊ด„ํ˜ธ {{{}}} ๋งŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค (์ด์ „๊ณผ ๋™์ผํ•œ ๋น„๋™๊ธฐ ๋ฌธ์ œ ์ผ ์ˆ˜ ์žˆ์Œ).

@vladkosarev ์—ฌ๊ธฐ์— ์–ธ๊ธ‰ ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค : https://sendgrid.com/docs/ui/sending-email/how-to-send-an-email-with-dynamic-transactional-templates/

์ด ํ•ธ๋“ค ๋ฐ” ํ…œํ”Œ๋ฆฟ์€ ํ…œํ”Œ๋ฆฟ์˜ ํ…์ŠคํŠธ, html ๋ฐ ์ œ๋ชฉ ์ค„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@aroach ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๋” ๋งŽ์€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ์ฃผ์ œ๋Š” ์‹ค์ œ๋กœ ํ…œํ”Œ๋ฆฟ์— '์ ์šฉ'ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ ํ…Œ์ŠคํŠธ์ค‘์ธ ๊ฒฝ์šฐ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค (ํ…œํ”Œ๋ฆฟ ํŽธ์ง‘ / ๋ณด๋‚ด๊ธฐ). 10 ๋ถ„์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์‹ค์ œ๋กœ ์ ์šฉ๋˜๊ณ  ์˜๋„ ํ•œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. SG์— ์—ฐ๋ฝํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ ์—…๋ฐ์ดํŠธ๊ฐ€ ์‹ค์‹œ๊ฐ„์ด ์•„๋‹ˆ๋ฉฐ (์ ์–ด๋„ ์ฃผ์ œ์˜ ๊ฒฝ์šฐ) ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์ž ์‹œ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค๊ณ  ๋ฌธ์„œํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@Whatthefoxsays ๋Š” ์ด๊ฒƒ์„ ์ถ”์ ํ•˜๊ฑฐ๋‚˜ ์ ์ ˆํ•œ ํŽธ์ง‘์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘‹

@aroach ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•ด์•ผ ํ•  ํ•œ ๊ฐ€์ง€๋Š” ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๋Š” ๋ฐ ๋‘ ๊ฐœ์˜ IP๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” SG์˜ ๋‚ด๋ถ€ ์ž‘๋™์„ ๋ชจ๋ฅด์ง€๋งŒ ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋‘ ๋ฒˆ์งธ ๋…ธ๋“œ๋กœ ์ „ํŒŒํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋‚˜์š”?).

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰