윈도우11 파워쉘을 사용해서 메일 보내는 방법
이메일을 보내기 위해서는 지메일이나 네이버 메일 등의 메일 서비스에 접속을 해서 보내는 것이 보통이다.
하지만 직접 메일을 작성해서 상대방에게 보내는 것이 아닌 윈도우 로그인 등 특정 이벤트가 발생했을 때 메일을 보내고 싶다면 프로그램이나 스크립트를 사용해야 하는데 윈도우11에서는 파워쉘의 스크립트를 사용하여 메일을 보내는 것이 가능하다.
윈도우11 파워쉘을 사용해서 메일 보내는 방법
1. smtp 서버 주소 확인.
파워쉘 스크립트를 사용하여 메일을 보내는 것은 외부에서 려면 보내는 메일 서버가 smtp를 지원해야 한다.
우리가 흔히 사용하는 지메일이나 네이버 메일의 경우 smtp를 지원하니 설정에서 smtp의 사용 설정을 하고 서버 주소를 확인해야 한다.
(구글의 경우 smtp 설정에 추가로 2단계 인증을 하여 앱 비밀번호까지 받아야 한다)
smtp 서버 주소는 메일 서비스의 메뉴에서 확인이 가능한데 자세한 확인 방법은 아래의 아웃룩 연동 글의 smtp 설정 부분을 참고하면 도움이 될 것이다.
(아웃룩 연동에도 smtp 서버를 사용한다)
2. 메일 보내기 스크립트 작성.
smtp의 사용 설정과 서버 주소를 확인했다면 이제 파워쉘 스크립트를 작성하면 된다.
스크립트는 아래의 내용을 참고하여 smtp 주소, 메일의 계정, 패스워드 등 빨간색 글씨로 된 부분을 수정하여 메모장에 붙여 넣고, 인코딩은 ansi 확장자는 ps1로 저장하면 된다.
(지메일이나 네이버 메일이라면 포트는 587이 기본이니 변경할 필요는 없다)
# 메일 관련 $from = "보내는 메일 주소" $to = "받는 메일 주소" $subject = "메일 제목" $body = "메일 내용" # SMTP 서버 인증 정보 $smtpServer = "smtp 서버 주소" $smtpPort = 587 $username = "계정이메일" $password = "비밀번호" $securePassword = ConvertTo-SecureString $password -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($username, $securePassword) # 이메일 전송 Send-MailMessage -From $from -To $to -Subject $subject -Body $body -SmtpServer $smtpServer -Port $smtpPort -Credential $credential -UseSsl -BodyAsHtml -Encoding ([System.Text.Encoding]::UTF8) |
아래는 네이버 메일을 보내는 파워쉘 스크립트의 예시이다.
# 메일 관련 $from = "test@naver.com" $to = "test@naver.com" $subject = "네이버 메일 보내기 테스트" $body = "파워쉘을 사용해서 메일 보내기" # SMTP 서버 인증 정보 $smtpServer = "smtp.naver.com" $smtpPort = 587 $username = "test@naver.com" $password = "1234" $securePassword = ConvertTo-SecureString $password -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($username, $securePassword) # 이메일 전송 Send-MailMessage -From $from -To $to -Subject $subject -Body $body -SmtpServer $smtpServer -Port $smtpPort -Credential $credential -UseSsl -BodyAsHtml -Encoding ([System.Text.Encoding]::UTF8) |
3. 스크립트 파일 실행.
ps1 파일을 작성했다면 실행하면 된다.
실행은 아래의 명령어를 입력하면 되며 powershell로 실행하기 때문에 cmd에서 입렵해도 실행할 수 있다.
- 기본 명령어1 powershell -File "ps1 파일 경로" - 정책 무시 실행 명령어2 powershell -NoProfile -ExecutionPolicy Bypass -File "ps1 파일 경로" |
그 외 내용
- 스크립트 파일을 실행할때 한글이 깨지면서 이상한 에러가 발생한다면 인코딩과 관련된 문제일 수 있다.
ps1 파일을 메모장으로 열고 다른 이름으로 저장을 할 때 인코딩을 ANSI로 변경해서 저장하자.
- 파워쉘로 보내는 것이다 보니 메일이 스팸으로 빠지는 경우가 있다.
메일이 오지 않는다면 스팸 메일함을 확인해 보자.
네이버 메일로 테스트 했을때는 나에게 보내는 메일은 스팸으로 다른 사람에게 보내는 메일은 정상적으로 보내졌다.
- 파워쉘 스크립트가 아니더라도 sendmail 이라는 프로그램을 사용해서 메일을 보내는 것도 가능하다.
스크립트를 만들기가 잘 안된다면 이를 사용해 보자.
아래는 작업 스케줄러에 sendmail을 사용하여 작업 스케줄러에 등록하여 윈도우 로그인 시 자동으로 메일을 보내는 방법을 정리한 글이다.
앞 부분에 sendmail의 사용 방법이 정리되어 있으니 사용해보고자 한다면 도움이 되지 않을까 한다.
(파워쉘 스크립트를 작업 스케줄러에 등록하는데도 참고해도 좋다)