일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- auc
- Logistic linear
- Roc curve
- aof
- 인공지능
- beautifulsoup
- 크롤링
- selenium
- PYTHON
- AI
- 머신러닝
- SMTP
- pos_tag
- Django
- ML
- 원소주
- semi-project
- json
- stopwords
- 잡담
- 트러블슈팅
- 파일입출력
- 이것이 코딩 테스트다
- EarlyStopping
- Trouble shooting
- category_encoders
- 그리디
- pandas
- find_all()
- IOPub
- Today
- Total
개발 블로그
[CODELION 강의] [심화] 같이 푸는 PYTHON - 번역기, 메일 보내기 본문
[CODELION 강의] [심화] 같이 푸는 PYTHON - 번역기, 메일 보내기
draidev 2022. 3. 18. 23:19
- BeautifulSoup를 이용한 Crawling
- API로 날씨 정보를 가져와서 오늘의 날씨 프로그램
- googletrans라이브러리를 활용한 번역기 프로그램
- SMTP를 활용한 메일 보내기 프로그램
이번에는 세 번째 '번역기 프로그램', 네 번째 '메일 보내기 프로그램'에 대해 보겠습니다!!
목차>
목차
01_01 googletrans
googletrans는 구글에서 제공하는 파이썬 라이브러리로 번역과 관련된 기능을 제공합니다.from googletrans import Translator
를 추가해주고translator = Translator()
를 통해 번역기를 생성합니다.translator.detect(text)
는 매개변수가 어떤 언어인지 판별해줍니다.
번역 할 언어를 입력할때는 다음주소를 참조합니다 : https://py-googletrans.readthedocs.io/en/latest/
한국어는 ko
입니다.
from googletrans import Translator
translator = Translator() # 번역기 생성
text = input("번역을 원하는 문장을 입력해주세요 : ")
destination = input("어떤 언어로 번역을 원하시나요? : ")
result = translator.translate(text,destination) # 번역기로 번역한 언어를 result에 저장
detected = translator.detect(text) # 번역할 언어를 감지
print("==========출 력 결 과==========")
print(detected.lang,":",sentence)
print(result.dest,":",result.text)
print("=============================")
메일 보내기 프로그램 만들기 전 구글 보안 설정하기
1. 구글Gmail -> 설정 -> See all settings -> Forwarding and POP/IMAP -> Enable IMAP체크
2. 구글 크롬 설정 -> google 계정관리 -> 보안 -> "내 계정이 안전하게 보호됩니다" 클릭 -> 2단계 인증 설정(인증)
-> 맨위에 "사용 안함"
구글 크롬 설정 -> google 계정관리 -> 보안 -> 아래로 쭉 내리면 "보안 수준이 낮은 앱의 액세스"에서 사용으로 설정
02_01 메일 보내기, SMTP
SMTP(Simple Mail Trasfer Protocol)는 전자 우편을 송신하고 수신하는 데 사용되는 TCP/IP 프로토콜입니다. 일반적으로 POP3 또는 IMAP(Internet Message Access Protocol)와 함께 사용되어 메세지를 서버 메일함에 저장하고 사용자를 위해 서버에서 주기적으로 메세지를 다운로드합니다.
파이썬에서는 smtplib를 import하여 사용합니다.
import smtplib
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 465
""" smtplib.SMTP() : 우리가 원하는 서버에 연결하는 함수 """
""" smtplib.SMTP_SSL() : 보안처리를 위해 실제로는 SMTP_SSL()을 사용한다 """
smtp = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT)
print(smtp)
02_02 MIME
MIME는 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘입니다: 웹에서 파일의 확장자는 별 의미가 없습니다. 그러므로, 각 문서와 함께 올바른 MIME 타입을 전송하도록, 서버가 정확히 설정하는 것이 중요합니다. 브라우저들은 리소스를 내려받았을 때 해야 할 기본 동작이 무엇인지를 결정하기 위해 대게 MIME 타입을 사용합니다.
from email.message import EmailMessage 를 추가해줍니다. 그리고 헤더를 작성해줘야 합니다.
Header : 이메일 형식에 대한 정보를 담은 부분
Subject : 제 목
From : 발신자
To : 수신자
import smtplib
from email.message import EmailMessage
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 465
message = EmailMessage()
message.set_content("안녕하세요. 메일 보내기 코딩 중입니다.")
""" Header에 들어갈 정보들(Subject, From, To) """
message["Subject"] = "이것은 제목입니다."
message["From"] = "#######@gmail.com"
message["To"] = "######@gmail.com"
smtp = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT)
print(smtp.login("#######@gmail.com","######"))
smtp.send_message(message)
smtp.quit()
02_03 이미지 추가
이미지를 첨부해서 메일을 보내려면 아래의 함수를 사용합니다.add_attachment(image, maintype, subtype )
: 텍스트가 아닌 다른 포맷의 내용을 첨부할 때 사용하는 함수
- image : 이미지 파일
- maintype : image인지
- subtype : 이미지의 확장자
with open("codelion.jpg","rb") as image:
image_file = image.read()
""" what(파일명, 파일 데이터) """
image_type = imghdr.what('codelion', image_file)
""" add_attachment(이미지, maintype = 파일 형식, subtype = 파일 확장자) """
message.add_attachment(image_file, maintype='image',subtype=image_type)
02_04 정규표현식
정규 표현식 : 문자열에서 나타나는 특정 패턴을 알아내서 대응시키기 위해 사용되는 표현식
^ : 정규표현식의 시작
$ : 정규표현식의 끝)
* : 문자가 0번 이상 반복(즉, 문자가 없어도 True)
+ : 문자가 한 번 이상 반복
{m,n} : 문자가 m번부터 n번까지 반복
""" 정규 표현식 """
import re
reg = "^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]{2,3}$"
print(re.match(reg, "drtkdldjstm@gmail.com"))
정규 표현식으로 유효한 이메일 형식인지 판단하고 메일을 발송했는지 못했는지 출력해 주는 함수를 작성해 보면 다음과 같습니다.
if문의 조건으로 re.match()
의 값을 bool값으로 변환하여 True
, False
를 판별합니다.
""" 정규 표현식으로 검사한 후 메일을 보내는 함수 """
def sendEmail(addr):
""" 정규 표현식 """
reg = "^\[a-zA-Z0-9.+\_-\]+@\[a-zA-Z0-9\]+\\.\[a-zA-Z0-9\]{2,3}$"
if bool(re.match(reg, addr)):
smtp.send\_message(message)
print("정상적으로 메일이 발송되었습니다.")
else:
print("유효한 이메일 주소가 아닙니다.")
'Programming Language > Python' 카테고리의 다른 글
[Python] 기초 데이터 타입(int, float)과 문자열(string) (0) | 2022.03.21 |
---|---|
[Toy_Project] Python 웹크롤링 - EPL순위 가져오기 (0) | 2022.03.21 |
[CODELION 강의] [심화] 같이 푸는 PYTHON - 오늘의 날씨 (0) | 2022.03.18 |
[CODELION 강의] [심화] 같이 푸는 PYTHON - 크롤링 (0) | 2022.03.17 |
[CODELION 강의] 일단 만드는 PYTHON (0) | 2022.03.15 |