Sendgrid-nodejs: ์ฒจ๋ถ€ ํŒŒ์ผ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ํ—ค๋”

์— ๋งŒ๋“  2016๋…„ 03์›” 28์ผ  ยท  41์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sendgrid/sendgrid-nodejs

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

sendgrid๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์ผ ๋ณธ๋ฌธ๊ณผ ํ•จ๊ป˜ iCal(ics) ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ics ํŒŒ์ผ์˜ ์ฝ˜ํ…์ธ  ์œ ํ˜•์„ "text/calendar"๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฒจ๋ถ€ ํŒŒ์ผ์„ ์บ˜๋ฆฐ๋” ์ด๋ฒคํŠธ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” "method=REQUEST" ์ถ”๊ฐ€ ํ—ค๋”๋ฅผ ์„ค์ •ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ ์ฒจ๋ถ€ ํŒŒ์ผ์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ์ •์˜ ํ—ค๋”๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์•ˆ ์ธ์‚ฌ

non-library issue

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

์•ˆ๋…•ํ•˜์„ธ์š” @mindnuts ์ž…๋‹ˆ๋‹ค .

์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋˜๋„ค์š”. ์ œ๊ฐ€ ์ดํ•ดํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค:

  1. iCal์ด ์ฒจ๋ถ€๋œ ์ด๋ฉ”์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ํ•ด๋‹น ์ด๋ฉ”์ผ์— ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ(์˜ˆ: X-Header: method=Request)
  3. ์ง€๊ธˆ์€ ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”!

@thinkingserious

์ด๋ฉ”์ผ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ํŒŒ์ผ์˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๋ผ ์™€์˜ .ics ํŒŒ์ผ์— ๋Œ€ํ•œ "ํ…์ŠคํŠธ / ๋‹ฌ๋ ฅ"์„ "์˜ contentType"๋กœ ์„ค์ •. Outlook์—์„œ ics ํŒŒ์ผ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฐ์ง€ํ•˜๋ ค๋ฉด ํ—ค๋”์— method=REQUEST๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Content-Type: text/calendar; charset=UTF-8; method=REQUEST

์ด๊ฒƒ์ด ์„ผ๋“œ๊ทธ๋ฆฌ๋“œ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฐ€๋Šฅํ• ๊นŒ์š”?

์ด ํ—ค๋” ์„ธํŠธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@thinkingserious ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค:

var sendgrid  = require('sendgrid')('YOUR_SENDGRID_API_KEY');

var email = new sendgrid.Email({
  to:       '[email protected]',
  from:     '[email protected]',
  subject:  'Hello World',
  html: 'My first email <b>through SendGrid.</b>',
  text:     'My first email through SendGrid.'
});

email.addFile({
  filename: 'calendar.ics',
  path: './calendar.ics',
  contentType: 'text/calendar'
});

sendgrid.send(email, function(err, json) {
  if (err) { return console.error(err); }
  console.log(json);
});

๋‹ค์Œ์€ ์ด ์ฒจ๋ถ€ ํŒŒ์ผ์— ๋Œ€ํ•ด Sendgrid์—์„œ ์ƒ์„ฑํ•œ ํ—ค๋”์ž…๋‹ˆ๋‹ค.

Content-Disposition: attachment; filename="calendar.ics"
Content-Transfer-Encoding: base64
Content-Type: text/calendar; charset=utf-8; name="calendar.ics"

๋‚ด๊ฐ€ ๊ฐ–๊ณ  ์‹ถ์€ ๊ฒƒ์€ (REQUEST๋Š” ๋‹จ์ง€ ์˜ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค):

Content-Type: text/calendar; charset=utf-8; method=REQUEST; name="calendar.ics"

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์˜ˆ๋Š” ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

headers ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ—ค๋”๋ฅผ ์ง์ ‘ ์„ค์ •ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๊นŒ?

@thinkingserious ๋‚˜๋Š” ์ด๋ฉ”์ผ์˜ ํ—ค๋”๋ฅผ ์„ค์ •ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ์— ์ถ”๊ฐ€๋œ ์ฒจ๋ถ€ ํŒŒ์ผ(์ œ ๊ฒฝ์šฐ์—๋Š” .ics ํŒŒ์ผ)์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ํ—ค๋”๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์•ˆ ์ธ์‚ฌ
๋ฏธ๋””์—„

์—…๋ฐ์ดํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋” ์ด์ƒ v3 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ํ•ด๋‹น ํ—ค๋”๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ SMTPAPI๋ฅผ ํ†ตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. https://github.com/sendgrid/smtpapi-nodejs

@thinkingserious ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. V3์˜ ETA๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ช‡ ๊ฐœ์›”์„ ๋„˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@mindnuts ,

