이번 포스팅에서는 gmail smtp를 이용한 이메일을 보내는 법에 대해 알아보도록 하겠습니다.
1) 기본 뼈대 구성
(1) 필요한 네임스페이스를 추가합니다.
(2) 이메일 전달 중에 발생할 수 있는 에러를 확인하기 위해 try , catch 문을 추가합니다.
2) 이메일 전달 코드 작성
(1) 전달 메일 관련 코드
MailMessage() 클래스 객체를 만듭니다
From 인자에는 보내는 사람의 메일 주소를 넣어줘야 하는데요, 이때 new MailAddress 클래스를 감싼 형태로 넣어 주어야 합니다.
다음으로 Subject에는 메일의 제목, Body에는 메일 내용을 작성 하면 됩니다.
(2) 보낼 주소 추가
이어서 받는 사람의 메일 주소를 기입하는 부분입니다.
MailMessage()의 객체(여기선 mail)를 이용하여 mail.To.Add() 함수를 이용합니다.
Add 안에는 MailAddress클래스를 감싼 형태로 받는 사람의 email주소를 넣어줍니다.
우리 예제에서는 mail.To.Add() 함수를 두번 사용했는데, 이 말은 두명의 사람한테 보낸다는 말이겠죠?
(3) smtp관련 코드 작성
이어서 smtp를 이용하기 위한 코드 입니다.
SmtpClient객체를 만들고 그 안에 각각의 정보를 넣어줍니다.
각 인자의 들어간 값들은 일종의 공식처럼 템플릿화 하여 사용하시면 됩니다!
Credetials부분이 제일 중요한데요.
기존에는 NetworkCredential 클래스 첫번째 인자로 gmail주소, 두번째 인자에 gmail비번을 넣어주었습니다.
그런데 문제가 하나 있습니다.
이대로 실행을 해보면 에러가 발생하기 때문입니다.
output:
내용을 읽어보면 인증이 안되었다라는 내용입니다.
이어 해당 보안 문제를 해결하는 방법에 대해서 알아보겠습니다.
3. 보안 문제 해결
1) 계정관리 클릭
2) 보안 클릭
3) 보안 수준이 낮은 앱 허용(예전 방법)
하지만 해당기능이 2022/5/30일부터 막혔습니다.
그럼 방법이 없을까요?
비밀번호가 아닌 다른 방법으로 인증을 하면 됩니다.
4) 로그인 2단계 인증
로그인 2 단계 인증을 통해 기존 비밀번호 방식이 아닌 앱 비밀번호를 사용하겠습니다..
(1) 2단계 인증
(2) 앱 비밀번호 설정
2단계 인증이 완료되면 앱 비밀번호를 설정이 가능해집니다.
앱비밀번호를 생성할 기기는 기타(맞춤 이름)으로 선택합니다.
여러분들이 알아볼 수 있는 적당한 이름을 기입해줍니다.
생성을 하면 위와 같은 팝업 창이 뜨게 되는데요.
노란 색 사각형 부분에 적힌 값이 우리가 필요로하는 앱 비밀번호입니다.
기존에 작성한 gmail비밀번호를 앱비밀번호로 변경해줍니다.
+ 보너스(비동기 사용)
1) 비동기
이메일을 비동기적으로 작동 시키고 싶으면 Send() ==> SendMailAsync() 로 변경 해주시면 됩니다.
2) 파이썬 코드
파이썬도 기본 컨셉은 똑같습니다. 다만 코드형태의 조금 다를 뿐이니 참고하시기 바랍니다.
'c#' 카테고리의 다른 글
[c#] EventHandler란? (0) | 2022.07.12 |
---|---|
[c#] 이벤트란? | 델리게이트와 차이 (0) | 2022.07.11 |
[c#] sql 연결 오류(CS1069) (0) | 2022.06.27 |
[c#] Action, Func, Predicate 개념/ 차이 (0) | 2022.06.16 |
[c#] CallerMemberName 어트리뷰트란? (0) | 2022.06.08 |
댓글