[C# 개발] 인증 번호를 발송해 이메일 본인인증 확인하는 시스템 구현하기

2022. 10. 13. 20:27·■ Dev. Language/C#
반응형

●  개발목적

윈도우 폼을 제작하여 C#. NET 언어를 이용해, 회원가입시 진행하는 이메일 본인 인증 시스템을 간단하게 구현해 보도록 한다. 이를 토대로 회원가입 폼에 응용해 적용할 수 있다.

 

 

 


●  참고

 

[C# 개발] 구글 SMTP 서버를 사용해 이메일 발송하기 (Using Google SMTP)

● 개발목적 윈도우 폼을 제작하여 C#. NET 언어와 구글 GMail SMTP 서버를 이용해 이메일을 발송할 수 있는 프로그램을 제작한다. ● 참고 구글 인증 오류를 겪고 있는 사람들이라면 아래의 링크를

acredev.tistory.com

C# 윈도우 폼을 통한 이메일 발송시스템을 조금 응용한 것인데, 구현 방법이 궁금한 사람은 위의 링크를 참고해서 조치하면 좋을 것 같다.

 

 

 


●  윈도우 폼 제작

Visual Studio에서 새로운 프로젝트를 생성하고, Form1을 위와 같이 디자인 한다.

 

요소 종류 속성
① GroupBox ㆍ모양 → Text : 이메일 인증
② Label ㆍ모양 → Text : 이메일
③ Label ㆍ모양 → Text : 인증번호
④ TextBox ㆍ디자인 → Name : txt_email
⑤ TextBox ㆍ디자인 → Name : txt_emailchecknum
⑥ Button ㆍ모양 → Text : btn_email
⑦ Button ㆍ모양 → Text : btn_emailcheck

 

 

 


●  코드 작성

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Mail; // 이메일 발송을 위한 using
using System.Net; // 네트워크 프로토콜 사용을 위한 using

코드 작성 블럭으로 진입해, 이메일 발송을 위한 System.Net.Mail 참조와 네트워크 프로토콜 사용을 위한 System.Net 참조를 using 해준다.

 

 

 

public static Random randomNum = new Random();
// 난수발생 객체 생성
public static int checkNum = randomNum.Next(10000000, 99999999);
// 난수는 8자리, 범위는 10,000,000 ~ 99,999,999 사이의 값

Form1 Class 내부에 난수 발생을 위한 객체 randomNum과, 발생한 난수를 저장할 정수형 변수 checkNum을 각각 하나씩 선언해 준다.

 

난수를 저장할 정수형 변수 checkNum는 해당 폼 내의 모든 객체만 공통으로 공유하고 사용해야 할 값이기 때문에 정적 멤버변수 (static)으로 선언했으니 참고 바란다.

 

 

 

private void btn_email_Click(object sender, EventArgs e)
{         
    string SystemMailId = "사용자 EMail 시스템 아이디"
    string SystemMailPwd = "사용자 Email 시스템 비밀번호"
    // Email 시스템 SMTP 연동을 위한 아이디와 비밀번호 지역변수 선언

    MailMessage mail = new MailMessage();
    // MailMessage 발송을 위한 mail 객체 생성
    mail.To.Add(txt_email.Text);
    // 이메일 받을 사람 주소 (txt_email에 입력된 인증할 이메일 주소를 불러옴)
    mail.From = new MailAddress(System_emailID);
    // 이메일 보낸 사람 주소 (지역변수 System_emailID 값)
    mail.Subject = "회원가입 본인인증 이메일";
    // 이메일 제목
    mail.Body = checkNum.ToString();
    // 이메일 내용 (멤버변수 checkNum 난수값을 string 형식으로 변환해 입력)

    mail.IsBodyHtml = true;
    // 이메일 HTML 사용
    mail.Priority = MailPriority.High;
    // 이메일 중요도 높음
    mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
    // 이메일 전송 실패시 알림 발생

    mail.SubjectEncoding = Encoding.UTF8;
    mail.BodyEncoding = Encoding.UTF8;
    // 이메일 제목과 내용의 인코딩 (UTF8로 지정)

    SmtpClient smtp = new SmtpClient();
    // SmtpCliet 이용을 위한 smtp 객체 생성
    smtp.Host = "smtp.gmail.com";
    // SMTP 이메일 서버 주소 입력
    // (본 포스트 기준 : 구글)
    smtp.Port = 587;
    // SMTP 이메일 서버 포트번호 입력
    smtp.Timeout = 10000;
    smtp.UseDefaultCredentials = true;
    // SMTP 서버 기본 인증 사용
    smtp.EnableSsl = true;
    // SMTP SSL 보안 이용
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    // SMTP 네트워크를 통해 이메일 발송
    smtp.Credentials = new System.Net.NetworkCredential(SystemMailId, SystemMailPwd);
    // SMTP 서버 접속을 위한 사용자 아이디와 비밀번호
    // 위에서 선언한 지역변수 SystemMailId와 SystemMailPwd 사용
    
    try
    {
        smtp.Send(mail);
        // SMTP 객체를 통한 이메일 발송
        smtp.Dispose();
        // SMTP CLIENT 연결 해제

        MessageBox.Show("인증번호 전송완료", "전송 완료");
        // 전송 완료 메시지박스 출력
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
        // 이메일 발송 실패시 오류내용 메시지박스 출력
    }
}

btn_email 버튼을 더블 클릭 해, 이메일 제목과 이메일 내용 (멤버변수 checkNum의 난수값)을 정해주고, 이메일 발송을 위한 SMTP 서버 연결 및 이베일 발송 기능을 구현하면 된다.

 

본 코드는 구글 메일 SMTP 서버 주소 및 포트번호 기준이니, 타 메일링 시스템을 이용하려는 사람들은 각 메일링 시스템에 맞는 SMTP 서버 주소와 포트 번호를 입력해 사용하면 되겠다.

 

 

 

private void btn_emailcheck_Click(object sender, EventArgs e)
{
    if(txt_emailchecknum.Text == checkNum.ToString())
    {
        MessageBox.Show("이메일 인증이 완료되었습니다.", "인증 성공");
    }
    else
    {
        MessageBox.Show("인증 번호가 다릅니다.", "인증 실패");
    }
}

다음으로는 btn_emailcheck 버튼을 더블 클릭한다. 이메일 인증을 하기 위한 간단한 if 조건문으로, 사용자가 입력한 txt_emailchecknum의 텍스트 값 (인증번호)과 본 프로그램에서 발생한 checkNum 난수값이 동일한지 확인한다.

 

 

 


● 전체 코드 및 프로젝트 다운로드

EMailCheck_Code.txt
0.00MB

해당 프로젝트의 코드 전체를 첨부하니, 다운로드하여 참고하면 좋을 것 같다. 주석은 달려있지 않으니, 상세한 설명이 필요한 사람들은 본 포스트를 참고하는 것이 좋다.

 

 

EMailCheck.zip
0.04MB

해당 프로젝트의 미빌드 원본 파일이 필요한 사람들을 위해 프로젝트 파일 또한 첨부한다. 상기 압축되어 있는 프로젝트 파일을 내려받아, 폼과 코드를 참고하는 것도 좋은 방법이 될 수 있겠다.

 

 

 


● 결과

이메일 인증을 위해 난수값을 발생하고, 이를 전송하여 사용자에게 인증 번호가 정상적으로 전달된다. 그 후, 사용자가 올바르지 않은 값을 입력하면 오류 문구가 발생하고, 정상적인 값을 입력하면 인증 완료 문구가 출력되며 정상적으로 작동되는 모습을 확인할 수 있다.

 

 

 

 

 


『함께 읽으면 좋은 글』

 

[C# 개발] 구글 SMTP 서버를 사용해 이메일 발송하기 (Using Google SMTP)

● 개발목적 윈도우 폼을 제작하여 C#. NET 언어와 구글 GMail SMTP 서버를 이용해 이메일을 발송할 수 있는 프로그램을 제작한다. ● 참고 구글 인증 오류를 겪고 있는 사람들이라면 아래의 링크를

acredev.tistory.com

 

[C# 개발] MySQL DB 연동을 통해 간단한 로그인 및 회원가입 폼 만들기

● 개발목적 윈도우 폼을 제작하여 C#. NET 언어와 MySQL 데이터베이스를 연동해, 사용자의 회원가입 정보를 MySQL 데이터베이스에 저장하고 로그인을 할 때 이를 검증할 수 있도록 하는 간단한 프로

acredev.tistory.com


 

 

 

 

 

 

300x250
반응형
저작자표시 비영리 변경금지 (새창열림)
'■ Dev. Language/C#' 카테고리의 다른 글
  • [Tip] C# MySQL, Visual Studio 사용 방법 및 연결 테스트 : NuGet Package를 통한 연동
  • [C# 개발] SMS 인증 번호를 발송해, 휴대폰 본인인증 확인하는 시스템 구현하기 (WinForm)
  • [C# 개발] MySQL DB 연동을 통해 간단한 로그인 및 회원가입 폼 만들기
  • [C# 개발] 구글 SMTP 서버를 사용해 이메일 발송하기 (Using Google SMTP)
Min Hyuk-Lee
Min Hyuk-Lee
시스템 엔지니어로 근무하고 있습니다.
  • Min Hyuk-Lee
    아크레의 개발로그
    Min Hyuk-Lee
    m_file@naver.com
  • 전체
    오늘
    어제
    • 📝 Log. (84)
      • ■ Dev. Language (11)
        • C (5)
        • C# (6)
      • ■ Dev. ETC (8)
        • Unity 3D (3)
        • Android Studio (JAVA) (5)
      • ■ Web (6)
        • HTML (3)
        • JSP (3)
      • ■ Linux (8)
        • Shell (2)
        • Linux Tip. (6)
        • 보안취약점 진단 (0)
      • ■ Windows (4)
        • Server (1)
        • Windows Tip. (3)
      • ■ VM (1)
        • VMWare (1)
        • Virtual Box (0)
      • ■ Database (9)
        • MySQL (7)
        • OracleDB (2)
      • ■ DevKit (5)
        • IDE (4)
        • Tool (1)
      • ■ Error (20)
        • Windows 오류해결 (1)
        • Linux 오류해결 (5)
        • DB 오류해결 (4)
        • IDE 오류해결 (2)
        • VM 오류해결 (3)
        • Unity 오류해결 (4)
        • SSH, SFTP 오류해결 (1)
      • ■ Photoshop (3)
        • 디자인&이미지 창작 (3)
      • ■ Document (3)
        • MS Word (2)
        • PDF (1)
      • ■ Study (4)
        • Baekjoon (4)
      • ■ 작문 (1)
        • 회고 (1)
      • ■ ETC (1)
        • Car (0)
        • etc (1)
  • 🌐 Menu

    • 📓 Guestbook
  • 🔗 Other Links

    • GitHub
    • 아크레의 IT ISSUE
  • 📢 Notice

    • [스킨 업데이트] hELLO v4.10.0 적용완료
    • [스킨 업데이트] hELLO v4.9.0 적용 완료
    • [스킨 업데이트] hELLO v4.8.1 적용 완료
  • 💬 Recent Comments

  • hELLO· Designed By정상우.v4.10.0
Min Hyuk-Lee
[C# 개발] 인증 번호를 발송해 이메일 본인인증 확인하는 시스템 구현하기
상단으로

티스토리툴바