์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ์—ฌ๊ธฐ์— V3 / ๋ฉ”์ผ ๋ณด๋‚ด๊ธฐ / ์—”๋“œ ํฌ์ธํŠธ๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค, ๋ช‡ ์ฃผ ๋–จ์–ด์ ธ ์ง€๊ธˆ์ด๋‹ค : https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html ์—ฌ๊ธฐ์—์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ƒˆ ๋ฒ„์ „ : HTTPS //github.com/sendgrid/sendgrid-nodejs/tree/v3beta

์ง€์›ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

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

๋‚˜๋Š” ๋ชจ๋‘๊ฐ€ ์—ฌ์ „ํžˆ ํ•ด๊ฒฐ์ฑ…์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค!
๋˜ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ REQUEST๋กœ ์„ค์ •ํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? 2๋‹ฌ์ด ๋˜์—ˆ์–ด์š”!

๊ฐ์‚ฌ ํ•ด์š”,
์ข‹์€ ํ•˜๋ฃจ ๋˜์„ธ์š”,
์ œ๋ ˆ๋ฏธ

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

์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ์—ฌ์ „ํžˆ ์ž ๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค!
์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ์†”๋ฃจ์…˜?

๊ฐ์‚ฌ ํ•ด์š”,
์ œ๋ ˆ๋ฏธ

๋‹ค์‹œ @thinkingserious ์ด ๋ฌธ์ œ๋ฅผ ๊ณง ํ•ด๊ฒฐํ•  ๊ณ„ํš์ž…๋‹ˆ๊นŒ?
์šฐ๋ฆฌ๋Š” ์ •๋ง ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

+1

response: {
      "statusCode": 400,
      "body": {
        "errors": [
          {
            "message": "The attachment type cannot contain ';', or CRLF characters.",
            "field": "attachments.0.type",
            "help": "http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type"
          }
        ]
      },
      "headers": {
        "server": "nginx",
        "date": "Wed, 01 Mar 2017 04:43:59 GMT",
        "content-type": "application/json",
        "content-length": "216",
        "connection": "close",
        "x-frame-options": "DENY",
        "access-control-allow-origin": "https://sendgrid.api-docs.io",
        "access-control-allow-methods": "POST",
        "access-control-allow-headers": "Authorization, Content-Type, On-behalf-of, x-sg-elas-acl",
        "access-control-max-age": "600",
        "x-no-cors-reason": "https://sendgrid.com/docs/Classroom/Basics/API/cors.html"
      }
    }
}

๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ œ์•ˆ๋œ ์†”๋ฃจ์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒŒ ์™œ ๋‹ซํ˜€์žˆ์–ด?

@ํŒŒ์Šค์นผ๋กœํ”ผ์ธ 

์ด๊ฒƒ์€ ๋‹ซ์ง€ ๋ง์•˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ @thinkingserious ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?!

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

์ด ๋ฌธ์ œ๋Š” ์ œํ’ˆ ๋กœ๋“œ๋งต์— ์žˆ์ง€๋งŒ ์–ธ์ œ ๋ฐฐ์†ก๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ํˆฌํ‘œ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋งˆ๋‹ค ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋†’์ด๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ์ œํ’ˆ ํŒ€์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

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

์—˜๋จธ

@thinkingserious ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ๋„ ์ •๋ง ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ 

@hdornier ์— ๋™์˜

@thinkingserious , ๋‹น์‹ ์€ ์ด๊ฒƒ์ด

์•ˆ๋…•ํ•˜์„ธ์š” @e99cog ์ž…๋‹ˆ๋‹ค .

์ด์ „์— ์™œ ๊ทธ๋ ‡๊ฒŒ ๋งํ–ˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. :(

์ด๊ฒƒ์ด SMTPAPI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋‹ค์Œ์€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ์˜ ์˜ˆ ์ž…๋‹ˆ๋‹ค.

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

์—˜๋จธ

์—ฌ๊ธฐ๋„ +1

๊ฒฐ๊ตญ MIME์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— mailgun๊ณผ ์—ฌ๊ธฐ์— ํฌํ•จ๋œ message.mime ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

sendgrid๋Š” ๋ชจ๋“  API์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

์•ˆ๋…• ๋ชจ๋‘๋“ค!

์ €๋Š” SendGrid์˜ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜ ์ œํ’ˆ ๊ด€๋ฆฌ์ž์ธ Matt์ž…๋‹ˆ๋‹ค. MIME ์œ ํ˜•์—์„œ ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ž‘์—…์„ Google ํ–‰์•„์›ƒ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๊ท€ํ•˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๊ท€ํ•˜๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์บ˜๋ฆฐ๋”์—์„œ ์ž์œ ๋กญ๊ฒŒ ์‹œ๊ฐ„์„ ์žก์•„์ฃผ์„ธ์š” - https://calendly.com/matt-bernier/mail-send-mime-types

๊ฐ์‚ฌ ํ•ด์š”!!

ํ–ฅํ›„ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? 2๋…„์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.

+1
์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ชจ๋“  ETA?

์ €๋„ ์ด๊ฒƒ์— ๊ด€์‹ฌ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ง€๊ธˆ์ฏค์ด๋ฉด ๋‹ต์„ ์–ป์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์š•ํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์ง€๋งŒ, ๋ฒ„๋””๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐ _๋งค์šฐ__ ๊ฐ€๊นŒ์›Œ์กŒ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. :) ์—…๋ฐ์ดํŠธ๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ์—ฌ๊ธฐ์— ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ์•ˆ๋…•ํ•˜์„ธ์š”!

