C\#를 사용 하여 첨부 파일 을 보 낼 수 있 는 간단 한 그래 픽 메 일 클 라 이언 트 프로그램 을 작성 합 니 다.

오늘 C\#(WinForm)첨부 파일 이 있 는 이메일 을 어떻게 보 내 는 지 이야기 합 시다!잔말 말고 캡 처 해서 모 시 겠 습 니 다.
201621170222646.jpg (896×532)
먼저 C\#메 일 을 보 내 려 면 smtp 서비스의 지원 이 필요 합 니 다.저도 C\#smtp 프로 토 콜 만 지원 하 는 지 모 르 겠 습 니 다.그런데 MSDN 에서 Mail 이라는 네 임 스페이스 에서 smtp 방법 만 소개 하 는 것 같 습 니 다.POP 를 못 본 것 같 습 니 다.됐 습 니 다.이 건 말 하지 마 세 요.
우리 잠시 smtp 프로 토 콜 로 하면 돼!따라서 우선 당신 의 메 일 박스 가 smtp 서 비 스 를 지원 하 는 지 확인 해 야 합 니 다.야후 메 일,HotMail 메 일과 GMail 메 일 은 smtp 를 지원 하지 않 습 니 다.하지만 괜 찮 습 니 다.다행히 우리 가 자주 사용 하 는 QQ 메 일,163 메 일,시 나 닷 컴 메 일 등 메 일 박스 는 모두 smtp 를 지원 합 니 다.그러면 우 리 는 이 메 일 로 메 일 을 보 낼 수 있 습 니 다.하하,하지만 QQ 메 일의 smtp 서 비 스 는 기본적으로 닫 혀 있 습 니 다.우리 가 수 동 으로 개통 해 야 합 니 다.개통 이 간단 합 니 다.당신 의 QQ 메 일 에 들 어간 후에[설정]을 선택 하 십시오.계 정 옵션 에 smtp 의 체크 상자 가 있 습 니 다.체크 를 해서 저장 하면 됩 니 다.163 메 일과 시 나 닷 컴 메 일 로 smtp 서 비 스 를 개통 하 는 것 도 많 지 않 아 간단 하 다.자,개통 되 었 습 니 다.이제 코드 를 말씀 드 리 겠 습 니 다.OK!
초보 자 들 의 이 해 를 편리 하 게 하기 위해 서 나 는 전체 절 차 를 몇 부분 으로 나 누 었 다.
smtp 서비스 정보 설정
보 낸 사람의 정 보 를 검증 하 다.
첨부 파일 추가
정식 우편 발송
메 일 발송 후 처리
OK 다음 코드 서비스:
일부 전역 변 수 는 주석 이 있 습 니 다.

SmtpClient SmtpClient = null; //  SMTP  
MailAddress MailAddress_from = null; //               
MailAddress MailAddress_to = null; //             
MailMessage MailMessage_Mai = null;
FileStream FileStream_my = null; //     

1.smtp 서비스 정보 설정

#region   Smtp     
/// <summary>
///   Smtp     
/// </summary>
/// <param name="ServerName">SMTP   </param>
/// <param name="Port">   </param>
private void setSmtpClient(string ServerHost, int Port)
{
SmtpClient = new SmtpClient();
SmtpClient.Host = ServerHost;//  SMTP      QQ    smtp.qq.com   cn    smtp.sina.cn 
SmtpClient.Port = Port; //     
SmtpClient.Timeout = 0; //    
}
#endregion
2.보 낸 사람 정보 검증

#region        
/// <summary>
///        
/// </summary>
/// <param name="MailAddress">      </param>
/// <param name="MailPwd">    </param>
private void setAddressform(string MailAddress, string MailPwd)
{
//       
NetworkCredential NetworkCredential_my = new NetworkCredential(MailAddress, MailPwd);
//        
MailAddress_from = new System.Net.Mail.MailAddress(MailAddress, textBoxX4.Text);
//                   
SmtpClient.Credentials = new System.Net.NetworkCredential(MailAddress_from.Address, MailPwd);
;
}
#endregion
3.첨부 파일 추가

#region       
private bool Attachment_MaiInit(string path)
{
try
{
FileStream_my = new FileStream(path, FileMode.Open);
string name = FileStream_my.Name;
int size = (int)(FileStream_my.Length / 1024/1024);
FileStream_my.Close();
//         10M
if (size > 10)
{
MessageBox.Show("        10M!         "+ size.ToString()+"M","  ",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return false;
}
return true;
}
catch (IOException E)
{
MessageBox.Show(E.Message);
return false;
}
}

#endregion

4.정식 우편 발송

 private void btnSend_Click(object sender, EventArgs e)
{
//             10M              
if (txt_Path.Text != "")
{
if (!Attachment_MaiInit(txt_Path.Text.Trim()))
{
return;
}
}
if (txt_SmtpServer.Text == "")
{
MessageBox.Show("   SMTP    !", "  ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (textBoxX2.Text == "")
{
MessageBox.Show("          !", "  ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (txtformPwd.Text == "")
{
MessageBox.Show("          !", "  ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (dataGridViewX1.Rows.Count == 0)
{
MessageBox.Show("      !", "  ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (MessageBox.Show("           ?", "  ", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
try
{
//   Smtp     
setSmtpClient("smtp." + txt_SmtpServer.Text.Trim() + comboBoxEx3.Text, Convert.ToInt32(numericUpDown1.Value));
}
catch (Exception Ex)
{
MessageBox.Show("      ,   SMTP       !" + "
" + " :
" + Ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { // setAddressform(textBoxX2.Text.Trim() + comboBoxEx2.Text, txtformPwd.Text.Trim()); } catch (Exception Ex) { MessageBox.Show(" , !" + "
" + " :
" + Ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // ( ) MailMessage_Mai.To.Clear(); // foreach (DataGridViewRow row in dataGridViewX1.Rows) { MailAddress_to = new MailAddress(row.Cells["Column1"].Value.ToString()); MailMessage_Mai.To.Add(MailAddress_to); } MessageBox.Show(" :" + dataGridViewX1.Rows.Count.ToString() + " "); // MailMessage_Mai.From = MailAddress_from; // MailMessage_Mai.Subject = txttitle.Text; MailMessage_Mai.SubjectEncoding = System.Text.Encoding.UTF8; // MailMessage_Mai.Body = Rtb_Message.Text; MailMessage_Mai.BodyEncoding = System.Text.Encoding.UTF8; // MailMessage_Mai.Attachments.Clear(); // MailMessage_Mai.Attachments.Add(new Attachment(txt_Path.Text.Trim(), MediaTypeNames.Application.Octet)); // SmtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback); // SmtpClient.SendAsync(MailMessage_Mai, "000000000"); } }
5.우편 발송 후 처리

#region            
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
try
{
if (e.Cancelled)
{
MessageBox.Show("     !");
}
if (e.Error != null)
{
 
MessageBox.Show("      !" + "
" + " :
" + e.ToString(), " ", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show(" !", " !", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception Ex) { MessageBox.Show(" !" + "
" + " :
" + Ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); } } #endregion

좋은 웹페이지 즐겨찾기