diff --git a/src/web/python/batch/mail_sender.py b/src/web/python/batch/mail_sender.py index 63229f7..ddb5a4e 100644 --- a/src/web/python/batch/mail_sender.py +++ b/src/web/python/batch/mail_sender.py @@ -37,10 +37,9 @@ class MailSender: bank_owner_name = "박지상" def __init__(self): - print("") + post_param = self.make_default_post_param() - @staticmethod - def send_email(post_param, timestamp, signature): + def send_email(self, timestamp, signature): url = NCloud.host_name_url + NCloud.request_url # echo url."\n" @@ -54,7 +53,7 @@ class MailSender: # print('headers : ' + json.dumps(headers)) # print('data : ' + json.dumps(post_param)) # exit(0) - res = requests.post(url, headers=headers, data=json.dumps(post_param)) + res = requests.post(url, headers=headers, data=json.dumps(self.post_param)) print('sending mail result : {0}'.format(res.status_code)) print('result text : \n{0}'.format(res.text)) @@ -78,54 +77,11 @@ class MailSender: return NCloud.host_name_url + NCloud.request_url + \ "/requests/" + NCloud.request_id + "/status" - @staticmethod - def get_post_param(post_param, key): - if key in post_param: - return post_param[key] - elif key == "parameters" or key == "recipients": - return array_map() - elif key == "individual": - return false - # elif key == "body" or key == "sender_address" \ - # or key == "sender_name" or key == "templateSid" \ - # or key == "title": - # return "" + def set_post_param(self, key, value): + self.post_param[key] = value - return '' - - def make_post_param(self, post_param): - post_param = { - "advertising" : False, # 광고메일여부 default: False - "attachFileIds" : [], # 첨부파일ID - "body" : self.get_post_param(post_param, "body"), # Email 본문 - "individual" : self.get_post_param(post_param, "individual"), - # 개인발송여부 (개인발송 시 참조인, 숨은참조 무시됨) default: true - "parameters" : self.get_post_param(post_param, "parameters"), - # 치환 파라미터 (전체 수신자에게 적용), ‘치환 ID’ 를 key로, ‘치환 ID에 맵핑되는 값’ 을 value로 가지는 Map 형태의 Object - "recipients" : self.get_post_param(post_param, "recipients"), - "referencesHeader" : "", - # 특정 메일을 모아서 보기 위해 네이버 메일에서 지원하는 기능, 해당 필드에 동일한 값을 입력한 메일들을 모아서 볼 수 있다. (다음의 형태가 되어야 함 : ) - "reservationUtc" : "", - # 예약 발송 일시 ( 1970년 1월 1일 00:00:00 협정 세계시(UTC) 부터의 경과 시간을 1/1000초로 환산한 정수 ), reservationDateTime 값보다 이 값이 우선 적용된다. - "reservationDateTime" : "", - # 다음과 같은 형태의 예약 발송 일시 (‘yyyy-MM-dd HH:mm’ UTC+09:00), reservationUtc 값이 우선한다. - "sender_address" : self.get_post_param(post_param, "sender_address"), # 발송자 Email 주소 - "sender_name" : self.get_post_param(post_param, "sender_name"), # 발송자 이름 - "temprequest_id" : "", # 첨부파일 등록 시 사용한 임시 요청 ID - "templateSid" : self.get_post_param(post_param, "templateSid"), # 템플릿 ID - "title" : self.get_post_param(post_param, "title"), # Mail 제목 - } - return json.dumps(post_param) - - @staticmethod - def make_default_post_param(maestro_name, maestro_email): - post_param = {} - post_param['sender_address'] = MailSender.sender_email - post_param['sender_name'] = MailSender.sender_name - post_param['individual'] = False - post_param['title'] = None - post_param['body'] = None - post_param['recipients'] = [ + def set_post_param_recipients(self, maestro_name, maestro_email): + self.post_param['recipients']: [ { 'address': maestro_email, 'name': '', @@ -137,11 +93,34 @@ class MailSender: { 'address': MailSender.sender_bcc, 'name': '', - 'type': 'R', - 'parameters': None + 'type': 'B', + 'parameters': [] } ] - return post_param + + def make_default_post_param(self): + self.post_param = { + 'advertising': False, # 광고메일여부 default: False + 'attachFileIds': [], # 첨부파일ID + 'body': '', # Email 본문 + 'individual': False, # 개인발송여부 (개인발송 시 참조인, 숨은참조 무시됨) default: true + 'parameters': [], # 치환 파라미터 (전체 수신자에게 적용), ‘치환 ID’ 를 key로, + # ‘치환 ID에 맵핑되는 값’ 을 value로 가지는 Map 형태의 Object + 'recipients': [], + 'referencesHeader': '', # 특정 메일을 모아서 보기 위해 네이버 메일에서 지원하는 기능, + # 해당 필드에 동일한 값을 입력한 메일들을 모아서 볼 수 있다. + # (다음의 형태가 되어야 함 : ) + 'reservationUtc': '', # 예약 발송 일시 ( 1970년 1월 1일 00:00:00 협정 세계시(UTC) + # 부터의 경과 시간을 1/1000초로 환산한 정수 ), + # reservationDateTime 값보다 이 값이 우선 적용된다. + 'reservationDateTime': '', # 다음과 같은 형태의 예약 발송 일시 (‘yyyy-MM-dd HH:mm’ UTC+09:00), + # reservationUtc 값이 우선한다. + 'sender_address': MailSender.sender_email, + 'sender_name': MailSender.sender_name, + 'temprequest_id': '', # 첨부파일 등록 시 사용한 임시 요청 ID + 'templateSid': 0, # 템플릿 ID + 'title': '' + } @staticmethod def get_timestamp(): diff --git a/src/web/python/batch/test_python.py b/src/web/python/batch/test_python.py index b7f37b9..425596c 100644 --- a/src/web/python/batch/test_python.py +++ b/src/web/python/batch/test_python.py @@ -4,17 +4,17 @@ from mail_sender import MailSender def send_mail_waiting_7days_maestro(name, email, register_date): - post_param = mail_sender.make_default_post_param(name, email) - post_param['templateSid'] = 337 - post_param['parameters'] = { - 'maestro_name': name, - 'maestro_date': register_date - } + mail_sender.make_default_post_param() + mail_sender.set_post_param('templateSid', 337) + mail_sender.set_post_param_recipients(name, email) + mail_sender.set_post_param('parameters', + {'maestro_name': name, 'maestro_date': register_date }) + timestamp = MailSender.get_timestamp() # print('hmac : ' + MailSender.hash_hmac('ripemd160', 'The quick brown fox jumped over the lazy dog.', 'secret')) signature = MailSender.make_signature(NCloud.request_url, timestamp) # print('signature : ' + signature.decode('utf-8')) - MailSender.send_email(post_param, timestamp, signature) + mail_sender.send_email(timestamp, signature) mail_sender = MailSender()