การส่งอีเมลด้วย Class MailMessage C# asp.net

ตัวอย่างนี้สามารถส่ง Email ถึงผู้รับได้หลาย ๆ คนพร้อม ๆ กันครับ
โดยการใส่เครื่องหมาย ";" semi-colon(เซมิโคลอน) คั่นท้ายชื่อ Email
แล้วต่อด้วยชื่อ Email ที่ต้องการส่งเพิ่มครับ
เช่น

test@testemail.com;test2@testemail.com

ร่วมถึงการ CC Email ถึงผู้รับได้หลาย ๆ คนโดยการใช้วิธีเช่นเดียวกันครับ
เอาล่ะเรามาเริ่มกันเลย

สร้าง Control TextBox ขึ้นมา 4 ตัวครับ
1. txtTo คือ TextBox สำหรับกรอก Email ที่ต้องการส่งครับ
2. txtCC คือ TextBox ที่ใช้สำหรับ CC Email ครับ
3. txtSUBJECT คือ TextBox สำหรับกรอกหัวเรื่องของ Email ครับ
4. txtCONTENT คือ TextBox สำหรับกรอกเนื้อหา Email ที่ต้องการส่งครับ

สร้าง Control Button แล้วก็ Label ขึ้นมาอย่างล่ะ 1 ตัวครับในทีนี้ชื่อวา
1. btnSEND คือปุ่่มส่ง Email ครับ
2. lbErr คือ Label สำหรับแสดงข้อความ Error ครับ



ทีนี้เรามาดู code กัน



using System.Net.Mail; //using Namespace System.Net.Mail

// เมื่อคลิกปุ่ม btnSEND
protected void btnSEND_click(object sender, EventArgs e)
{
if (txtTO.Text != "")//ตรวจสอบค่าว่างของ txtTo
{
/**
ตัดคำด้วยเครื่องหมาย ";" semi-colon(เซมิโคลอน)
ทั้ง txtTo และ txtCC เพื่อหาจำนวน Email ที่จะส่ง
**/
string[] tmpTO = txtTO.Text.Split(';');
string[] tmpCC = txtCC.Text.Split(';');

//สร้าง Aray ไว้เก็บชื่อ Email ทั้งจดหมายที่จะส่ง และ CC -*-
string[] Cc = new string[tmpCC.Length];
string[] sendTo = new string[tmpTO.Length];

//ลูปเก็บ Email ที่จะส่งเก็บไว้ใน Array ซะ
for (int i = 0; i < tmpTO.Length; i++)
{
if (tmpTO[i] != "")
{
sendTo[i] = tmpTO[i];
}
}

for(int j=0; j < tmpCC.Length;j++)
{
if (tmpCC[j] != "")
{
Cc[j] = tmpCC[j];
}
}

// ส่ง Email ด้วย Method sendEmail ที่สร้างขั้นมา มี อาร์กิวเมนต์ 4 ตัว ตามชื่อเรยจ้า
// มี อาร์กิวเมนต์ที่เป็น array สองตัวคือ sendTo และ Cc นอกนั้นเป็น string
sendEmail(txtSUBJECT.Text, sendTo,Cc, txtCONTENT.Text);

}
}

//Method sendEmail
void sendEmail(string inSubject, string[] inSendTo, string[] inCC, string inMsg)
{
MailMessage mailMsg = new MailMessage();//สร้าง Object MailMessage
// กำหนด Email ของผู้ส่ง
mailMsg.From = new MailAddress("nattapong@infotronics.co.th");

//เช็คจำนวน Email มีค่ามากกว่า 0 หรือไม่
if (inSendTo.Length > 0)
{
//ลูป Add Email ผู้รับ
for (int j = 0; j < inSendTo.Length; j++)
{
//เช็คว่า Array ตัวนี้ไม่ได้มีค่าเป็น null
if(inSendTo[j] != null)
{
//Add Email ผู้รับเข้าปาาย
mailMsg.To.Add(new MailAddress(inSendTo[j].ToString().Trim()));
}
}
}

//เช็คจำนวน Email มีค่ามากกว่า 0 หรือไม่(CC)
if (inCC.Length > 0)
{
////ลูป Add Email CC
for (int i = 0; i < inCC.Length;i++ )
{
if (inCC[i] != null)
{
//Add Email CC เข้าปาาย
mailMsg.CC.Add(new MailAddress(inCC[i].ToString().Trim()));
}
}
}

//ชื่อ Email
mailMsg.Subject = inSubject;
//Encode ชื่อจดหมายให้อักขระเป็นไทย
mailMsg.SubjectEncoding = System.Text.Encoding.GetEncoding("Windows-874");

//เนื้อหาของ Email
mailMsg.Body = inMsg;
//Encode เนื้อหา Email ให้อักขระเป็นไทย
mailMsg.BodyEncoding = System.Text.Encoding.GetEncoding("Windows-874");

//กำหนด SMTP
SmtpClient smtp = new SmtpClient();
//ผมใส่ SMTP ของ Maxnet ครับใครใช้ Internet ของค่ายไหนก็ใส่ให้ถูกต้องครับ
//สามารถหา SMTP ของผู้ให้บริการอินเทอร์เน็ตได้จาก Google เลยจ้าาา
smtp.Host = "smtp.tttmaxnet.com";

//เช็ค Error
try
{
//ไม่มี Error ก็ให้ส่งเมลล์ไปเรย และแสดงข้อความว่า "Email ถูกส่งแล้ว" ใน Label
smtp.Send(mailMsg);
lbErr.Text = "Email ถูกส่งไปแล้ว";
}
catch (Exception ex)
{
//ถ้ามี Error หรือข้อผิดพลาดก็ให้แสดงออกมาหน่อย ใน Label
lbErr.Text = ex.Message;
}
}




เรียบร้อยครับสำหรับการส่ง Email ด้วย Class MailMessage C# asp.net
ขอบอกว่า Code ผมยังมั่วๆเดาๆ อยู่เพราะเพิ่งหัดเขียน C# ครับแหะๆ
ผิดพลาดประการใดขออภัยมา ณ ที่นี้ด้วยนะครับ
ลองเอาไปประยุกต์ใช้งานดูนะครับ

สำหรับบทความนี้คงมีเท่านี้ไว้พบกันใหม่โอกาสหน้า

สวัสดีครับ ^______^

0 ความคิดเห็น