ããã«ã¡ã¯ã
ããšãã°ã httpsïŒ //sendgrid.com/blog/migrating-app-sendgrids-template-engine/ã®ããã«ãreadmeã«ããããããäŸãæäŸãããšããã§ãããããªããªãã30è¡ãæžãããå Žåã¯tbhã ããã§ãã sendgridã䜿çšããªãç°¡åãªã¡ãŒã«ãéä¿¡ããããã®javascriptã³ãŒãã®äŸã
çµéšè±å¯ãªéçºè ã§ãã£ãŠããã©ã€ãã©ãªã䜿çšããã®ã¯éåžžã«ã€ã©ã€ã©ããŸãã
也æ¯ã
ãããŠããã®æã£ãŠããæŽèšããè©«ã³ããŸã
psïŒãã®äŸã¯ãŸãã«ç§ãæ¢ããŠãããã®ã§ãhttps://sendgrid.com/docs/Integrate/Code_Examples/v2_Mail/nodejs.html ããšãŠã䜿ããããã§ã
ããã«ã¡ã¯@julesbou ã
æã£ãŠããæŽèšã¯ãç¹ã«è§£æ±ºçãæ·»ä»ãããŠããå Žåã¯ãç§ã«ã¯åé¡ãããŸãã:)
ãæéãå²ããŠããã ããèª ã«ããããšãããããŸãã
çŸåšã次ã®ã€ãã¬ãŒã·ã§ã³ã®æ¹åãèšç»ããŠããã®ã§ãã¿ã€ãã³ã°ã¯è¯ãã£ãã§ãã
ä»ã«ãèŠæãããããŸãããããã®ã¹ã¬ããã§ãç¥ããããã ãããè¿œå ã®åé¡ãéããŠãã ããã
ããããšãïŒ
ãã«ããŒã¯ã©ã¹ãã©ã®ããã«äœ¿çšããŸããïŒ ç§ããããã®ã¯fromåãèšå®ããããšã ãã§ããïŒ
@jsgandalf ã
æãç°¡åãªæ¹æ³ã¯ã https ïŒ https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/helpers/mail/exampleã§ãã jsïŒL4
次ã®ããã«ç¬èªã®jsonãäœæããããšãã§ããŸãïŒ https ïŒ
ããããšãïŒ
éåžžã«åœ¹ç«ã¡ãŸãïŒ ããã¯readmeã«ããã¯ãã§ã!!
@ jsgandalf @ thinkingseriousç§ãã©ã€ãã©ãªã䜿çšããã®ã¯éåžžã«ã€ã©ã€ã©ããŸãã ãã³ãã¬ãŒãã¡ãŒã«ãéä¿¡ããããšããŠããŸãã ããã§ã®äŸã¯ããŸã圹ã«ç«ã¡ãŸããã§ããã ãtoããšãfromãã®ã¡ãŒã«ã¢ãã¬ã¹ãèšå®ããæ¹æ³ãããããŸããããã®ã³ãŒãã¯ã¡ãŒã«ãéä¿¡ããŸããã ç§ã¯éå»3æ¥éé ããããŠããŸããã äœãå©ãã¯ãããŸããïŒ
ãã£ãŒãããã¯@bcootnerãããããšãã ããªãã®ãªã¯ãšã¹ãã¯ãããããã¥ãŒã«ä¿®æ£ããã®ã«åœ¹ç«ã¡ãŸãã ããã¯ç§ããããããšæã£ãŠããåé¡ã§ãã
ãããŸã§ã®éããã®äŸãã圹ã«ç«ãŠã°å¹žãã§ãã
var sg = require('sendgrid').SendGrid(process.env.SENDGRID_API_KEY)
function helloTemplate(){
var helper = require('sendgrid').mail
from_email = new helper.Email("[email protected]")
to_email = new helper.Email("[email protected]")
subject = "Hello World from the SendGrid Node.js Library"
content = new helper.Content("text/plain", "some text here")
mail = new helper.Mail(from_email, subject, to_email, content)
// The constructor above already creates our personalization object
// -name- and -card- are substitutions in my template
substitution = new helper.Substitution("-name-", "Example User")
mail.personalizations[0].addSubstitution(substitution)
substitution = new helper.Substitution("-card-", "Denver")
mail.personalizations[0].addSubstitution(substitution)
mail.setTemplateId("YOUR_TEMPLATE_ID")
return mail.toJSON()
}
function send(toSend){
//console.log(JSON.stringify(toSend, null, 2))
//console.log(JSON.stringify(toSend))
var sg = require('sendgrid').SendGrid(process.env.SENDGRID_API_KEY)
var requestBody = toSend
var emptyRequest = require('sendgrid-rest').request
var requestPost = JSON.parse(JSON.stringify(emptyRequest))
requestPost.method = 'POST'
requestPost.path = '/v3/mail/send'
requestPost.body = requestBody
sg.API(requestPost, function (response) {
console.log(response.statusCode)
console.log(response.body)
console.log(response.headers)
})
}
send(helloTemplate())
ããã«ãµããŒããå¿ èŠãªå Žåã¯ããåãåãããã ããã
@thinkingseriousæéãšææ ®æ·±ãå¿çãããããšãã ç§ã¯æ¬¡ã®ã³ãŒããæã£ãŠããŸãïŒ
var sg = require('sendgrid').SendGrid("SG.**** .. ***6o");
function welcomeTemplate() {
console.log("template")
var helper = require('sendgrid').mail
from_email = new helper.Email("[email protected]")
to_email = new helper.Email("[email protected]")
subject = "Hello World from the SendGrid Node.js Library"
content = new helper.Content("text/plain", "some text here")
mail = new helper.Mail(from_email, subject, to_email, content)
substitution = new helper.Substitution("-Name-", "bcootner")
mail.personalizations[0].addSubstitution(substitution)
mail.setTemplateId("5a****-*******-******-9") //The ID of my Transactional Template
return mail.toJSON()
}
function sendMail(toSend) {
console.log("Send")
var sg = require('sendgrid').SendGrid("SG.***....****o")
var requestBody = toSend
var emptyRequest = require('sendgrid-rest').request
var requestPost = JSON.parse(JSON.stringify(emptyRequest))
requestPost.method = 'POST'
requestPost.path = '/v3/mail/send'
requestPost.body = requestBody
sg.API(requestPost, function (response) {
console.log(response.statusCode)
console.log(response.body)
console.log(response.headers)
})
}
ãããŠããã®ã³ãŒããsendMail(welcomeTemplate())
åŒã³åºããŸãããããã¯æ©èœããŸããã ããã³ãã¬ãŒãããšãéä¿¡ãã¯ãã°ã«è¡šç€ºãããŸãããstatusCodeãæ¬æããŸãã¯ããããŒã¯è¡šç€ºããããé»åã¡ãŒã«ã¯åä¿¡ããããããã·ã¥ããŒãã«ã¯äœã衚瀺ãããŸããã
requestPost.body = requestBody
åŸã console.log(JSON.stringify(requestBody))
ãå®è¡ããŠãäœãåŸããããæããŠãã ããã
@thinkingseriousãããã°ãè¡ã£ãåŸã var emptyRequest = require('sendgrid-rest').request
è¡ã®åŸã«ãã°ã«äœãåºåãããªãããã§ãã æåã«ããã³ãã¬ãŒããããã°ã«èšé²ãããçŽ5ååŸã«ãéä¿¡ããåºåãããŸãïŒéä¿¡é¢æ°ã§ã³ã¡ã³ãããè¡ã®ã³ã¡ã³ãã解é€ãããšãæ£åžžã«æ©èœããŸãïŒã ãã®requireã¹ããŒãã¡ã³ãã«æ¬ ããŠãããã®ã¯ãããŸããïŒ npm install sendgrid
ãããè©ŠããŠãã ããïŒ
A.次ã®ãã€ããŒãã䜿çšããŠpost.jsonãšãããã¡ã€ã«ãäœæããŸãã
{"content":[{"type":"text","value":"Hello, World!"}],"from":{"email":"[email protected]"},"personalizations":[{"subject":"Hello, World!","to":[{"email":"[email protected]"}]}]}
B.ãµã³ãã«ã¡ãŒã«ã眮ãæãã
C.次ã®ã³ãã³ããå®è¡ããŸãã
curl -X "POST" "https://api.sendgrid.com/v3/mail/send" \
-H "Authorization: Bearer $SENDGRID_API_KEY" \
-H "Content-Type: application/json" \
-d @post.json
D. $ SENDGRID_API_KEYãAPIKEYã«çœ®ãæããããAPIKeyãSENDGRID_API_KEYãšããç°å¢å€æ°ã«è¿œå ããŸã
@thinkingseriousãã®ãã¹ãã¡ãŒã«ãåãåããŸããããŸãã Hello Testãæ£åžžã«æ©èœãããããšãã§ããŸããããããã®ãã³ãã¬ãŒãã¯ãæ©èœããããªãã ãã§ãã
ç·šéïŒããã§ç§ã¯var emptyRequest = require('sendgrid-rest').request
ãvar emptyRequest = sg.emptyRequest()
ã«çœ®ãæããŸããããããŠããã¯é»åã¡ãŒã«ãéããŸãããã³ãã¬ãŒããã¶ã€ã³ãŸãã¯ã©ããªç»åããã®ãã©ãŒãããããããŸããã
@bcootner ã
æ®å¿µãªãããç§ã¯ããªãã®ãšã©ãŒãåçŸããããšãã§ããªãã®ã§ãç§ã¯åé¡ããããããããªããšãããéãæããã®ãæäŒãããšããŠããŸãã curlçµç±ã§ã¡ãŒã«ãéä¿¡ã§ããã®ã§ãAPIããŒãé©åã§ããããšãæå³ããŸãã ãããããã³ãã¬ãŒãIDã«åé¡ããããŸããïŒ
mail.setTemplateId("5a****-*******-******-9")
ãåé€ãããšãã¡ãŒã«ã¯éä¿¡ãããŸããïŒ
@thinkingseriousãããã£ãŠã SendGridNode.jsã©ã€ãã©ãªããHelloWorld ããšãããã¹ããéä¿¡ãããŸãã
ç§ã®ç·šéãèŠããã©ããã¯ããããŸãããã var emptyRequest = require('sendgrid-rest').request
ãvar emptyRequest = sg.emptyRequest()
眮ãæãããšããã³ãã¬ãŒãã®ããã¹ãã¯éä¿¡ãããŸãããæžåŒèšå®ã¯ãããŸããïŒãã©ã³ããç»åããããŸããïŒã ã³ã³ãœãŒã«ãã次ã®ããªã³ãã¢ãŠãã衚瀺ãããŸãã
2016-07-13T00:01:07.514157+00:00 app[web.1]: date: 'Wed, 13 Jul 2016 00:01:07 GMT',
2016-07-13T00:01:07.514159+00:00 app[web.1]: connection: 'close',
2016-07-13T00:01:07.514157+00:00 app[web.1]: date: 'Wed, 13 Jul 2016 00:01:07 GMT',
2016-07-13T00:01:07.514158+00:00 app[web.1]: 'content-type': 'text/plain; charset=utf-8',
2016-07-13T00:01:07.502390+00:00 app[web.1]: 202
2016-07-13T00:01:07.502454+00:00 app[web.1]:
2016-07-13T00:01:07.514155+00:00 app[web.1]: { server: 'nginx',
2016-07-13T00:01:07.514159+00:00 app[web.1]: connection: 'close',
2016-07-13T00:01:07.514161+00:00 app[web.1]: 'x-frame-options': 'DENY' }
'text / plain'ã«åé¡ããããšæãããããšããããŸãããããããããŸããã å床ãæè¬ããŸãïŒ
ãã@bcootner ãç§ã¯ã¡ããã©åãåé¡ãçµéšããæ°æéé ã
_Params_
{
":name": "someName",
":email": "someEmail"
}
ã :email
ãš:name
ã¯ãã¡ãŒã«ãã³ãã¬ãŒãã§å€æ°ãèšå®ããæ¹æ³ã§ããã -email-
ãŸãã¯ä»»æã®å€ã«ããããšãã§ããŸãã let sendTemplateMail = (from, to, subject, message, template, templateVariables, successCallback, errorCallback) => {
var sg = require('sendgrid').SendGrid(process.env.SENDGRID_API_KEY),
helper = require('sendgrid').mail,
content_text = new helper.Content("text/plain", message),
content_html = new helper.Content("text/html", message),
request = sg.emptyRequest(),
email_to = new helper.Email(to),
email_from = new helper.Email(from),
mail = new helper.Mail(email_from, subject, email_to, content_text),
personalization = new helper.Personalization();
personalization.addTo(email_to);
personalization.setSubject(subject);
mail.setTemplateId(template);
mail.addContent(content_html);
for(var key in templateVariables) {
if(templateVariables.hasOwnProperty(key)) {
var substitution = new helper.Substitution(key, templateVariables[key]);
personalization.addSubstitution(substitution);
}
}
mail.addPersonalization(personalization);
request.method = 'POST';
request.path = '/v3/mail/send';
request.body = mail.toJSON();
sg.API(request, (json) => {
if(json.statusCode >= 300) {
errorCallback(json);
} else {
successCallback(json);
}
});
}
ããã¥ã¡ã³ãã«ã¯ãåºæ¬çã§åçŽãªäŸã䜿çšããŠãå®éã«ãªãã¡ã¯ã¿ãªã³ã°ãå¿ èŠã§ãã ç§ã®é¢æ°ãããªããå©ããããšãé¡ã£ãŠããŸã:)
@ByEmkeãæ¯æŽããããšã[email protected]ãŸã§ã¡ãŒã«ã§
ããã¥ã¡ã³ãã«é¢ããŠã¯ãã¡ãŒã«ãã«ããŒèªäœãšåæ§ã«ãªãã¡ã¯ã¿ãªã³ã°ãé²è¡äžã§ãã ç§ãã¡ã¯ããªãã®ãã£ãŒãããã¯ããã¹ãŠéããŠããã次ã®å埩ã«è奮ããŠããŸãã
ãŸãã倧ããªæ··ä¹±ã¯ããã³ãã¬ãŒãã䜿çšãããšãã«ã³ã³ãã³ããèšå®ããå¿ èŠãããããšã§ãã 幞ããªããšã«ãããã¯ããã«ïŒæ°æ¥ïŒå€ããã§ãããã
@bcootnerããªãã¯ãããéä»ãã«ãããšæããŸãã content_html = new helper.Content("text/html", message)
ãå¿
èŠã§ãã 幞ãããã®èŠä»¶ã¯æ°æ¥ã§ãªããªããŸããçŸåšãç§ãã¡ã®ããŒã ã¯ãã®åäœãå€æŽããŠããããããã³ãã¬ãŒããæå®ãããšãã«ã³ã³ãã³ããèšå®ããå¿
èŠã¯ãããŸããã
@ByEmke @thinkingseãã®åé¡ã«ã€ããŠãååããããŸããæšå€ã次ã®ã³ãŒãã§åäœãããããšãã§ããŸããã
var sg = require('sendgrid').SendGrid("SendGrid API Key" or <environment variable>)
function sendEmail(tempID){
var helper = require('sendgrid').mail;
from_email = new helper.Email("[email protected]")
to_email = new helper.Email("[email protected]")
subject = "Dummy Subject"
content = new helper.Content("text/html", "dummy content")
mail = new helper.Mail(from_email, subject, to_email, content)
substitution = new helper.Substitution("-name-", "User's Name")
mail.personalizations[0].addSubstitution(substitution)
mail.setTemplateId(tempID)
var requestBody = mail.toJSON()
var requestPost = JSON.parse(JSON.stringify(sg.emptyRequest()))
requestPost.method = 'POST'
requestPost.path = '/v3/mail/send'
requestPost.body = requestBody
sg.API(requestPost, function (response) {
console.log(response.statusCode)
console.log(response.body)
console.log(response.headers)
})
}
å床ãæè¬ããŸãïŒ
ãŸããç¹ã«ãã³ãã¬ãŒãããã®ä»ã®æ©èœã䜿çšããŠããå Žåã¯ãããã¥ã¡ã³ãããã©ããŒããã®ãéåžžã«é£ãããšæããŠããŸãã
helperïŒïŒæ§æãããrequest.body = {}æ§æã®æ¹ã奜ãã§ããããã«ãããç©äºãããåé·ã«ãªããèªã¿ã«ãããªããŸãïŒå°ãªããšãç§ã«ãšã£ãŠã¯ïŒã
ç§ã¯ããªãã®æéããããŠããã¥ã¡ã³ãã調ã¹ãå€æŽããã¹ãããäŸãèŠãŠãããã«æ¥ãŠããã³ãã¬ãŒãã䜿çšãããšãã«ã³ã³ãã³ããèšå®ããå¿ èŠãããããšã確èªããŸããããããã¥ã¡ã³ãã«ã¯å¥ã®æ¹æ³ãèšèŒãããŠããŸãã ããã ãã®ãããªãã®ã¯ããªããæãããããšãã§ããŸãã ãšã«ãããå®çšçãªäŸãæäŸããŠããã@ByEmkeã«ç§°è³ã
@peterkuiper ïŒãŸãã¯ç§ã¯ã¢ãã ãšèšãã¹ãã§ã:)ïŒ
ãã£ãŒãããã¯ãããããšãããããŸããã©ã€ãã©ãªããã¥ã¡ã³ããæ¹åããæ¹æ³ã«éåžžã«èå³ããããŸãã
æ確ã«ããããã«ãããªãã¯ããããåç §ããŠããŸããïŒ https://github.com/sendgrid/sendgrid-nodejs/blob/master/USAGE.md
ã³ã³ãã³ãã®åé¡ïŒçããã®è©±ãèããŸãã:)ïŒã«é¢ããŠã¯ãããã¯ã»ãŒä¿®æ£ãããŠããŸãã ãã³ãã¬ãŒãã䜿çšãããšãã«ã³ã³ãã³ããèšå®ããå¿ èŠããªããªãªãŒã¹ãAPIã«ãããã€ããŸãã å€æŽã«ããããã³ãã¬ãŒãã®ãšã¯ã¹ããªãšã³ã¹ãå€§å¹ ã«åäžããããšãé¡ã£ãŠããŸãã
@thinkingserious Githubã«çŽæ¥ã¢ã¯ã»ã¹ããå¿ èŠããããšãã«ãsendgrid.comïŒhttps://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.htmlïŒã®ããã¥ã¡ã³ãããã§ãã¯ããŠããŸããã ç§ã¯ãã®ãªããžããªã®READMEããã£ãšèªã¿ãäŸã確èªããUSAGE.mdïŒç§ã®æªãïŒãå®å šã«èŠéããŸããã USAGE.mdãã¡ã€ã«ã¯ãç§ã®å¥œã¿ã®åœ¢åŒã§ãããããsendgrid.comã«é 眮ããå¿ èŠããããŸã:)ãã³ãã¬ãŒãã䜿çšããéã®ããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠã¯ãŸã ããããŸããããèªåã§ç解ããããããã¥ã¡ã³ãã
ç§ã¯ãã®ãã¡ã€ã«ãé²èŠ§ããŠããŠãæ··ä¹±ããŠãããšæããã®ã®ã©ã³ãã ãªäŸãèŠã€ããŸããã
var request = sg.emptyRequest()
request.queryParams["start_time"] = '1'
request.queryParams["limit"] = '1'
request.queryParams["end_time"] = '1'
request.queryParams["offset"] = '1'
request.method = 'GET'
request.path = '/v3/suppression/blocks'
sg.API(request, function (response) {
console.log(response.statusCode)
console.log(response.body)
console.log(response.headers)
})
start_timeãlimitãend_timeãoffsetãšã¯ã©ã®ãããªã¿ã€ãã§ããããã¯ã©ãããæå³ã§ããïŒ ããå€ãã®queryParamsããããŸããïŒ ãããŠããªãããã¯request.bodyã§ã¯ãªãã®ã§ããïŒ
ãŠãŒã¶ãŒã¬ã€ããžã®ãªã³ã¯ïŒãŸã£ãã圹ã«ç«ã¡ãŸããïŒããããŸããã httpsïŒ //sendgrid.com/docs/API_Reference/Web_API_v3/blocks.htmlãã¯ãªã¢ããAPIããã¥ã¡ã³ããžã®ãªã³ã¯ãããã¯ã
ãããã£ãŠãå¿ èŠãªæ å ±ãã©ãã«ããããèŠã€ããããšããŠãååŸã«ç§»åããå¿ èŠããããŸãã
çŽ æŽããããã£ãŒãããã¯@peterkuiperïŒ
ç§ãããªããçã¿åºãããã§ãã Tã·ã£ãã®ãµã€ãºãšéµéå äœæã[email protected]ãŸã§
USAGE.mdããã¥ã¡ã³ããæŽæ°ããŠãã¯ãšãªãšå¿çã®æ¬æã®èª¬æãå«ããŸãã
ãã³ãã¬ãŒãã«é¢ããŠã¯ãã¡ãŒã«ãšã³ããã€ã³ãã®å Žåãšåæ§ã«ãäžè¬çãªãŠãŒã¹ã±ãŒã¹ã®äŸãåãããã«ããŒãäœæããèšç»ããããŸãã ãŸãããã³ãã¬ãŒãã䜿çšãããšãã«ã³ã³ãã³ããæå®ããå¿ èŠããªããªãä¿®æ£ããããŸãã ããã¯å€§ããªæ··ä¹±ã®åå ã§ãã
@thinkingseriousãã£ããããããããšã:)ã¡ãŒã«ãéä¿¡ããŸããïŒ
ããã«ããéããã¹ããã©ã¯ãã£ã¹ã«ãèšåããŠããïŒãããŠç§ã®ããŒã ã«æ··ä¹±ãåŒãèµ·ãããŠããïŒäœãä»ã®ãã®ã«æ°ã¥ããŸããã ç§ã®ããŒã ã¡ãŒãã®1人ããããã€ãã®æ©èœïŒã€ãŸããé»åã¡ãŒã«ã®æ€èšŒïŒã®ãã³ãã¬ãŒããäœæããverify-nlãverify-enãªã©ãè¿œå ããŸããããããã£ãŠããã¹ãŠã®ãã³ãã¬ãŒãã¯åºæ¬çã«åãã§ãããã¹ãïŒç°ãªãèšèªïŒã ããç°ãªããŸãã <ïŒ subjectïŒ > en <ïŒ bodyïŒ >ãèŠãããšãããããããžã®åç §ãèŠã€ãããŸããã§ããïŒTL; DRã¯ç§ã®éšåãããããããŸããïŒã®ã§ãAPIã䜿çšãããšãã«çºçããå éšçœ®æã§ãããšæããŸãã
ç§ã¯ãéåžžã®ãæ £è¡ãäœã§ãããèå³ããããŸãïŒ
ãã®ã¢ãããŒãã䜿çšãããšããã³ãã¬ãŒãã®äžéšãå€æŽãããšãã«å€ãã®äœæ¥ãçºçããå¯èœæ§ãããããã§ãã ããã³ãã¬ãŒããã³ãã¬ãŒããïŒã€ãŸããããããŒ/ããã¿ãŒ/ãã®ä»ã®éšåïŒãäœæã§ãããã©ããã¯ããããŸããã ãŸããç°ãªãèšèªãããããããå Žåã¯ã300åã®ãã³ãã¬ãŒãã®å¶éã«ç°¡åã«éããããšãã§ããŸãïŒããã¯ç§ãã¡ã®å Žåã¯åé¡ã§ã¯ãããŸããïŒã
質åãçã«ããªã£ãŠããããšãé¡ã£ãŠããŸã:)
@peterkuiper ã
ããããŸãããããã£ãŒã©ãŒãããã€ãåºããŸããã çºèŠããããšã§è¿çããŸãã ããããšãïŒ
@thinkingseriousããŒãžã§ã³2.0.0
ã䜿çšããããšã«ãªããŸãããããã¯ããã®åäœãéåžžã«æ°ã«å
¥ã£ãŠããŸãã
var client = require("sendgrid")("key");
client.send({
to: "[email protected]",
from: "[email protected]",
subject: "subject",
text: "hello"
// Or using the html property:
// html: "Hello <strong>World!</strong>!"
}, fn);
ãããããŒãžã§ã³3.x.x
ã©ã®ããã«è¡šç€ºããããã調ã¹ãŠããŸãã çŸåšã®äŸã¯æ¬åœã«çŽãããããšæããŸãã
çŽ æŽããããã£ãŒãããã¯@IonicaBizauïŒ
ç§ãã¡ã¯ééããªã次ã®å埩ã®ããã«ããªãã®èããæ€èšããŸãã
@thinkingseriousçŽ æŽãããïŒ ããã§ããããã3.x.x
ã©ã®ããã«è¡šç€ºããããç¥ãããã§ãã
ãã®ã¯ã©ã€ã¢ã³ãã¯v2ã¡ãŒã«ãšã³ããã€ã³ãããåãé¢ããŠv3ãšã³ããã€ã³ããžã®ã¢ã¯ã»ã¹ãèš±å¯ããããã«æåããåäœæãããããã1察1ã®ãããã³ã°ã¯ãããŸããã
ãšã¯èšããã®ã®ãã¡ãŒã«ãã«ããŒã®ç®çã¯ãv2ã®å Žåãšåãããã«ç°¡åã«é話ã§ããããã«ããããšã§ãã ç§ãã¡ã¯ãŸã ããã«ããŸãããæåã«æ»ã£ãŠãããã«å€ãã®å埩ã楜ãã¿ã«ããŠããŸãã
@thinkingseriousç§ã¯ãããèŠãŸããããç§ã¯æ¬¡ã®ç¹ã奜ãã§ã¯ãããŸããïŒ
var
ãŸãã¯let
ãŸãã¯åæ§ã®ããŒã¯ãŒããªãã§å®£èšãããŠããïŒããããããæ··ä¹±ããŸãã äŸïŒ from_email = new helper.Email("[email protected]")
代ããã«var from_email = ...
new helper.Email
ã䜿çšããããšã¯ãéåžžã«äžèŠªåã§ãã ããã¯ãããããã¢ãžã¥ãŒã«å
ã®äœã¬ãã«ã®æ©èœã«ã©ããããããšãã§ããŸãã Content
ã Mail
ãªã©ãåãã§ããmethod
ã path
ã body
æåã§èšå®ããã®ã¯ããã¯ãéåžžã«äžäŸ¿ã§ããerr, data, ...
圢åŒã§ããå¿
èŠããããŸããèŠããã«ãIMHOã_quick start_ã¯ãé»åã¡ãŒã«ãéä¿¡ããããã®äœã¬ãã«ã®å®è£ ã§ãã ããã¯ãããæ·±ãæ©èœã«ã¯åœ¹ç«ã¡ãŸããã_ã¯ã€ãã¯ã¹ã¿ãŒã_ã«ã¯çµ¶å¯Ÿã«åœ¹ç«ã¡ãŸããã ð
çŽ æŽããããµãŒãã¹ãšã¢ãžã¥ãŒã«ãããããšãããããŸããã âš
@IonicaBizau ã
çŽ æŽããããã£ãŒãããã¯ãããããšãïŒ
ã¡ãŒã«ãã«ããŒã®æ¬¡ã®ã€ãã¬ãŒã·ã§ã³ãæ§ç¯ãããšãã«ãç§ãã¡ã¯ééããªãããªãã®èããåç §ããŸãã
æ£è§£ã§ãããã®æåã®ããŒãžã§ã³ã¯ãAPIã®èãã©ãããŒã§ãã èšç»ã¯ãããªããããããšã®ããã«ãã³ãã¥ããã£ã®ãã£ãŒãããã¯ã«åºã¥ããŠãã®æ©èœãåŸã ã«æ¹åããããšã§ãïŒ
ã³ãã¥ããã£ãžã®ãæ¯æŽãšè²¢ç®ã®ããã«ãç§ãã¡ã¯ããªãã«ããã€ãã®çåãéããããšæããŸãã Tã·ã£ãã®ãµã€ãºãšéµéå äœæãèšèŒããã¡ãŒã«ã
å¿ èŠã«å¿ããŠããã£ãŒãããã¯ãè¿œå ããŠãã ããã å床ãæè¬ããŸãïŒ
@IonicaBizau
次ã®ãããªããšãã§ããŸãã
var sg = require('sendgrid').SendGrid('API_KEY');
var request = sg.emptyRequest()
request.body = {
"content": [
{
"type": "text/html",
"value": "<html><p>Hello, world!</p></html>"
}
],
"from": {
"email": "[email protected]",
"name": "My Name"
},
"personalizations": [
{
"to": [
{
"email": "[email protected]",
"name": "John Doe"
}
]
}
],
"template_id": "TEMPLATE_ID",
};
request.method = 'POST'
request.path = '/v3/mail/send'
sg.API(request, function (response) {
console.log(response.statusCode)
console.log(response.body)
console.log(response.headers)
});
ç§ã¯ãã«ããŒæ§æããããã®æ§æã®æ¹ã奜ãã§ãã äŸãèŠãŠãã ããã圌ãã¯ç§ãããªãå©ããŠãããŸããã
https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/mail/mail.js
HTH
@thinkingserious WowowowïŒ ééããªãããŸãã ããããšã-å©ããŠãããŠããããïŒ ð
@peterkuiperç§ããããè©ŠããŸãããã text/html
ãhtml
ã«çœ®ãæããã®ãééãããšæããŸãããã®ãããã³ã³ãã³ãã¯æ·»ä»ãã¡ã€ã«ãšããŠè¡šç€ºãããŸããã 次ã«ãããŒãžã§ã³ãããŠã³ã°ã¬ãŒãããããšã«ããŸããã
ããããç¹°ãè¿ãã«ãªããŸãããããã¯ãŸã äœã¬ãã«ã«èŠããŸãïŒ request.method = ...
ã content
é
åã§MIMEã¿ã€ããéä¿¡ãã³ãŒã«ããã¯ã§response
åŒæ°ãªã©ïŒã
ããããšã@peterkuiperïŒ
ãã®ã¹ã¿ã€ã«ã®äŸãå é±READMEã«è¿œå ããŸãã:)
@IonicaBizau ã
ã¯ãããã®äœã¬ãã«ã®ãã®ã¯ããã«é ãããŸãã
@thinkingseriousãªã¯ãšã¹ãããŸããªãé衚瀺ã«ãªããšèããŠããããã§ãð
@IonicaBizauã®ãã°ãããææ¡ã«ç¶ããŠã
var sg = require('sendgrid').SendGrid('API_KEY');
sg.addTo(x);
sg.addBcc(email);
sg.addBcc(email);
sg.addHeader(header);
SDKãä»ããŠãã®ã¬ãã«ã®è©³çŽ°ãå ¬éããå¿ èŠã¯ãªãããã§ãã
ãŸããããããã§ã«æ©èœã§ãããã©ããã¯ããããŸãããããããã®åŒã³åºãããã§ãŒã³ã§ãããšäŸ¿å©ã§ãã
var sg = require('sendgrid').SendGrid('API_KEY');
sg.addTo(x)
.addBcc(email)
.addBcc(email)
.addHeader(header)
.send();
ããããšãããããŠè¯ãä»äºãç¶ããŠãã ããð
@jamesdixon ã
è¿œå ã®ãã£ãŒãããã¯ãããããšãïŒ
ã¡ãŒã«ãã«ããŒãæ¡åŒµããŠå®è£ ã®é衚瀺ãããã«æå¹ã«ãããŸã§ã¯ã @ adambuczynskiã®ãã°ããããã«ãªã¯ãšã¹ãã確èªããŠãã ããïŒ //github.com/sendgrid/sendgrid-nodejs/pull/261ã ããã¯ããªãã®ç¹å®ã®èãã«çŽæ¥å¯ŸåŠãããã®ã§ã¯ãããŸããããããã¯æ£ããæ¹åãžã®äžæ©ã§ãã
@thinkingseriousäœã¬ãã«ã®ãªã¯ãšã¹ãã¯ãŸããªãé衚瀺ã«ãªããšsendgrid-rest
ã䜿çšã§ããŸãã ãã®ããã«ããã®ã©ã€ãã©ãªãè¡ãå¿
èŠãããã®ã¯ãé»åã¡ãŒã«ã®éä¿¡ãèš±å¯ããããšã ãã§ãããã®ãããé»åã¡ãŒã«éä¿¡APIã®ã¿ãå
¬éããŸãã
ããã¯ãé¢å¿ã®åé¢ãè¡ãããã®ããã±ãŒãžã®çŠç¹ãå°ãçããŠã
@adambuczynski ã
ç§ãã¡ã®èšç»ã¯ããã«ããŒãä»ããŠæœè±¡åã¬ã€ã€ãŒãå®è¡ããããšã§ãã ã¡ãŒã«ãæåã§ãããè¿ãå°æ¥ããµããŠãŒã¶ãŒç®¡çãšãã³ãã¬ãŒãçšã«ã¡ãŒã«ãè¿œå ããäºå®ã§ãã ããããæåã«ã¡ãŒã«ãã«ããŒã磚ãããããæšæºã«ããå¿ èŠããããŸãã
æ£è§£ã§ãããã®ã©ã€ãã©ãªã¯sendgrid-restã®éåžžã«èãã¬ã€ã€ãŒã§ãããäŸãUSAGEãã¡ã€ã«ãåäœãã¹ããè¿œå ããã ãã§ãïŒãããã¯ãã¹ãŠã Swaggerå®çŸ©ã䜿çšããŠèªååãããŠããŸã[ããããªãŒãã³ãœãŒã¹ã«ããããšèããŠããŸã]ïŒã é·æçã«ã¯ããã¹ãŠã®ãšã³ããã€ã³ãã«ãã«ããŒã³ãŒããå®è£ ããåæ¹åã®ããŒã¿æ€èšŒãå®äºãããã®æ©èœã®ã³ã¢ãèªååããããšãæ³å®ããŠããŸãã ã¯ãŒã¯ãããŒãšãŠãŒã¹ã±ãŒã¹ã¯æäœããããŸãã
ä»åŸæ°é±é/æ°ãæã«ããã£ãŠãGitHubã§ããŒãããããå ¬éãããããªããã£ãŒãããã¯ãæäŸããŸãã
ãŸãã8ææ«ãŸã§ã«ããã®ã©ã€ãã©ãªã«Incoming ParseWebhookã®ãµããŒããè¿œå ããäºå®ã§ãã
ãã®è³ªåãããŠãããŠããããšãããããŠç§ã®è¿äºãããªããšã³ãã¥ããã£ããã®ãããªããã£ãŒãããã¯ãåŒãèµ·ããããšãé¡ã£ãŠããŸãã ãããã³ãã¥ããã£äž»å°ã®ã©ã€ãã©ãªã«ããSendGridã«ãã£ãŠãµããŒãããã³äž»å°ãããããã«ããŸãã
@thinkingseriousã®ã¢ããããŒããããããšãã ä»åŸãsendgridnodejsã©ã€ãã©ãªã§åœ¹å²ãæãããããšæããŸãã
ãã®æ®µéã§ãªã解æãµããŒããè¿œå ããã®ã§ããïŒ æ¥å¹Ž1æã«ParseãµãŒãã¹ãå»æ¢ããããšæããŸããã
@thinkingseriousããã§äœããæäŒãã§ããããšãããã°ãpingã
@adambuczynskiããã¯çŽ æŽããããã¥ãŒã¹ã§ãïŒ ãŸãããã«ãªã¯ãšã¹ãã¯ãããã«è¿ã¥ããŠããŸãã æ¥é±åãã«ããŒãžã§ããããã«ãªããšæããŸãã
Parseã«é¢ããŠã¯ããŸã æ£åŒã«å»æ¢ããããšã決å®ããŠããŸããã ã©ã€ãã©ãªã«ãµããŒããè¿œå ããããšã¯ããããç¶ç¶ãããã©ããã決å®ããããã®ãã¹ãã®äžéšã§ãã
@IonicaBizau ã
ããããšãããããŸããïŒ ã©ãããããããé¡ãããããŸãã
ã¡ãŒã«ãã«ããŒã䜿çšããŠè€æ°ã®åä¿¡è
ãèšå®ããæ¹æ³ã¯ãããŸããïŒ
helper.Mail(from_email, subject, to_email, content)
ãpersonalization.addTo
ã䜿çšããŠåä¿¡è
ãèšå®ããŠããããšã«æ°ä»ããŸãããããã¯åä¿¡è
ã®é
åã§ã¯ãªã1人ã®åä¿¡è
ã§ã®ã¿æ©èœãïŒããããç§ã¯ééã£ãŠããŸãïŒããã«ããŒã¯setTo
æäŸããªããšæããŸã
ç§ã¯ãšããŒãœãã©ã€ãŒãŒã·ã§ã³ãèªåã§èšå®ããŠããå ŽåãŠããããšããããlet personalization = new helper.Personalization();
ç§ã¯äœãã§ããpersonalization.tos = [email, email]//email=new helper.Email(email_address, name)
ãããã¯å®å
šãªã®ã§ããïŒ å°æ¥ã®ãªãªãŒã¹ã§å€æŽãããå¯èœæ§ã¯ãããŸããïŒ
@ albert-the-creatorç§ã¯ããã次ã®ããã«äœ¿çšããŸãïŒ
//Helpers
const Mail = sendgrid.mail.Mail;
const Email = sendgrid.mail.Email;
const Personalization = sendgrid.mail.Personalization;
//Create new mail object
let mail = new Mail();
//Create recipients
let recipients = new Personalization();
recipients.addTo(new Email(data.to, data.toname));
//Set recipients
mail.addPersonalization(recipients);
ããšãã°ã«ãŒãã§recipients.addTo
è¡ãç¹°ãè¿ãããšã§ãè€æ°ã®åä¿¡è
ãè¿œå ã§ãããšæããŸãã
ãã®ã¢ãããŒãã¯éåžžã«åé·ã§ãEã¡ãŒã«ã¯ã©ã¹ãšããŒãœãã©ã€ãŒãŒã·ã§ã³ã¯ã©ã¹ã«åãããŠããŸãã ã¡ãŒã«ã¢ãã¬ã¹ãè¿œå ããŠéä¿¡ãããå ŽåããããŸããããããå®çŸããã«ã¯å€ãã®ã³ãŒãè¡ãå¿ èŠãªããã«æããŸãã
@ albert-the-creatorã
ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ã人ã ãåäžã®é»åã¡ãŒã«ãããç°¡åã«éä¿¡ã§ããããã«ããããã«äœãããŸãããåºæ¬çã«ã¯ãããã«ã¡ã¯é»åã¡ãŒã«ãæ©èœã§ãã
è€æ°ã®ã¡ãŒã«ã®å Žåã¯ããããã次ã®äŸã«åŸãå¿ èŠããããŸãïŒèªåã§ããŒãœãã©ã€ãºãèšå®ããŠãã®ãã¹ãéå§ããŠããããïŒïŒ https ïŒ
ããŒãœãã©ã€ãºã«ã€ããŠèªãããšã圹ç«ã€å ŽåããããŸãïŒ https ïŒ
ãã«ããŒã¯ééããªãé²åããŸãããé倧ãªå€æŽã¯ã¡ãžã£ãŒãã€ã³ããªãªãŒã¹ã§ç€ºãããŸãã ãã ããAPIã倧ããå€ããããšã¯ãªããšæããŸãã
@adambuczynski ã
ãããã€ã³ããŠãããŠããããšãïŒ ãã®ãããªè¿œå ã®äžè¬çãªãŠãŒã¹ã±ãŒã¹ãããã³ãã¬ãŒããå«ãã¡ãŒã«ã®éä¿¡ãªã©ãèæ ®ããŠããã«ããŒãæŽæ°ããå¿ èŠããããŸãã
@thinkingseriousãã«ããŒAPIã¯ãæéãããã°ãªãã¡ã¯ã¿ãªã³ã°/æ¹åããããšã«ãèå³ããããŸã:)
@adambuczynski ã
ããã¯ãããã§ããããªãããããå§ããããšã«æ±ºãããšããç§ã«pingããŠãã ããã ãŸãã¯ãããªãã®åã§éå§ããå Žåã¯ãpingãå®è¡ããŸãã
@bcootnerã®ã³ãŒãã䜿çšããŸãããã
@otmezger ã
ãã©ããŒã¢ããããŠãããŠããããšãïŒ
ç§ã¯ä»é±ãã®äŸã«åãçµãã§ããŸããããªãã¯ãããREADMEã«ãªã³ã¯ãããŠããã®ãèŠã€ããã§ãããã
ãã³ãã¬ãŒããã«ããŒã¯äœ¿çšããŸãããããã«ããŒload
ã¡ãœãããä»ããŠHTML圢åŒãšããã¹ã圢åŒã®äž¡æ¹ã®ãã³ãã¬ãŒããšããŒã·ã£ã«ãããŒãããæ¹æ³ãå
±æããŸãã
/**
* Load an email (both plain text and html)
*/
load(email, data, req) {
//Get filenames
const PARTIAL_HTML = path.resolve('./app/components/' + email + '.html');
const PARTIAL_TEXT = path.resolve('./app/components/' + email + '.txt');
//Append some globals
if (req) {
Object.assign(data, {
app: {
title: req.app.locals.APP_TITLE,
version: req.app.locals.APP_VERSION,
url: req.app.locals.APP_BASE_URL,
},
date: {
year: moment().format('YYYY'),
date: moment().format('DD-MM-YYYY'),
},
});
}
//Return promise
return Promise.all([
Promise.all([
readFile(TEMPLATE_TEXT, 'utf8'),
readFile(PARTIAL_TEXT, 'utf8'),
]).spread((template, partial) => {
return template.replace('{{partial}}', partial);
}),
Promise.all([
readFile(TEMPLATE_HTML, 'utf8'),
readFile(PARTIAL_HTML, 'utf8'),
]).spread((template, partial) => {
return template.replace('{{partial}}', partial);
}),
]).then(result => result.map(contents => replaceData(contents, data)));
},
次ã«ãããã次ã®ããã«äœ¿çšããŠãSendgridã§äœ¿çšã§ãããªããžã§ã¯ããååŸã§ããŸãã
let email = mailer.load('user/emails/verify-email-address', data, req)
.spread((text, html) => ({
to: user.email,
from: req.app.locals.EMAIL_IDENTITY_NOREPLY,
subject: 'Verify your email address',
text, html,
}));
ãã³ãã«ããŒãã³ãã¬ãŒãã®ãããªãã®ã䜿çšããããã«äŸãç°¡åã«é©åãããããšãã§ããŸãã äžèšã®äŸã§ã¯ã replaceData
ãã«ããŒã¯ããã³ãã«ããŒã®ãããªã¿ã°ãæäŸãããããŒã¿ã«çœ®ãæããåçŽãªé¢æ°ã§ãã
ãããé©åãã©ããã¯ããããŸãããããã¡ãŒã«ãã«ããŒãã䜿çšããªãããšã§ãèšãç¥ããªãã»ã©ã®æéãç¯çŽã§ããŸããã ããã¯ãšãŠãã€ã©ã€ã©ããåŸããããš2.0ã«ããŠã³ã°ã¬ãŒãããŸããã ãã¡ã¯ããªã¿ã€ãã®é¢æ°ã䜿çšããŠæå¹ãªV3JSONãçæããŠããã ãã§ãV3 APIã®æ¹åã«éåžžã«è奮ããŠããŸãïŒå®éã«äœ¿çšã§ããããã«ãªã£ãããïŒã
ãããæåã¯èŠåŽããŸããã ç§ã¯æããŸã
ãã«ããŒã¯ããããããå¹ççã§äœ¿ããããããããšãã§ããŸãã ç§ã¯...ããã ãã
ã³ã¢ã®sendgridã¢ãžã¥ãŒã«ã®äžéšã«ãã¹ãã§ã¯ãªããšãã䞻匵ããŸããã
é¢å¿ã®åé¢ãè¡ãã人ã
ããããã䜿çšããããšãéžæã§ããããã«ããããã
ããããããäžåºŠèŠãŠãå
·äœçãªãã®ãæãä»ãããšãã§ãããã©ããã確èªããŸã
ææ¡ã
éã2016幎8æ26æ¥ã«ã¯ãåå5æ48åã·ã§ãŒã³ã»ãªã³ã[email protected]ã¯æžããŸããïŒ
ãããäŸã«ãããã®ãã©ããã¯ããããŸãããããã¡ãŒã«ãã«ããŒãã䜿çšããªãããšã«ãã£ãŠ
ç§ã¯èšãç¥ããªãã»ã©ã®æéãç¯çŽããŸããã ããã¯ãããªã£ãåŸã§ã
欲æ±äžæºç§ã¯æ æã«2.0ã«ããŠã³ã°ã¬ãŒãããŸãããâ
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/sendgrid/sendgrid-nodejs/issues/252#issuecomment -242479491ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAd8Qu5iRLFQwoKlRd2fP5oioT1uLqB6ks5qjdV2gaJpZM4JAiac
ã
@seanlindo ã
ãã£ãŒãããã¯ããå¯ãããã ãããããšãããããŸãã
ã¡ãŒã«ãã«ããŒãªãã§ãã®ã©ã€ãã©ãªã䜿çšããäŸã次ã«ç€ºããŸããhttps ïŒ
Mail Helperã¯æåã®ããŒãžã§ã³ã§ããã次ã®ããŒãžã§ã³ã®æ¹åãæ¯æŽããããã«ãããªãã®ãããªãã£ãŒãããã¯ã«äŸåããŠããŸãã çºçããç¹å®ã®åé¡ãå ±æããŠãããããä¿®æ£ããããã®ãã±ãããäœæã§ããããã«ããŠããã ããŸãããã
ãŸããã¡ãŒã«ãã«ããŒãæ¹åããŠãã¥ãŒã®äžäœã«ç§»åã§ããããã«ãããã¯ãã°ã¿ã¹ã¯ã«æ祚ãè¿œå ããŸãã ããããšãïŒ
@adambuczynski ã
ç§ã¯ããªãã®çŽ æŽããããç¶ãã®ãèŠãŸã:)
ç§ã¯ããªãã®ãã£ãŒãããã¯ã楜ãã¿ã«ããŠããŸããç§ã¯ãããçŽ æŽãããããšãç¥ã£ãŠããŸãïŒ
@julesbou ã
äžè¬çãªãŠãŒã¹ã±ãŒã¹ã®äŸãæäŸããUSE_CASES.mdãã¡ã€ã«ãéå§ããŸããã æåã¯ãã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã§ãã:)
ç§ã¯ããªãã®ãã£ãŒãããã¯ã楜ãã¿ã«ããŠããŸããç§ã¯ãããçŽ æŽãããããšãç¥ã£ãŠããŸãïŒ
ð»
@thinkingseriousãã¡ããã§ãïŒ äžæ¥ããããããã ããããããŠç§ã¯ããªãã«å ·äœçãªäŸãæäŸããŸãã
ããã¯ããã§ç§ã®ãæ°ã«å ¥ãã®ã¹ã¬ããã®1ã€ã§ã:)
ããªãã®ãã£ãŒãããã¯ã¯ããã®ã©ã€ãã©ãªã®æ¬¡ã®ã€ãã¬ãŒã·ã§ã³ã«ãšã£ãŠéèŠã«ãªããšæããŸããããã¯ãé倧ãªå€æŽã«ãªãå¯èœæ§ããããŸãã å°ãæéããããŸããããç§ãã¡ã®ææ¡ãã芧ãã ããã https://github.com/sendgrid/sendgrid-nodejs/issues/290
ããããšãïŒ
@thinkingserious v3ã§å°å ¥ããããã¹ãŠã®Sendgridãã«ããŒã¯ã©ã¹ã«ã€ããŠäœããããªã«æ°ã«ãªãã®ããããããç解ããããã«ãªããŸãã...ãããã®æ°ãå€ãããŠãã¡ãŒã«ã®éä¿¡ãäžå¿ èŠã«è€éã«ãªããŸãïŒP
Sendgridã®ãã¹ãŠã®ã³ãŒãããªãŒããŒããŒã«ããããªãã£ãã®ã§ã代ããã«åçŽãªã©ãããŒã sendgrid-mailerãäœæããããšã«ããŸããã
Sendgridã®ãã«ããŒã¯ã©ã¹ã¯ããã¯ã°ã©ãŠã³ãã§åœ¹ç«ã¡ãŸãããã¡ãŒã«ã¢ãã«ãäœæããŠæ€èšŒããããã«ãAPIãšããåãããããã ãã«åŒ·å¶ããå¿
èŠã¯ãªããšæããŸãã Nodeã¢ããªã®äœæãæ¬æ¥ãããè€éã«ãªãããã«ããŒã®ååãéåžžã«æ··ä¹±ããå¯èœæ§ãããããšãããããŸãããããšãã°ã Mail
ãšEmail
ãŸãã
åºæ¬çãªäŸã¯åé¡ããã瀺ããŠãããšæããŸãã
https://github.com/sendgrid/sendgrid-nodejs#with -mail-helper-class
ããã¯ããã¡ãŒã«ãéä¿¡ãããããšããåºæ¬çãªããšã«ã¯ããŸãã«ãè€éã«æããŸãã é»åã¡ãŒã«ãéä¿¡ããåã«ã8ã€ã®ç°ãªãäŸåé¢ä¿ãããŒããã15è¡ã®ã³ãŒããèšè¿°ããå¿ èŠããããŸãã
ãã ãããã«ããŒã¯ã©ã¹ã䜿çšããªãããšã¯ãééããªãããã«æªãããšã§ãããã®å Žåãé»åã¡ãŒã«JSONãªã¯ãšã¹ãã®å¿ èŠãªæ§é ãç解ããèªåã§æ£ããå ¥åããå¿ èŠãããããã§ãã 1ã€ã®ééãã§ãªã¯ãšã¹ããç°¡åã«å£ããŸãã
ããã§ãã·ã³ãã«ã§äœ¿ããããAPIãã«ããŒã®èåŸã«ãããã¹ãŠã®ãã«ããŒã¯ã©ã¹ããžãã¯ãæœè±¡åããŠãSendgridã§ã¡ãŒã«ãéä¿¡ããã®ãåã³ç°¡åã§æ¥œãããã®ã«ãªãããã«ããŸãã:)
æãåºæ¬çãªäŸã¯æ¬¡ã®ããã«ãªããŸãã
//Load mailer and set API key (only needed once)
const mailer = require('sendgrid-mailer').config(API_KEY);
//Create email data
const email = {
to: '[email protected]',
from: 'Someone <[email protected]>',
subject: 'Hello world',
text: 'Hello plain world!',
html: '<p>Hello HTML world!</p>',
};
//Send away
mailer.send(email); //Returns promise
ãªã¯ãšã¹ãã¯èå°è£ã§äœæãããSendgridã®ãã«ããŒãééçã«äœ¿çšããŸãã
ãŸããè€æ°ã®ã¡ãŒã«ã®éä¿¡ããµããŒãããããã«ã«ã¹ã¿ãã€ãºãå¿
èŠãªå Žåã«Sendgridãªããžã§ã¯ããå
¬éããSendgrid Mail
ã€ã³ã¹ã¿ã³ã¹ãåãå
¥ããto / fromãã£ãŒã«ãã®ããŸããŸãªåœ¢åŒïŒ Name <[email protected]>
ãªã©ïŒãåãå
¥ããŸãã READMEãåç
§ããŠãã ããã
ãããããŸã æ¹åã®äœå°ããããŸãããSendgrid APIã«å§åãããããšãªã䜿çšããããšèããŠãã人ã ã®ããã«ããã®ãœãªã¥ãŒã·ã§ã³ãããã§å ±æããããšæããŸããã
ããã誰ãã«ãšã£ãŠåœ¹ç«ã€ããšãé¡ã£ãŠããŸãããããŠå€åããã¯ããåçŽãªAPIãå ¬éããããšã§ããã®ã©ã€ãã©ãªã®å°æ¥ã®ããã®äœããã®æ¹åæ§ãæäŸããããšãã§ããŸã:)
cc @julesbouã¯å°ãé ããŠããŸãããããã§ãçšéãèŠã€ããããšãé¡ã£ãŠããŸãã
@adamreisnzçå£ã«ãããããšãã
sendgridãä»ããŠã¡ãŒã«ãéä¿¡ããç§ã®ããã¯ã°ã©ãŠã³ããžã§ãã¯v4.0.7ã䜿çšããŠããŸããããããã¯ãã§ã«ååã«è€éã§ããã ç§ã¯ææ°ããŒãžã§ã³ã«ã¢ããã°ã¬ãŒãããŸããããæ²ããããšã«ãã¹ãŠãå£ããŸããã ã¡ãŒã«ãéä¿¡ããã®ãããã«è€éã§ããããšããããšã«äžæºãæããŠããã®ã§ãæŽæ°ããããšããããŸããã§ããã
ãšã¯ãããããã®åçŽãã¯ãŸãã«ç§ãæ¢ããŠãããã®ã§ãã é±æ«ã«è©ŠããŠã¿ãŸãã
也æ¯ïŒ
@jamesdixonç§ã¯ãŸã v3.xxã§ç«ã¡åŸçããŠããŠãã¢ããã°ã¬ãŒãããããããŸããã§ãã:)
ããŸãããã°ãããªãã¯ããã圹ã«ç«ã€ãšæãã§ãããã ãããããªãã®ããã«ã©ã®ããã«æ©èœããããç§ã«ç¥ãããŠãã ããããããŠäœãé倧ãªäžè¶³ããããªãã°ãããããšãïŒ
@adamreisnz ã
ããã¯çŽ æŽãããã§ãããããŠãããç§ãã¡ã®ã³ãã¥ããã£ãšå ±æããŠãããŠããããšã:)
tldr; ç§ãã¡ã®ãã«ããŒã¯ã©ã¹ã¯çµäºããŠããããããªãã¯ãã§ã«ç§ãã¡ãåãã£ãŠãããšãããŸã§ç§ãã¡ãæã¡è² ãããŠããŸã:)
ç§ãã¡ã¯ããªãã®èãã«å®å šã«åæããŸããããã¯ã7ã€ã®SDKãã¹ãŠã§çŸåšåãçµãã§ããv3ã©ã€ãã©ãªã®æŽæ°ã®ãã§ãŒãºã§ãã Node.jsãããžã§ã¯ãã®è©³çŽ°ã«ã€ããŠã¯ããã¡ãã®Mail HelperEnhancementãããžã§ã¯ããåç §ããŠãã ããã
çŸåšãCïŒã©ã€ãã©ãªãå®æãããŠããŸãã ç§ãã¡ã¯ããã®Node.jsã®ã©ã€ãã©ãªãèšç»ãããã®ã®å ·äœçãªäŸãååŸããã«ã¯ãåç §ããŠãã ãããããã æ°æ¥ä»¥å ã«ãªãªãŒã¹ããããšæã£ãŠããŸãã
ã ãããç§ã¯ææ¡ããããŸãïŒ
ããã§ã¡ãŒã«ãã«ããŒã«ãœãªã¥ãŒã·ã§ã³ãè¿œå ããŠããã ããŸãããïŒCïŒã§è¡ã£ãã®ãšåæ§ïŒã ãã®å Žåãããªãã®ä»äºã¯ãã倧ããªãªãŒããéæãããšæããŸãã ããã§ãªããã°ããŸã£ããåé¡ãããŸããã ããªãã¯MITã©ã€ã»ã³ã¹ã®äžã§ããªãã®ãããžã§ã¯ããæçš¿ããã®ã§ãç§ãã¡ãããªãã®è¯ãä»äºããå°ãåãããªãç§ãã¡ãèš±ããŠãããããšãé¡ã£ãŠããŸã;ïŒãããŠãã¡ãããç§ãã¡ã¯ããªããããªãã®è²¢ç®ã®å瞟ãèªããããããã«ããŸãã
äœæ¥ãåå¥ã«è¡ãããšã«ããå Žåã¯ãããã®[ã³ãã¥ããã£ã©ã€ãã©ãª]ã»ã¯ã·ã§ã³ã«ãªã³ã¯ãè¿œå ããŠãã ããã
çŽ æŽãããç¶ç¶çãªãµããŒãã«æè¬ããŸãã ããªãã¯ããã¯ïŒ
@thinkingseriousããªããåãæ¹åã«åããããšãèããŠãããšèããŠããããã§ãã CïŒã®äŸã®æ¹ãèŠæ ãã¯è¯ãã§ãããJSã®å®è£ ã«ã¯ãŸã ããè€éã ãšæããŸãã ãã¹ãŠã®ã¯ã©ã¹ãäœæããããšããJSã«åå ããããã®æè¯ã®æ¹æ³ã§ãããšã¯éããŸããã
ããªãã®ææ¡ã«ã€ããŠã¯ãç§ã¯ãŸã å éšã§ãã«ããŒã¯ã©ã¹ã䜿çšããŠããã®ã§ãå ¬åŒã©ã€ãã©ãªã«ç§»æ€ããã®ã«å®éã«ã©ãã ã圹ç«ã€ãããããŸããã ç§ã¯ããããã倧èŠæš¡ãªæžãçŽãïŒv5ãªã©ïŒãæäŒã£ãŠããŠãŒã¶ãŒãšããŒãã³ãã¥ããã£ããã®å ¥åãåãå ¥ããŠãæ°é®®ãªãã®ããå§ããŠã䜿ãããããå¿ èŠã«å¿ããŠæè»ãªçŽ æŽãããAPIãèãåºãåŸåããããŸãã
ãããããããŸã§ã®éãã©ãããŒããã³ãŒãã®äžéšãåããŠå ¬åŒã©ã€ãã©ãªã§äœ¿çšãããå Žåã¯ããã²ãããå©çšããŠãã ãã:)ãã®ããŒãžã«ã©ãããŒãžã®ãªã³ã¯ãè¿œå ããŸãð
ç§ãäœæãããã®ãšåæ§ã«ããããžã§ã¯ãã2ã€ã®ããã±ãŒãžã«åå²ããããšããå§ãããŸãã1ã€ã¯APIãšå¯Ÿè©±ããããã®ãªã¯ãšã¹ãããžãã¯ãå«ãäžäœã¬ãã«ã§ããã1ã€ã¯ã¡ãŒã«éä¿¡å°çšã®äžäœã¬ãã«ã§ãã
äžäœã¬ãã«ã®ããã±ãŒãžã¯ãAPIãžã®ãã«ã¢ã¯ã»ã¹ãå¿ èŠãªäººã«äœ¿çšã§ããŸãããã¡ãŒã©ãŒããã±ãŒãžã¯ãé»åã¡ãŒã«ãéä¿¡ããã人ã«é©ããŠããŸãã ãããŠãã¡ãããå éšã§ã¯ãã¡ãŒã©ãŒã¯APIããã±ãŒãžã䜿çšããŸãã
@thinkingseriousããã«ã€ããŠã©ãæããŸããïŒ
@adamreisnz ã
ãã€ãã®ããã«ãææ ®æ·±ããã£ãŒãããã¯ãããããšãããããŸãã
ãã®æç¹ã§ãããžã§ã¯ããåå²ããå¿ èŠããããã©ããã¯ããããŸããã çŸåšã®ãã«ããŒã¢ãã«ã§ãåæ§ã®çµæãåŸããããšæããŸãã ãšã¯èšããã®ã®ãç§ã¯å°æ¥ã®ããŒãžã§ã³ã§æ°ããã¢ãŒããã¯ãã£ãæ¢æ±ããããšã«ãªãŒãã³ã§ããããã®ããã«ããªããåå ãããããšæããŸãã
ããŸãããã°ãã³ãã¥ããã£ã®ä»ã®äœäººããåå ããã§ãããã
ç§ã¯ããã«ã€ããŠããæ·±ãèããæŽæ°ãããMailHelperãå®è£ ãããšãã«åé¢äžããŸãã
ããªãã®ãµããŒããšç§ãã¡ã®ããã¥ã¡ã³ããžã®ãªã³ã¯ãè¿œå ããŠãããŠããããšãïŒ
ããã¯é¢å¿ã®åé¢ã®åé¡ã§ãã ã¡ã€ã³ã©ã€ãã©ãªå ã«ç°¡åã«éµéããããã®ãã«ããŒ/ã©ãããŒãå«ããããšãã§ããŸãããç§ã®æèŠã§ã¯ãäž¡æ¹ã®å¯èœæ§ã®ããäžå©çãŸãã¯äžå¿ èŠãªè€éåã«å¯Ÿãã2ã€ã®å¥ã ã®æžå¿µãæ··åšããŠããŸãã ããããå¥ã ã«ä¿ã€ããšã§ãæ¶è²»è ã¯å¿ èŠãªã©ã€ãã©ãªïŒãŸãã¯äž¡æ¹ïŒãéžæã§ããããã«ãªããå¢çãæ確ã«å®çŸ©ãããŠãããããããããäž¡æ¹ã®ã©ã€ãã©ãªã®éçºã容æã«ãªããŸãã
Nodeã¢ãžã¥ãŒã«ãšnpmã¢ãžã¥ãŒã«ã®æ§è³ªäžãé¢å¿ã®åé¢ãå¯èœãªéãåé¢ããåããã±ãŒãžã«ç¹å®ã®ã¿ã¹ã¯ãå®è¡ãããïŒãããŠãããäžæã«è¡ãïŒã®ãèªç¶ã ãšæããŸãã ããã¯ãNodeãæåã«äœ¿ãå§ãããšããæ £ããªããã°ãªããªãã£ããã®ã§ãããäžåºŠæ £ãããšãNodeãæäŸããã¯ãªãŒã³ã§ã·ã³ãã«ãªããã±ãŒãžãéçºããèªç±ãšèœåãæ°ã«å ¥ããŸããã
ã³ãã¥ããã£ããã®ã³ã¡ã³ãããåŸ ã¡ããŠãããŸãã
ãŸããããªãã¯ç¢ºããªè°è«ã§ééããªã説åŸåããããŸã:)
æéãå²ããŠã説æããã ããèª ã«ããããšãããããŸãã
ç§ã¯ãã§ã«ãã®ã©ã€ãã©ãªã§ã®äœæ¥ã«æ»ãããšã楜ãã¿ã«ããŠããŸããããä»ã§ã¯ããªããšã³ãã¥ããã£ãšäžç·ã«ãã®SDKã§ã®äœæ¥ã«æ»ãããšã«æ¬åœã«è奮ããŠããŸãã
çŽ æŽãããã§ããããªããããã«åãçµãã€ããã§ãããšãç§ã«ç¥ãããŠãã ãã:)
ç§ã¯4é±éäŒãã§ããã®ã§ããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãä»äºãããããã®æãã€ãã«ãããŸãðŽ
@adamreisnz ã
ããã§ãšãããããŸãïŒ
ã¯ããã«é«ãã¬ãã«ã®ãã¡ãŒã©ãŒããã±ãŒãžãããŸãã«ç§ãã¡ãæãã§ãããã®ã§ãã ããã€ãã®ã¡ãŒã«ãéä¿¡ããå¿ èŠããããŸãã
ååã®ããŒãžã§ã³ã§ã¯ãããã¯éåžžã«åçŽã§ããããä»ã§ã¯ã²ã©ãæ··ä¹±ã«ãªã£ãŠããŸãã ãåºæ¬ãã®äŸã«ã¯çŸåš8ã€ã®å€æ°ãå®çŸ©ãããŠãããç¹å¥ãªã³ã³ã¹ãã©ã¯ã¿ãŒãå¿ èŠã§ãã 䜿ããããã®ç¹ã§å€§ããåŸéããŸããã
ãšåããããåçŽã§ãªããã°ãªããŸãã
sendgrid.send({
from: fromEmail,
fromName: fromName,
to: toEmail,
subject: 'Hello'
...
})
.then(...)
.catch(...)
.finally(...)
ããã¥ã¡ã³ãã¯å¿ èŠãããŸãããã³ããŒããŠè²Œãä»ããããšãã§ããäŸã§ãã ãããç§ãã¡ã®ããŒã ã«ãšã£ãŠã®SendGridã®äž»èŠãªäŸ¡å€ã§ãããæ®å¿µãªããçŸåšã¯æ¬ èœããŠããŸãã
@adamreisnzèŠæ ããããŸãã éåžžã«æçœãªèšèšäžã®æ±ºå®ã SendGridã®çµŠäžèšç®ã«åå ããŠããããšãé¡ã£ãŠããŸãã
@thinkingseriousã¯ãã¡ã€ã³ããã¥ã¡ã³ãã@adamreisnzãããžã§ã¯ãã«ããã«ããããã¹ãŠãå€§å¹ ã«ç°¡çŽ åãããŸããä»æ¥ã®åãã«ããã«ã€ããŠç¥ã£ãŠãããšããããimhoãéå°ã«èšèšãããJavaã䜿çšããããšããé çã®æéãç¯çŽã§ããã§ãããã JSã§APIã«åœ±é¿ãäžããŸããã ãŠãŒã¶ãŒãæããã®ã§ã¯ãªãããŠãŒã¶ãŒãæããã®ãæäŸããŠãã ãã:-)
ãŸããV2 APIãå»æ¢ãããæ°ããã¢ã«ãŠã³ããV3 APIã䜿çšããããã«åŒ·å¶ãããããã«ãªã£ããããä»ã®éçºè ãããã§é »ç¹ã«çµäºãå§ããŠãé©ããªãããšã«æ³šæããŠãã ããã å人çã«ãç§ãæåã«è©Šããã®ã¯nodemailerïŒsendgridãã©ã³ã¹ããŒãã¯v2ã§ãæ©èœããŸãïŒã䜿çšããããšã§ãããããã¯éå»æ°åã®ãããžã§ã¯ãã§æå³ããããŸããããä»åã¯åäœãããŸã§ã«æ°žé ã«æéãããããŸããã ããŒãã³ãã¥ããã£ã§ã®nodemailerã®äººæ°ãèããã°ãæšæž¬ããªããã°ãªããªãã®ã§ããã°ãä»åŸæ°ãæã§ãã®ããã«æããŠããŸãã®ã¯ç§ã ãã§ã¯ãããŸããã
@ fisch0920ãã£ãŒãããã¯ãããããšãããããŸããä»åŸæ°é±éã§@thinkingseriousãšååããŠ
ã¿ãªãããããã«ã¡ã¯ã
SendGrid Node.jsã¡ãŒã«ãã«ããŒã®åèšèšã«èå³ããããããããªããšæããŸããïŒ https ïŒ
ãã£ãŒãããã¯ãããã ããã°å¹žãã§ãã
æ¬å ·ã
ãšã«ããŒ
æŽæ°ã®ããã«ïŒ378ã«ç§»åããŠãã ãããããããšãïŒ
æãåèã«ãªãã³ã¡ã³ã
@thinkingserious v3ã§å°å ¥ããããã¹ãŠã®Sendgridãã«ããŒã¯ã©ã¹ã«ã€ããŠäœããããªã«æ°ã«ãªãã®ããããããç解ããããã«ãªããŸãã...ãããã®æ°ãå€ãããŠãã¡ãŒã«ã®éä¿¡ãäžå¿ èŠã«è€éã«ãªããŸãïŒP
Sendgridã®ãã¹ãŠã®ã³ãŒãããªãŒããŒããŒã«ããããªãã£ãã®ã§ã代ããã«åçŽãªã©ãããŒã sendgrid-mailerãäœæããããšã«ããŸããã
Sendgridã®ãã«ããŒã¯ã©ã¹ã¯ããã¯ã°ã©ãŠã³ãã§åœ¹ç«ã¡ãŸãããã¡ãŒã«ã¢ãã«ãäœæããŠæ€èšŒããããã«ãAPIãšããåãããããã ãã«åŒ·å¶ããå¿ èŠã¯ãªããšæããŸãã Nodeã¢ããªã®äœæãæ¬æ¥ãããè€éã«ãªãããã«ããŒã®ååãéåžžã«æ··ä¹±ããå¯èœæ§ãããããšãããããŸãããããšãã°ã
Mail
ãšEmail
ãŸããåºæ¬çãªäŸã¯åé¡ããã瀺ããŠãããšæããŸãã
https://github.com/sendgrid/sendgrid-nodejs#with -mail-helper-class
ããã¯ããã¡ãŒã«ãéä¿¡ãããããšããåºæ¬çãªããšã«ã¯ããŸãã«ãè€éã«æããŸãã é»åã¡ãŒã«ãéä¿¡ããåã«ã8ã€ã®ç°ãªãäŸåé¢ä¿ãããŒããã15è¡ã®ã³ãŒããèšè¿°ããå¿ èŠããããŸãã
ãã ãããã«ããŒã¯ã©ã¹ã䜿çšããªãããšã¯ãééããªãããã«æªãããšã§ãããã®å Žåãé»åã¡ãŒã«JSONãªã¯ãšã¹ãã®å¿ èŠãªæ§é ãç解ããèªåã§æ£ããå ¥åããå¿ èŠãããããã§ãã 1ã€ã®ééãã§ãªã¯ãšã¹ããç°¡åã«å£ããŸãã
ããã§ãã·ã³ãã«ã§äœ¿ããããAPIãã«ããŒã®èåŸã«ãããã¹ãŠã®ãã«ããŒã¯ã©ã¹ããžãã¯ãæœè±¡åããŠãSendgridã§ã¡ãŒã«ãéä¿¡ããã®ãåã³ç°¡åã§æ¥œãããã®ã«ãªãããã«ããŸãã:)
æãåºæ¬çãªäŸã¯æ¬¡ã®ããã«ãªããŸãã
ãªã¯ãšã¹ãã¯èå°è£ã§äœæãããSendgridã®ãã«ããŒãééçã«äœ¿çšããŸãã
ãŸããè€æ°ã®ã¡ãŒã«ã®éä¿¡ããµããŒãããããã«ã«ã¹ã¿ãã€ãºãå¿ èŠãªå Žåã«Sendgridãªããžã§ã¯ããå ¬éããSendgrid
Mail
ã€ã³ã¹ã¿ã³ã¹ãåãå ¥ããto / fromãã£ãŒã«ãã®ããŸããŸãªåœ¢åŒïŒName <[email protected]>
ãªã©ïŒãåãå ¥ããŸãã READMEãåç §ããŠãã ããããããããŸã æ¹åã®äœå°ããããŸãããSendgrid APIã«å§åãããããšãªã䜿çšããããšèããŠãã人ã ã®ããã«ããã®ãœãªã¥ãŒã·ã§ã³ãããã§å ±æããããšæããŸããã
ããã誰ãã«ãšã£ãŠåœ¹ç«ã€ããšãé¡ã£ãŠããŸãããããŠå€åããã¯ããåçŽãªAPIãå ¬éããããšã§ããã®ã©ã€ãã©ãªã®å°æ¥ã®ããã®äœããã®æ¹åæ§ãæäŸããããšãã§ããŸã:)
cc @julesbouã¯å°ãé ããŠããŸãããããã§ãçšéãèŠã€ããããšãé¡ã£ãŠããŸãã