728x90
Python을 이용해서 Gmail을 보내는 프로그램을 작성하려고 한다.
우선 자동화 메일을 위해서는 IAMP를 설정해야 한다.
Gmail 로그인 후 톱니바퀴를 누른뒤 모든 설정 보기를 눌러준다.
그 다음 전달 및 POP/IMAP 아래에 IMAP 액세스를 사용안함에서 사용으로 바꿔준다.
여기까지 완료하였다면 이제 프로그래밍을 진행하면 된다.
import os , re
from email.mime.text import MIMEText
import smtplib
import codecs
def sendemail(gmail,gmail_pw,receive_email,text):
email_msg = MIMEMultipart('SendMail')
email_msg['Subject'] = "test"
email_msg['From'] = gmail
email_msg['To'] = gmail_pw
MIME_text = MIMEText(text)
email_msg.attach(MIME_text)
with smtplib.SMTP_SSL("smtp.gmail.com") as server:
server.login(login, password)
server.sendmail(gmail,
receive_email,
email_msg.as_string())
print('Email sent successfully')
if __name__ == "__main__":
gmail = ""
gmail_pw = ""
receive_email=""
text = ""
sendemail(gmail,gmail_pw,receive_email,text)
다음은 이메일을 보내는 완성코드이다.
gmail, gmail_pw, receive_email, text에 채워주면 된다.
프로그램을 실행시켰더니 다음과 같이 뜬다.
해킹에 잘 대응해놓은 것 같다. 찾아보니 앱을 등록하고 OAuth인증을 해야한다.
다음 주소로 이동하여 Oauth 클라이언트를 받아주어야 한다.
https://console.developers.google.com/
만든 뒤에 다운받아서 코드를 사용하면 된다.
완성된 코드는 다음과 같다.
import os , re
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
import codecs
import pickle
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from googleapiclient import errors
from googleapiclient.discovery import build
def get_service():
# If modifying these scopes, delete the file token.pickle.
SCOPES = [
'https://www.googleapis.com/auth/gmail.readonly',
'https://www.googleapis.com/auth/gmail.send',
]
creds = None
# The file token.pickle stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'email.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('gmail', 'v1', credentials=creds)
return service
def sendemail(gmail,gmail_pw,receive_email,text):
email_msg = MIMEMultipart('SendMail')
email_msg['Subject'] = "test"
email_msg['From'] = gmail
email_msg['To'] = gmail_pw
MIME_text = MIMEText(text)
email_msg.attach(MIME_text)
with smtplib.SMTP_SSL("smtp.gmail.com") as server:
server.login(gmail, gmail_pw)
server.sendmail(gmail,
receive_email,
email_msg.as_string())
print('Email sent successfully')
if __name__ == "__main__":
get_service()
gmail = ""
gmail_pw = ""
receive_email=""
text = ""
sendemail(gmail,gmail_pw,receive_email,text)
728x90
'ETC > Python' 카테고리의 다른 글
파이썬 엑셀 읽고 쓰기 (Python Excel Read / Write) (0) | 2020.07.28 |
---|---|
파이썬 exe 파일 만들기 + 자동으로 꺼지는 현상 해결 (0) | 2020.07.26 |
Daum Login with Python requests 1(소스코드) (5) | 2020.07.09 |
Naver Login with Python requests 2(소스코드) (7) | 2020.07.09 |
Naver Login with Python requests 1(소스코드) (2) | 2020.07.08 |