Sendgrid-nodejs: 메일을 보낼 수 μ—†μŠ΅λ‹ˆλ‹€

에 λ§Œλ“  2017λ…„ 12μ›” 15일  Β·  17μ½”λ©˜νŠΈ  Β·  좜처: sendgrid/sendgrid-nodejs

문제 μš”μ•½

* 지원 μ§€μ‹œ 사항 *
증거 : https://support.sendgrid.com/hc/en-us/requests/1325416?page=1

λ„μ„œκ΄€μ—μ„œ 이메일을 보낼 수 μ—†μŠ΅λ‹ˆλ‹€. 지원이 λ‚˜λ₯Ό μ—¬κΈ°λ‘œ μ•ˆλ‚΄ν–ˆμŠ΅λ‹ˆλ‹€. localhostμ—μ„œ μ‹€ν–‰λ˜λŠ” node.jsμ—μ„œ λ³΄λ‚΄λ €κ³ ν•©λ‹ˆλ‹€. λ¨Όμ € npm에 λ‚˜μ—΄λœ 예제λ₯Ό μ‹œλ„ν–ˆμ§€λ§Œ x-no-cors reason 와 같은 ν—€λ”λ‘œ 401 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ λŒ€μ‹  @sendgrid/mail νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•˜λ €κ³ ν–ˆλŠ”λ° λ‹€μŒκ³Ό 같은 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