์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฉฐ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํ”„๋กœ๋•์…˜ ๋‹จ๊ณ„์— ์žˆ์Œ์„ ์•Œ๋ฆฌ๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค! ์‹œ๋„ํ•ด ๋ณด์‹œ๊ณ  ์ถ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

๊ธฐ๋‹ค๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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

์—˜๋จธ

@thinkingserious ์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค! ๋‹ค์Œ์— ์ทจํ•ด์•ผ ํ•  ์กฐ์น˜๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ถ”๊ฐ€ ํ—ค๋” > method=REQUEST์— ๋Œ€ํ•œ ์ง€์›์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

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

๋ฐฉ๊ธˆ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค(API ์‚ฌ์šฉ).

{"errors":[{"message":"์ฒจ๋ถ€ ํŒŒ์ผ ์œ ํ˜•์€ ';' ๋˜๋Š” CRLF ๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.","field":"attachments.0.type","help":" http://sendgrid. com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type "},{"message":"์ฒจ๋ถ€ ํŒŒ์ผ ์œ ํ˜•์€ ';' ๋˜๋Š” CRLF ๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.","field":"์ฒจ๋ถ€ ํŒŒ์ผ. 1.์œ ํ˜•","๋„์›€๋ง":" http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type "}]}

๋‹ค์Œ์€ API API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

$attachment->setType('ํ…์ŠคํŠธ/์บ˜๋ฆฐ๋”; charset="UTF-8"; ๋ฉ”์†Œ๋“œ=REQUEST');

๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

@ataraxido ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค
"attachments": [{ "content": "QkVHSU46....EQVINCg==", "type": "text/calendar; method=REQUEST", "filename": "file1.ics" }]

202๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ฉ”์ผ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

Hey @ataraxido SendGrid๊ฐ€ ์ž๋™์œผ๋กœ ์ด ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฏ€๋กœ ๋ฌธ์ž ์ง‘ํ•ฉ์„ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(text/html, text/plain์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋จ). ํ•œ ๋ฒˆ ๋” ์‹œ๋„ํ•ด ๋ณด๊ณ  ์ด๊ฒƒ์ด ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š” ๐Ÿคž

@์•„ํƒ€๋ฝ์‹œ๋„ ,

์–ด๋””์—์„œ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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

์˜ˆ, ์ด์ œ "type": "text/calendar; method=REQUEST" ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

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

"header" method=REQUEST๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ Outlook ๋‚ด์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ์ธ๋ผ์ธ ICS๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ์‚ฌ์šฉ์ž ์ •์˜ "ํ—ค๋”"์™€ ํ•จ๊ป˜ ์ธ๋ผ์ธ์—์„œ๋„ ์ด๋ฒคํŠธ๋Š” ์ฒจ๋ถ€๋œ ICS๋ฅผ ์ƒ๊ธฐ์‹œํ‚ต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๋ชจ๋“  ๊ณ ๊ฐ์—๊ฒŒ ๋งค์šฐ ๊ด‘๋ฒ”์œ„ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ๋ก€๋‚˜ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

@ataraxido ์˜ ๋Œ“๊ธ€์— +1 -- @thinkingserious ์˜ˆ์ œ๋ฅผ ์–ป์„ ์ˆ˜

@ataraxido @tetreault ,

๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด ์ฒจ๋ถ€ ํŒŒ์ผ๋กœ ๋ณด๋‚ด๊ธฐ๋Š” Outlook์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ์ธ๋ผ์ธ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์ด์ œ ๋ฐฑ๋กœ๊ทธ์— ์žˆ์œผ๋ฉฐ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ PR์„ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์–ดํ•  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

@thinkingserious๋Š” ์‹ค์ œ๋กœ ICS๊ฐ€ ์ด๋ฉ”์ผ์— ์ธ๋ผ์ธ๋˜์–ด ์žˆ์ง€๋งŒ Outlook์€ ์ด๋ฅผ ์ฒจ๋ถ€ ํŒŒ์ผ๋กœ ๊ฐ„์ฃผํ•˜๋ฏ€๋กœ ์ด๋ฉ”์ผ ์ธ๋ผ์ธ ์ด๋ฒคํŠธ์˜ ์˜ˆ์ƒ ๋™์ž‘/ํ‘œ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ICS ์ธ๋ผ์ธ์ด 7๋น„ํŠธ์— ์žˆ๋Š” ๋ฐ˜๋ฉด ์ธ๋ผ์ธ ํ•ญ๋ชฉ์„ base64๋กœ ์ธ์ฝ”๋”ฉํ•˜๋„๋ก ๊ฐ•์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฝ”๋”ฉ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ญ”๊ฐ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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