WPF & C# - 이메일발송방법 naver.com / gmail.com ( 보안 수준이 낮은 앱의 엑세스 / SMTP / 구글 / 지메일 / Gmail.com / 실패 / E-mail / Email ) |
MainWindow.xaml.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="150"/> <ColumnDefinition Width="1*"/> </Grid.ColumnDefinitions> <StackPanel Grid.Column="0" Margin="5"> <Label Content="Mail From :" Height="40" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" FontSize="20" /> <Label Content="Mail To :" Height="40" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" FontSize="20" /> <Label Content="Subject :" Height="40" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" FontSize="20" /> <Label Content="Content :" Height="40" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" FontSize="20" /> </StackPanel> <StackPanel Margin="5" Grid.Column="1"> <TextBox x:Name="txt1" Height="40" TextWrapping="Wrap" Text="text" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" FontSize="20" /> <TextBox x:Name="txt2" Height="40" TextWrapping="Wrap" Text="text" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" FontSize="20" /> <TextBox x:Name="txt3" Height="40" TextWrapping="Wrap" Text="text" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" FontSize="20" /> <TextBox x:Name="txt4" Height="40" TextWrapping="Wrap" Text="text" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" FontSize="20" /> <StackPanel Orientation="Horizontal" Height="40"> <Button x:Name="btnFile" Content="File" Width="100" Margin="5" Click="btnFile_Click" ></Button> <Label x:Name="lbl" Margin="5" MinWidth="300" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" FontSize="16" Background="Gainsboro" /> </StackPanel> <Button x:Name="btnSend" Content="Send" Width="100" Height="40" Click="btnSend_Click" ></Button> </StackPanel> </Grid> | cs |
MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | // 파일 첨부 private void btnFile_Click(object sender, RoutedEventArgs e) { // 파일 열기, OpenFileDialog OpenFileDialog ofdlg = new OpenFileDialog(); { if (ofdlg.ShowDialog().GetValueOrDefault()) { lbl.Content = ofdlg.FileName; } } } private void btnSend_Click(object sender, RoutedEventArgs e) { // Naver.com : smtp.naver.com , 587 , SSL = true // Gmail.com : smtp.gmail.com , TLS = 587, 25, SSL = 465 / SSL = true / STARTTLS // ( * 구글은 외부프로그램에서 계정 인증 시에는 해당 메일설정에서 보안수준 낮은 앱 해제 해야함 ) // SMTP 설정 // string smtpAddress = "smtp.naver.com"; // SMTP 서버 int smtpPort = 587; // smtp Port bool smtpSSL = true; // smtp SSL string smtpId = ""; // smtp ID string smtpPw = ""; // smtp PW bool isBodyHtml = false; // Body HTML 여부 using (SmtpClient smtp = new SmtpClient(smtpAddress, smtpPort)) //gmail 포트 설정) { smtp.TargetName = smtpAddress; smtp.EnableSsl = smtpSSL; //SSL 설정 (서버마다 다름) smtp.Credentials = new NetworkCredential(smtpId, smtpPw); //smtp 인증을 위한 ID, PW 입력 smtp.DeliveryMethod = SmtpDeliveryMethod.Network; // 전송여부 확인 (gmail 필수사항) // 메일 메세지 설정 using (MailMessage mail = new MailMessage()) { mail.From = new MailAddress(txt1.Text); // 보내는사람메일주소 mail.To.Add(txt2.Text); // 받는사람 메일주소 mail.SubjectEncoding = Encoding.UTF8; mail.Subject = txt3.Text; // 메일 제목 mail.BodyEncoding = Encoding.UTF8; mail.Body = txt4.Text; // 메일 내용 mail.IsBodyHtml = isBodyHtml; // HTML 여부 //첨부파일 붙이기 System.Net.Mail.Attachment attachment;//첨부파일 만들기 attachment = new System.Net.Mail.Attachment(lbl.Content.ToString()); //첨부파일 붙이기 mail.Attachments.Add(attachment);//첨부파일 붙이기 // 전송 성공여부 체크 try { smtp.Send(mail); MessageBox.Show("Send OK"); } catch (SmtpException ex) { txt1.Text = ex.Message; } } } | cs |
SMTP 서버에 보안 연결이 필요하거나 클라이언트가 인증되지 않았습니다. 서버 응답: 5.7.0 Must issue a STARTTLS command first. c68-v6sm32271566pfj.51 - gsmtp
Gmail.com
지메일의 경우 보안 수준이 낮은 앱 허용 을 사용함으로 바꿔주어야 메일이 간다.
보안때문에 지메일 관련 앱이 아닌경우 꼭 설정을 해줘야 한다.
보안 수준이 낮은 앱의 액세스
일부 앱 및 기기가 보안이 취약한 로그인 기술을 사용하여 계정 보안을 더욱 취약하게 만듭니다. Google은 이 앱에 대한 액세스를 사용 중지할 것을 권장하지만, 위험을 감수하고 이 앱을 사용하기를 원하는 경우 액세스를 사용 설정할 수 있습니다. 자세히 알아보기
보안 수준이 낮은 앱에서 계정에 액세스하도록 허용
앱이나 기기가 Google의 보안 표준을 만족하지 않는 경우 Google은 해당 앱이나 기기에서 로그인을 시도하는 사용자를 차단합니다. 이러한 앱이나 기기는 해킹에 더 취약하기 때문에 차단함으로써 계정을 더 안전하게 유지할 수 있습니다.
최신 보안 표준을 지원하지 않는 앱의 예는 다음과 같습니다.
- iOS 버전 6 이하를 사용하는 iPhone 또는 iPad의 Mail 앱
- Windows Phone 8.1 이전의 Mail 앱
- Microsoft Outlook과 Mozilla Thunderbird 같은 일부 데스크톱 메일 클라이언트
보안 수준이 낮은 앱에 대한 계정 액세스 변경
Google에서는 직장, 학교 또는 다른 그룹을 통한 Google 계정의 보안을 위해 보안 수준이 낮은 앱이 이러한 계정을 사용하지 못하도록 차단합니다. 이 같은 계정이 있다면 로그인을 시도할 때 '잘못된 비밀번호' 오류가 표시됩니다. 이 경우 다음 두 가지 옵션 중 하나를 선택하세요.
- 옵션 1: 더 강력한 보안 수단을 사용하는 더 안전한 앱을 설치합니다. Gmail을 비롯한 모든 Google 제품은 최신 보안 수단을 사용합니다.
- 옵션 2: 보안 수준이 낮은 앱의 계정 로그인을 허용하도록 설정을 변경합니다. 이 옵션을 사용하면 다른 사람이 내 계정에 쉽게 침입할 수 있으므로 사용을 권장하지 않습니다. 그래도 액세스를 허가하려면 다음의 단계를 따르세요.
- Google 계정의 보안 수준이 낮은 앱 섹션으로 이동합니다.
- 보안 수준이 낮은 앱 허용을 사용 설정합니다. 이 설정이 표시되지 않으면 관리자가 보안 수준이 낮은 앱의 계정 액세스를 사용 중지했을 수 있습니다.
여전히 계정에 로그인할 수 없다면 '잘못된 비밀번호' 오류에 대해 자세히 알아보세요.