파이톤과 SendGrid로 그려서 당신에게 이메일을 보내는 비밀 산타클로스
13348 단어 webdevprogrammingpythonbeginners
GitHub의 항목here.
또 1년 중 그때야!이것은 빠른 과정이지만 나는 내가 신성한 추구로 록 스타 프로그래머가 되는 과정에서 많은 것을 배웠다고 생각한다.재미있는 간단한 프로젝트에서 한 해를 끝내고 싶다는 얘기다.그래서 우리 엄마가 올해 우리 비밀 산타클로스를 그려달라고 했을 때 그렸어요.
만약 당신이 이 개념에 익숙하지 않다면, 많은 친구들이나 가족들 사이에서 크리스마스를 축하하는 것은 좋은 방법이며, 월급을 써서 선물을 살 필요가 없다.그룹의 모든 구성원들은 수신자로 분배되어 있으며, 그/그녀의 비밀 산타클로스로서 (무작위 분배는 비밀이기 때문에) 당신은 이 사람을 위해 선물만 구매할 수 있다.이렇게 하면 모든 사람이 몇 십 개의 싼 것이 아니라 좋은 선물을 받을 수 있다.
지난 몇 년 동안 나는 기본적인 랜덤 이름 생성기를 사용했지만, 단점은 모든 임무와 나의 비밀 산타클로스가 누군지 알고 있다는 것이다.그래서 올해는 똑똑히python 스크립트를 사용해서 산타클로스에게 이메일로 연락하자.
__
CSV 파일에서 산타 목록 가져오기
올해 판다 도서관을 배웠는데 CSV 파일에서 정보를 추출하기에 아주 적합합니다.이것은 스크립트에서 직접 작성하는 것보다 사용자의 친밀한 데이터 입력 방식이다.이것은 우리의 CSV 파일입니다. 우리의 여섯 명의 친구와 우리가 그들에게 연락하는 데 필요한 정보를 포함합니다.
__
블랙리스트
블랙리스트, 퀘벡스?
나는 산타클로스가 어쨌든 얻지 말아야 할 이름 목록을 추가하는 것이 편리할 것이라고 생각한다.예를 들면 다음과 같습니다.
__
SecretSanta 클래스 만들기
나는 C++로 프로그래밍을 배운다. 내 머릿속에는 대문자 단어가 있다.그렇다면 왜 시크릿 산타 클래스를 추가해서 우리의 스크립트를 구성하지 않습니까?다음은 우리가 그리는 데 필요한 클래스 구성원과 방법입니다.
class SecretSanta:
def __init__(self, name, email, black_list = None):
""" initialize class variables """
self.name = name
self.email = email
self.recipient = None # will be allocated later
self.black_list = list()
self.black_list.append(self.name) # adding own name
if black_list:
self.black_list += black_list.split('|')
def __repr__(self):
""" override print method (optional) """
# return string to print
def contact_secret_santa(self):
""" contact recipient """
# use SendGrid example here
__json 파일에서 설정 불러오기
마찬가지로, 나는 코드를 직접 편집하는 것보다 외부 파일을 불러오는 변수를 사용하는 것이 더 좋다는 것을 발견했다.그래서 보통 설정을 추가합니다.json 파일을 내 모든 항목에 가져옵니다.다음은 우리가 정의해야 할 변수입니다.
{
"csv_file": "data/secret_santas_list.csv",
"email_file": "data/email.html",
"attempts_limit": 100,
"sg_sender_email": "[email protected]",
"sg_api_key": "your_api_key"
}
json 라이브러리는 이 인자들을 설정 사전에 가져오고 저장하는 데 도움을 줍니다. 스크립트에서 이 설정 사전을 더 사용할 수 있습니다.import json
with open("data/settings.json", 'r') as json_file:
SETTINGS = json.load(json_file)
print(SETTINGS['csv_file'])
# output: 'data/secret_santas_list.csv'
__주-산타 창건
우리는 이제 메인 프로그램 작성에 필요한 모든 것을 가지고 있다.
CSV 정보를 Pandas 데이터 상자에 추출하고 SecretSanta 실례를 만드는 것은 어린이 게임입니다.
from pandas import read_csv
df = read_csv(csv_file_path).fillna('')
secret_santas = []
for i in range(len(df)):
new_name = str(df['Name'][i])
new_email = str(df['Email'][i])
new_black_list = str(df['Black List'][i])
new_santa = SecretSanta(name=new_name, email=new_email, black_list=new_black_list)
secret_santas.append(new_santa)
__주 추첨
드디어 우리의 비밀 산타클로스를 그릴 수 있게 되었습니다!
우리가 블랙리스트 옵션을 도입했기 때문에 우리가 직면한 문제는 너무 많은 제한(예를 들어 어떤 불쌍한 녀석이 모든 사람의 블랙리스트에 나타난다!) 때문에 추첨이 불가능할 수도 있다는 것이다.나는 우리가 먼저 모든 블랙리스트를 분석한 후에 추첨이 가능한지 확인하는 똑똑한 알고리즘을 생각해 낼 수 있을 것이라고 믿는다.그러나 우리가 성공하거나 발생하지 않을 때까지 간단하고 간단한 길을 시도합시다!
따라서, 우리는while 순환에 모든 내용을 포장할 것입니다. 만약 그림이 성공적으로 그려지거나 (모든 사람이 비밀 산타클로스로 지정됨) 최대 횟수를 시도했다면, 이 순환은 중단될 것입니다.
다음은 제가 따르는 주요 절차입니다. GitHub project의 (평론이 양호합니다!)코드:
산타클로스에게 이메일을 보내다
이것은 우리의 마지막 걸음이다.우리는 Twilio SendGrid를 사용할 것이다. 이것은 클라우드 기반의 서비스를 제공하여 기업이 전자메일을 발송하는 것을 돕는다.이것은 그들의 수정처럼 뚜렷한 강좌에 감사하는 아주 간단한 절차이다.다음은 SendGrid 서비스를 사용하려면 따라야 할 절차입니다.
Create a SendGrid account
너는 먼저 계좌를 하나 등록해야 한다.무료 서비스는 하루에 100통에 이르는 이메일을 보낼 수 있도록 해 준다. 이것은 우리의 작은 프로젝트에 있어서 이미 충분하다.
Create a Single Sender Verification
받는 사람이 특정 주소의 이메일을 받게 됩니다.t 따라서 이 전자 우편은 사용자의 전자 우편으로 존재하고 검증해야 합니다.
Create a personal API key
이것은 중요한 걸음이다.API 키는 개인이므로 공유해서는 안 됩니다.그것은 나쁜 비밀번호가 될 것이다. (정말이지, 봐봐!)계정에서 이메일을 보낼 때마다 이 정보를 전달해야 합니다.간단하게 보기 위해서 환경 변수에 추가할 수 있습니다.
Install the SendGrid python library
마지막으로python 라이브러리를 설치할 수 있습니다.이 문서는 첫 번째 전자메일을 어떻게 보내는지 간단한 예시를 제공했다.나는 더 이상 발굴할 필요가 없다. 이것들은 모두 매우 좋다.이 프로젝트는 contact secret santa () 클래스 방법에서 이루어진 '메일 조수 클래스 없음' 예시를 사용합니다.
__
맞춤형 e-메일 컨텐츠
이것은 선택할 수 있지만 매우 좋은 작은 절차다.나는 산타클로스 자신의 손으로 메일 내용을 써서 사람들에게 그가 즐거움을 전파하도록 도와달라고 부탁하는 것을 발견했다. 이것은 더욱 즐겁고 크리스마스와 같다.Sendgrid는 전자 우편 내용에 대해 텍스트나 html 형식을 사용할 수 있도록 합니다.그렇다면 왜 그림, 색깔, 손글씨체 등을 포함하는 html 파일을 기초하지 않습니까?[NAME] 및 [RECIPIENT] 등의 태그를 배치할 수도 있습니다. 이 태그는 클래스 속성으로 바뀌어 직접 이 사람을 부를 수 있습니다.CSS를 좀 더 개인적이고 신뢰할 수 있도록 넣으세요.저는 웹 개발에 대해 잘 모르지만 제 html 템플릿을 마음대로 보십시오.
이 모든 절차를 마친 후, 그림이 성공하면, 현재 모든 실례의contact secret santa () 방법을 호출할 수 있습니다.그들은 몇 분 안에 통지를 받고, 당신의 템플릿에 따라 이메일을 받을 것입니다.야, 너도 하나 있어!
__
결론
나는 이 작은 프로젝트가 CSV와 json 파일을 가지고 놀든지, 전자메일을 보내든지,python 기술만 향상시키든지 하는 새로운 것을 가르쳐 주기를 바란다.이것은 흥미로운 마지막 프로젝트로 올해를 마치는 것입니다. 이것은 저에게 풍부한 새로운 것을 배우는 것이고 더 많은 절차가 제 목표를 실현하기를 바랍니다.
메리 크리스마스.위대한 비밀 산타클로스가 사랑하는 사람(그리고 블랙리스트에 있는 사람)과 시간을 나눈다.안녕히 계세요.
__
회사 명
표지 사진Rachel Middleton
Reference
이 문제에 관하여(파이톤과 SendGrid로 그려서 당신에게 이메일을 보내는 비밀 산타클로스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alexdjulin/draw-and-email-your-secret-santas-using-python-and-sendgrid-1d6b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)