본문 바로가기
<툴, 프로그램 관련>/[Script]

Outlook에서 Python Script 실행하기

by Aggies '19 2021. 3. 16.
반응형

MS에서는 보안의 이유로 Outlook 2016 이후 부터는 script를 실행할 수 있는 Rule을 제한했다. 그렇다 하더라도 언제나 walk-around는 존재하기에 관련해서 간단하게 포스팅 해보고자 한다.

 

우선, 내가 Outlook에서 script를 실행 규칙을 실행하려고 했었던 이유는 업무의 생산성을 향상하기 위해서였다.

 

HQ인 Gainesville 이외에 다양한 위치에 원격 클리닉이 존재하고 그 곳에 회선제공을 위해서 다양한 ISP를 이용하고있다. 즉, 필연적으로 발생할 수 밖에 없는 상황이 회선 제공업체의 scheduled maintenance.

 

각 ISP로부터 Scheduled maintenance 이메일을 받으면 (해당 메일에는 회선을 구분할 수 있는 회선번호 or account number가 포함) 특정 정보를 확인 후 해당 유지보수 시간, 해당 시간 동안 발생할 수 있는 서비스 장애 impact 등을 자동으로 팀 내 공유하는 side project를 진행하려고 계획했다.

 

우선, VBA를 작성할 수 있도록 Developer (개발자 도구) 리본 메뉴를 활성화시켜 보도록하자.

 

File >> Options >> Customize Ribbon >> Developer 항목 클릭

 

Developer를 활성화시키게 되면 메뉴바에 Developer라는 메뉴가 추가됨을 볼 수 있다. 그 이후,

 

Developer >> Macro Security >> Macro Settings

 

위와같이 활성화 시키면 특정 조건에 결부된 Rule이 발생하면 Macro를 실행시킬지 알람을 받을 수 있으며 해당 팝업메뉴에서 실행여부를 결정할 수 있다.

 

리본메뉴 or Alt + F11을 통해 VBA 코드를 입력할 수 있는 곳으로 이동해보자. 아래의 코드를 ThisOutlookSession에 추가하고 저장하자. 해당 코드는 별다른 동작을 취하지 않고 특정 경로에 있는 Python 파일을 실행하게끔 하는 과정이다.

Public Sub run_Python(Item As Outlook.MailItem)
    FilePath = """Network Engineering\Automate\Outlook Email Firing\emailFiring.py"""
    Path = "python " + FilePath
    Shell Path
End Sub

 

앞서 언급한 것처럼 scheduled maintenance 이메일을 ISP로 부터 받으면 내가 원하는 script를 실행한다는 목적이 있으니 설정한 규칙이 match 될 수 있도록 설정해보도록 하자.

 

Rules >> Manage Rules & Alerts >> New Rule >> Apply this rule after the message arrives

 

나는 제목에 maintenance가 있을 경우 내 script를 동작하도록 설정할 예정이다. 물론, 너무 관련 규칙은 최대한 narrow down하는게 좋다. 어떤 조건인지를 결정했으면 해당 조건이 match가 된 후 어떤 action을 취할지 결정해야 한다.

서론에서 언급한 것과 같이 보안상의 이유로 해당 기능은 기본값에 의해 disable되어있다. 해당 기능을 활성화 시키기 위해서는 registry 값을 변경해줘야 한다. 

 

아래 버튼을 통해 펼쳐진 코드를 복사 후 fileName.reg 파일로 저장 후 (파일 확장자를 유의) 더블클릭하여 실행하면 "run a script" action을 선택할 수 있게된다.

 

더보기

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security]
"EnableUnsafeClientMailRules"=dword:00000001

 

그리고 실행할 script를 고를 수 있도록 나타난 것을 확인했다면 설정 끝!

 

 

Refernce site: www.slipstick.com/outlook/rules/outlook-run-a-script-rules/

반응형