TypeError: Cannot read property 'errors' of undefined
at ResponseError.toString (E:\songsplits\api\node_modules\@sendgrid\helpers\classes\response-error.js:45:27)
at Function.CapturedTrace.parseStackAndMessage (E:\songsplits\api\node_modules\bluebird\js\main\captured_trace.js:176:25)
at CapturedTrace.attachExtraTrace (E:\songsplits\api\node_modules\bluebird\js\main\captured_trace.js:79:32)
at Promise._attachExtraTrace (E:\songsplits\api\node_modules\bluebird\js\main\debuggability.js:102:19)
at Promise._rejectCallback (E:\songsplits\api\node_modules\bluebird\js\main\promise.js:471:10)
at E:\songsplits\api\node_modules\bluebird\js\main\promise.js:486:17
at Request.http [as _callback] (E:\songsplits\api\node_modules\@sendgrid\client\src\client.js:124:18)
at Request.self.callback (E:\songsplits\api\node_modules\request\request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (E:\songsplits\api\node_modules\request\request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (E:\songsplits\api\node_modules\request\request.js:1091:12)
at IncomingMessage.g (events.js:291:16)
at emitNone (events.js:91:20)

μž¬ν˜„ 단계

여기에 μž¬ν˜„ ν•  μ΅œμ†Œ λͺ¨λ“ˆμ΄ μžˆμŠ΅λ‹ˆλ‹€.

email.js

const sgMail = require('@sendgrid/mail')

sgMail.setApiKey(process.env.SENDGRID_KEY);

module.exports.send = function send(html,subject,to,from){

    return new Promise((resolve,reject)=>{

        sgMail.send({
            to,
            from,
            subject,
            html
        }).then(resolve).catch(reject);

    });
};

index.js

const send = require('./mail');

send(
    '<!DOCTYPE html><html><head><title>Hi</title></head><body>Hi</body></html>',
    'Hi',
    '[email protected]',
    '[email protected]',
).then(()=>console.log('sent an email successfully!')).catch(err=>console.log(err));

기술적 μ„ΈλΆ€ 사항:

  • sendgrid-nodejs 버전 : master (μ΅œμ‹  컀밋 : [컀밋 번호])
  • Node.js 버전 : 6
help wanted question

λͺ¨λ“  17 λŒ“κΈ€

λ‹€λ₯Έ ν‚€λ‘œ μ‹œλ„ν–ˆμ§€λ§Œ λΆ€μ—λ…ΈλŠ” μ—†μŠ΅λ‹ˆλ‹€. λ•Œλ‘œλŠ” 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•Šκ³  응닡이

Unauthorized (401)
Permission denied, wrong credentials

μ•ˆλ…•ν•˜μ„Έμš” @ r3wt ,

μ΄λŠ” Google μ§€μ›νŒ€ 이 λ„μšΈ μˆ˜μžˆλŠ” λ¬Έμ œμž…λ‹ˆλ‹€. 그듀은 κ·€ν•˜μ˜ 계정을 μ‘°μ‚¬ν•˜μ—¬ κ·€ν•˜μ˜ ν‚€ 문제λ₯Ό νŒŒμ•…ν•˜λŠ” 데 도움을 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€!

λ§ˆμŒμ„ λ‹΄μ•„,

Elmer

@thinkingserious κ·€ν•˜μ˜ 지원 νŒ€μ΄ μ €λ₯Ό μ—¬κΈ°λ‘œ 인도 ν•œ μ‚¬λžŒμž…λ‹ˆλ‹€.

λΏ‘

API ν‚€λ₯Ό github에 κ²Œμ‹œν•˜λ©΄ κ·œμ • μ€€μˆ˜ νŒ€μ΄ ν‚€λ₯Ό λΉ„ν™œμ„±ν™” ν•  것이기 λ•Œλ¬Έμ— 이런 일이 λ°œμƒν•  수 μžˆλ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€.

λ°œμƒν•  μˆ˜μžˆλŠ” 또 λ‹€λ₯Έ 일은 IP 관리가 μΌœμ ΈμžˆλŠ” κ²½μš°μž…λ‹ˆλ‹€. μ—¬κΈ°μ„œ 계정은 νŠΉμ • IPμ—μ„œλ§Œ μ•‘μ„ΈμŠ€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή λͺ©λ‘μ—μ—†λŠ” IPμ—μ„œ μ½”λ“œκ°€ 싀행쀑인 κ²½μš°μ—λ„ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

뢀탁을 λ“€μ–΄ μ£Όμ‹œκ³  메일 / 보내기 κΆŒν•œμœΌλ‘œ μƒˆ API ν‚€λ₯Ό λ§Œλ“€κ³  μ½”λ“œλ₯Ό λ‹€μ‹œ μ‹œλ„ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

κ·Έλ ‡κ²Œν•˜λŠ” λ™μ•ˆ 지원 ν‹°μΌ“ 번호λ₯Ό μ•Œλ €μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?
감사!!

μ§€κΈˆ 티켓이 λ³΄μ—¬μš” ... κ·Έλž˜μ„œ 저도 λ³Όκ²Œμš”. 감사!

@mbernier ν‚€λŠ” 개인 μ €μž₯μ†Œμ˜ ꡬ성 νŒŒμΌμ— μžˆμŠ΅λ‹ˆλ‹€. λ‹Ήμ‹ μ˜ νŒ€μ€ 이것을 μ–΄λ–»κ²Œ 감지 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? ν‚€ 유좜의 μœ„ν—˜μ΄ μ—†μœΌλ©° 개인 μ €μž₯μ†Œμž…λ‹ˆλ‹€.

이제 λ‚΄ 연결에 λŒ€ν•œ λͺ‡ 가지 정보 :

  • μœ„μ„±, ipv6. 원격 μΈλ°”μš΄λ“œ 연결이 μ—†μŠ΅λ‹ˆλ‹€.
  • λ‚˜λŠ” localhostμ—μ„œ 앱을 μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ 개인 정보라면 λ¬Έμ œκ°€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. InfoSec νŒ€μ€ 항상 개인 μ €μž₯μ†Œμ—λ„ ν‚€λ₯Ό 넣지 말 것을 μ œμ•ˆν•©λ‹ˆλ‹€. :)

μ•±μ—μ„œ 이메일을 보낼 수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

https://sendgrid.com/docs/API_Reference/api_v3.html 둜 μ΄λ™ν•˜μ—¬ ν•΄λ‹Ή λ¬Έμ„œ νŽ˜μ΄μ§€μ˜ "μ‚¬μš©ν•΄λ³΄κΈ°"탭을 톡해 보내 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? 였λ₯˜κ°€ λ‹€μ‹œ λ°œμƒν•˜λ©΄ 여기에 응닡 및 였λ₯˜λ₯Ό κ²Œμ‹œν•˜μ‹­μ‹œμ˜€.

λΏ‘λΏ‘

image

@mbernier λΆˆν–‰νžˆλ„ node.jsμ—μ„œ μ—¬μ „νžˆ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

image

계정이 ν™œμ„±ν™”λ˜μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€. app.sendgrid.com에 λ‘œκ·ΈμΈν•˜μ—¬ νŽ˜μ΄μ§€ μƒλ‹¨μ˜ μ•Œλ¦Όμ„ μ°Ύμ•„ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? 그것은 당신이 쒋은 λ°œμ‹ μžμž„μ„ 증λͺ…ν•˜κΈ° μœ„ν•΄ λ‹Ήμ‹  μžμ‹ μ— λŒ€ν•œ 정보λ₯Ό 쑰금 더 μ œκ³΅ν•˜λ„λ‘ μ§€μ‹œ ν•  κ²ƒμž…λ‹ˆλ‹€.

@mbernier 제 고객 계정은 μ΅œμ†Œ 2 λ…„ λ™μ•ˆ ν™œμ„±ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 둜그λ₯Ό ν™•μΈν–ˆλŠ”λ° ν΄λΌμ΄μ–ΈνŠΈκ°€ λ‹€λ₯Έ 이메일 캠페인 등을 적극적으둜 보내고 μžˆμŠ΅λ‹ˆκΉŒ? ν˜Όλž€ μŠ€λŸ¬μ›Œμš”.

@mbernier λŒ€ν™” ν˜• 계정 λ©”λ‰΄μ˜ μ„€μ • 지침을 λ”°λžμ„ λ•Œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. λ„ˆλ¬΄ κΈ°κ΄΄ν•©λ‹ˆλ‹€.

μ£„μ†‘ν•©λ‹ˆλ‹€. 무슨 일이 μžˆμ—ˆλŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. 지원 티켓에 λ©”λͺ¨λ₯Ό μž‘μ„± ν–ˆμœΌλ―€λ‘œ μ•‘μ„ΈμŠ€ κΆŒν•œμ„ 톡해 더 μžμ„Έν•œ 정보λ₯Ό 제곡 ν•  수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

μ§€κΈˆ μž‘λ™ν•˜κ³ μžˆμ–΄μ„œ κΈ°μ©λ‹ˆλ‹€!

@ r3wt λ‚˜λŠ” 이것을 닫을 κ²ƒμž…λ‹ˆλ‹€. λ‹€λ₯Έ λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ μ•Œλ €μ£Όμ‹­μ‹œμ˜€!

@mbernier λ¬Έμ œκ°€ λ‹€μ‹œ λ°œμƒν•©λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @ r3wt ,

이 μŠ€λ ˆλ“œμ— μ—°κ²° ν•œ μ›λž˜ 지원 티켓을 톡해 μ§€μ›νŒ€μ— λ‹€μ‹œ 연락해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? κ·€ν•˜μ˜ 계정에 λ¬Έμ œκ°€ λ°œμƒν–ˆμ„ 수 있으며 κ·€ν•˜μ˜ 계정을 쑰사 ν•  μˆ˜μžˆλŠ” 도ꡬ가 μžˆμŠ΅λ‹ˆλ‹€.

감사!

λ§ˆμŒμ„ λ‹΄μ•„,

Elmer

μ•Œλ € λ“œλ¦¬λ©΄, μ œκ°€ 말할 μˆ˜μžˆλŠ” ν•œ 맀우 μœ μ‚¬ν•œ λ¬Έμ œκ°€μžˆμ—ˆμŠ΅λ‹ˆλ‹€ (아직 μƒˆλ‘œμš΄ κ²ƒμž…λ‹ˆλ‹€). 해결책은 μ•± ν”Œλž«νΌ heroku https://devcenter.heroku.com/articles/sendgrid#setup -api-key-environment-variableμ—μ„œ API ν‚€ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜λŠ” 것이 μ—ˆμŠ΅λ‹ˆλ‹€.
μ§€κΈˆμ€ 문제 μ—†μŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