aws
AWS SES(Amazone Simple Email Service)
C/H
2019. 4. 12. 17:26
AWS SES
- Amazone Simple Email Service
- AWS SDK를 사용하여 이메일 전송
- Amazon SES의 제한 값
- Amazon SES 전송 한도 모니터링
- Amazon SES에서 반환하는 API 오류 코드
- 리전 및 Amazon SES
- 서비스별 리번 표
SES 설정
- SES Home 에서 Domain, Email Addresses 를 등록한다.
- 이메일을 등록하면 Amazone SES에서 이메일 주소 확인으로 이메일을 확인해야 한다.
- 도메인을 등록하면 Amazone SES에서 도메인 확인으로 도메인을 확인해야 한다.
- 확인된 이메일, 도메인으로 메일발송을 테스트 후 실제 서비스에서 사용하려면 Amazon SES 샌드박스 환경에서 나오기로 샌드박스 환경에서 샌드박스에 배치된 계정 삭제를 요청한다.
code
npm i aws-sdk
npm i express-validator
npm i express
npm i joi
npm i log4js
# mail.validation.js
module.exports = {
to: {
exists: true
},
cc: {
exists: false
},
bcc: {
exists: false
},
subject: {
exists: true
},
text: {
exists: true
}
};
const express = require('express');
const router = express.Router();
const { checkSchema, validationResult } = require('express-validator/check');
const schema = require('./mail.validation');
const logger = require('../../modules/logger');
const AWS = require('aws-sdk');
AWS.config.loadFromPath(__dirname+'/config.json');
const charset = "UTF-8";
var send = function(req, res, next){
try{
var ses = new aws.SES(); // Create a new SES object.
var params = { // Specify the parameters to pass to the API.
Source: req.body.form||req.query.from||'INFO <info@domain.com>',
Destination: {
ToAddresses: [
req.body.to||req.query.to||null
],
},
Message: {
Subject: {
Data: req.body.subject||req.query.subject||null,
Charset: charset
},
Body: {
Text: {
Data: req.body.text||req.query.text||null,
Charset: charset
},
Html: {
Data: req.body.html||req.query.html||null,
Charset: charset
}
}
},
ConfigurationSetName: 'ConfigSet'
};
ses.sendEmail(params, function(err, data) { //Try to send the email.
if(err) { // If something goes wrong, print an error message.
var result = {ok:false, params: params, errors: err};
logger.email.error(result);
return res.status(422).json(result);
}
var result = {ok:false, params: params, data: data};
logger.mail.info(result);
return res.status(200).json(result);
});
}catch(e){
var result = {ok:false, params: params, errors: err.array?err.array():err||null};
logger.mail.error(result);
return res.status(422).json(result);
}
};
router.get('/', checkSchema(schema), send);
router.post('/', checkSchema(schema), send);
module.exports = router;
반응형