C\#를 사용 하여 첨부 파일 을 보 낼 수 있 는 간단 한 그래 픽 메 일 클 라 이언 트 프로그램 을 작성 합 니 다.
먼저 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.