2020. 4. 10. 11:34ㆍPython/소스코드
def mailContents(self):
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
textTitle = self.title
textMailTo = self.mailto
textMailCC = self.mailcc
textBody = self.textbody
mail.Subject = textTitle
mail.To = textMailTo
mail.CC = textMailCC
mail.GetInspector
mail.HTMLBody = textBody + mail.HTMLBody
mail.Display()
회사 업무를 하다보니 매번 메일 보낼 때마다
아무렇치 않게 입력하던 오늘날짜 현재시간 이런 내용들을 수동으로 입력하고 있었다.
특히 업무 마무리 할 때? 보내는? 그런메일을 보낼 때가 있는데
금일 업무보고 _2019.01.20
약간 이런식....
그래서 Python 배우는 김에
만들어봤다..
실행 화면!
우선 가장 중요한 outlook을 사용하기위해 import를 해주고
시간과 날짜를 컨트롤하기 위한 datetime 및 time을 import 해준다.
from datetime import date
import datetime
import time
import win32com.client as win32
그 다음 메일에 들어갈 text들을 담을 사용자 정의 함수를 만든다.
제목 및 수신자는 텍스트로 넣고
내용 Body는 메일서명과 같이 넣어주기 위해서 html형식으로 내용을 만든다.
* 그냥 텍스트만 넣고 싶으면 텍스트형식으로 해도 된다.
ex) "안녕하세요. \n ㅎㅎㅎㅎㅎ"
그림이 포함 된 서명과 함께 텍스트를 쓰고싶다면 html형식으로!
코드를 다 작성한 다음 마지막에 딕셔너리 형식으로 값을 리턴 하도록 코드를 짠다.
def num_1():
today = str(date.today().strftime("%Y.%m.%d"))
texttitle = "메일제목(" + today + ")" # 메일제목(2019.01.10)
textMailTo = "받는사람"
textMailCC = "참조"
textBody = """
<body>
<p>안녕하세요...<br>
<br>
<br>
<br>
감사합니다. <br>
홍길동 드림
</p>
</body>
"""
_mailinfo = {'title': texttitle, 'mailTo': textMailTo, 'mailCC': textMailCC, 'htmlBody': textBody}
return _mailinfo
들어갈 내용들을 정리 했으니 이제 아웃룩을 실제 기동하고 내용을 채우는 코드를 작성한다.
여러가지의 메일내용을 보내기 위해 Class를 만들어서 구현 했다.
class Outlook(object):
def __init__(self,title, mailto, mailcc, textbody):
self.title = title
self.mailto = mailto
self.mailcc = mailcc
self.textbody = textbody
Class에다가 메일에 들어갈 제목, 받는 사람, 참조, 내용을 저장하기 위한
멤버변수들을 만들어 주고 저장을 한다.
그런 다음 멤버변수들을 Class 밖에서도 꺼내 쓸 수 있게 멤버메소드를 만든다.
def getTitle(self):
return self.title
def getMailTo(self):
return self.mailto
def getMailCC(self):
return self.mailcc
def getBody(self):
return self.textbody
이제 실제 메일 화면을 켜는 코드를 작성!
간단하게 설명 하면
outlook 객체를 만든다.
mail 이라는 객체에 outlook의 메일 아이템을 생성과 동시에 할당 한다.
그 다음 Class에 저장 되어있는 제목, 받는사람, 참조, 내용을 변수에 저장한다.
mail.Subject = 메일 제목에 들어갈 내용을 넣음.
mail.To = 받는 사람 텍스트를 넣음.
mail.cc = 참조를 넣음.
mail.GetInspector # 요건 정확히 뭔지 모르겠다... StacFlow에서 코드를 활용하는데 대부분 작성해서 넣음...
mail.HTMLBody = HTML형식의 Body 에 Text 내용을 넣어줌.
textBody(내용) + mail.HTMLBody(기존 서명데이터),
이렇게 쓰는 이유는 텍스트가 먼저 나오고 htmlbody의 내용을 밑으로 하기 위함.
mail.display 값을 다 넣었으니 실제 메일 화면을 Display 한다
def mailContents(self):
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
textTitle = self.title
textMailTo = self.mailto
textMailCC = self.mailcc
textBody = self.textbody
mail.Subject = textTitle
mail.To = textMailTo
mail.CC = textMailCC
mail.GetInspector
mail.HTMLBody = textBody + mail.HTMLBody
mail.Display()
이제 사용자가 번호를 입력 하면 원하는 내용으로 메일을 쓰기 위해
메뉴 번호를 입력하도록 유도 한다.
a = Outlook 클래스 멤버변수에 값을 넣어 저장해야 하는데
아까 맨 위에서 적어둔 내용을 꺼내는 작업이다.
num_1() 이라는 사용자정의 함수에 리턴 값이 이런식으로 되어있으므로 texttitle, textMailto 요런 값으로
Class 멤버변수에 넣음!
{'title': texttitle, 'mailTo': textMailTo, 'mailCC': textMailCC, 'htmlBody': textBody}
아웃룩 Class에 아래 처럼 되어있으므로
def __init__(self,title, mailto, mailcc, textbody):
self.title = title
self.mailto = mailto
self.mailcc = mailcc
self.textbody = textbody
아래의 변수에 값을 이런식으로 넣는다.
a = Outlook(num_1().get('title'), num_1().get('mailTo'), num_1().get('mailCC'), num_1().get('htmlBody'))
그 다음 실제 메일을 보내는 메소드 실행!
def mailContents(self):
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
textTitle = self.title
textMailTo = self.mailto
textMailCC = self.mailcc
textBody = self.textbody
mail.Subject = textTitle
mail.To = textMailTo
mail.CC = textMailCC
mail.GetInspector
mail.HTMLBody = textBody + mail.HTMLBody
mail.Display()
실제 실행할 때는 이렇게 사용! 위에서 a = outlook() 을 사용했기 때문에 a가 outlook Class 인 것
a.mailContents()
그러면 메일 내용이 꽉채워진 화면을 볼 수 있을 것이다.
num = int(input("실행 할 메뉴를 선택하세요."))
if num == 1:
print("1번을 선택했습니다.")
# 메일
print("실행 중... \n")
a = Outlook(num_1().get('title'), num_1().get('mailTo'), num_1().get('mailCC'), num_1().get('htmlBody'))
a.mailContents()
print("실행 완료... \n")
<아래는 풀 소스코드>
from datetime import date
import datetime
import time
import win32com.client as win32
class Outlook(object):
def __init__(self,title, mailto, mailcc, textbody):
self.title = title
self.mailto = mailto
self.mailcc = mailcc
self.textbody = textbody
def getTitle(self):
return self.title
def getMailTo(self):
return self.mailto
def getMailCC(self):
return self.mailcc
def getBody(self):
return self.textbody
def mailContents(self):
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
textTitle = self.title
textMailTo = self.mailto
textMailCC = self.mailcc
textBody = self.textbody
mail.Subject = textTitle
mail.To = textMailTo
mail.CC = textMailCC
mail.GetInspector
mail.HTMLBody = textBody + mail.HTMLBody
mail.Display()
def num_1():
today = str(date.today().strftime("%Y.%m.%d"))
texttitle = "메일제목(" + today + ")" # 메일제목(2019.01.10)
textMailTo = "받는사람"
textMailCC = "참조"
textBody = """
<body>
<p>안녕하세요...<br>
<br>
<br>
<br>
감사합니다. <br>
홍길동 드림
</p>
</body>
"""
_mailinfo = {'title': texttitle, 'mailTo': textMailTo, 'mailCC': textMailCC, 'htmlBody': textBody}
return _mailinfo
def num_2():
today = str(date.today().strftime("%Y.%m.%d"))
texttitle = "메일제목(" + today + ")" # 메일제목(2019.01.10)
textMailTo = "받는사람2"
textMailCC = "참조"
textBody = """
<body>
<p>안녕하세요...<br>
<br>
<br>
<br>
감사합니다. <br>
홍길동 드림
</p>
</body>
"""
_mailinfo = {'title': texttitle, 'mailTo': textMailTo, 'mailCC': textMailCC, 'htmlBody': textBody}
return _mailinfo
menu = """
1. XX에게 메일 보내기
2. XX에게 메일 보내기
3. 미구현...
※ 메뉴 외 번호를 입력하면
프로그램이 종료 됩니다...
"""
while True:
print(menu)
num = int(input("실행 할 메뉴를 선택하세요."))
if num == 1:
print("1번을 선택했습니다.")
# 메일
print("실행 중... \n")
a = Outlook(num_1().get('title'), num_1().get('mailTo'), num_1().get('mailCC'), num_1().get('htmlBody'))
a.mailContents()
print("실행 완료... \n")
elif num == 2:
print("2번을 선택했습니다.")
print("실행 중... \n")
# 메일
a = Outlook(num_2().get('title'), num_2().get('mailTo'), num_2().get('mailCC'), num_2().get('htmlBody'))
a.mailContents()
print("실행 완료... \n")
else:
print("종료 합니다.")
break
'Python > 소스코드' 카테고리의 다른 글
파이썬 네이버검색어 가져오기3 (0) | 2020.12.30 |
---|---|
Python 숫자 입력받아서 요일 가져오기 (0) | 2020.04.10 |
Python 파이썬 웹사이트의 이미지 가져오기 (0) | 2020.04.10 |
Python 파이썬 실시간 검색어가져오기(Requests사용) (0) | 2020.04.10 |
Python 파이썬 exe 실행파일 만들기 (0) | 2020.04.10 |