IT
Windows 시작/재부팅 시 자동 메일링
astrocker
2020. 5. 1. 01:00
반응형
Window 서버를 사용 중인데, 서버가 켜질 때마다 내 mail 주소로 등록된 IP를 보고해 주면 좋겠다는 생각을 하곤 했습니다. Python을 공부하다가 이 문제가 간단한 코딩으로 해결이 되어 그 결과를 여기에 기록합니다.
대부분의 가정에서 인터넷 회선은 유동IP인데요. 원격지에서 내 PC에 연결할 일이 많다거나, 서버를 돌리는 상황에서 도움이 될 만한 Tip인 것 같아요.
필요한 사전 준비물은 구글의 gmail 계정입니다. IMAP 설정이 되어 있어야 하고, 2단계 로그인까지 설정하여 앱 비밀번호를 발급받아야 합니다. 계정 비밀번호를 그대로 사용해도 되나, 보안상 유출 우려가 있으니 앱 비밀번호를 발급받아서 사용하는 걸 권합니다.
준비가 완료되면 아래와 같이 Python 코드를 작성하면 됩니다.
import smtplib, socket # 메일발송(SMTP), 네트워크 관련 모듈
from email.mime.text import MIMEText # 간단한 email 작성 모듈
from datetime import datetime # 날짜 관련 모듈
def sendMail(ip,time): # 메일 발송 함수 정의
host='smtp.gmail.com' # SMTP 서버명
sender='your-gmail@gmail.com' # 보낼 email주소
receiver='your-mail@kakao.com' # 받을 email주소
contents=str(time)+'-'+ip+'\n\n간략 본문 작성' # 메일 본문 작성
ID=sender
PW='앱비밀번호'
msg=MIMEText(contents,_charset='euc-kr') # 보낼 메시지 본문
msg['Subject']='간단한 제목 작성' + ip # 제목 (제목 + IP 주소)
msg['From']=sender # 발신 주소
msg['To']=receiver # 송신 주소
s=smtplib.SMTP(host,587) # 메일 보내기 세션 생성
s.starttls() # 지메일 TLS 보안설정
s.login(ID,PW) # 지메일 로그인 인증, 앱 비밀번호 사용
s.sendmail(sender,receiver,msg.as_string()) # 메일 보내기
s.quit() # 세션 종료
get_ip=socket.gethostbyname(socket.gethostname()) # IP주소 추출
get_time=datetime.now() # Window 시작 시간 추출
get_time=get_time.strftime('%Y-%m-%d %H:%M:%S') # 시간 표시 형식 정리
sendMail(get_ip,get_time) # 메일 발송 함수 호출
작성 한 코드를 파일로 저장하고 실행했을 때 송신 주소의 메일 저장함에 메일이 온다면 성공입니다. 다음으로 부팅 시 마다 메일을 보내도록 Window 작업 스케줄러에 등록하면 됩니다.
작업 스케줄러 등록과 구글 앱 비밀번호 생성하는 방법은 추후 update하겠습니다.
728x90
반응형