ใน ASP.NET 2.0 เวอร์ชันที่เพิ่งเปิดตัว Microsoft ไม่แนะนำให้ใช้เนมสเปซ System.Web.Mail อีกต่อไป และแทนที่ด้วยเนมสเปซ System.Net.Mail ใหม่ มีคุณสมบัติใหม่มากมายที่นำมาใช้ในไลบรารีใหม่นี้ แต่มีข้อบกพร่องเล็กน้อยบางประการในการส่งอีเมล
1. การส่งเมล
ก่อนที่จะอธิบายข้อผิดพลาดเล็กๆ น้อยๆ เหล่านี้โดยละเอียด ลองดูโค้ดตัวอย่าง (เราถือว่าคุณได้เพิ่ม "โดยใช้ System.Net.Mail" ที่จุดเริ่มต้นของไฟล์):
MailMessage msg = new MailMessage();
msg.From = new MailAddress(" [email protected] ", "ชื่อบุคคล");
msg.To.Add(ที่อยู่เมลใหม่(" [email protected] ", "ชื่อผู้รับ");
msg.To.Add(ที่อยู่เมลใหม่(" [email protected] ", "ชื่อผู้รับ 2");
msg.Subject = "หัวเรื่องข้อความ";
msg.Body = "เนื้อหาของเมล";
msg.IsBodyHtml = จริง;
msg.Priority = MailPriority.สูง;
SmtpClient c = ใหม่ SmtpClient("mailserver.domain.com");
c.Send(msg);
โค้ดข้างต้นไม่แตกต่างจากการใช้งานในเวอร์ชันก่อนหน้ามากนัก ยกเว้นการเปลี่ยนแปลงเล็กน้อยในการระบุข้อความ แทนที่จะสร้างที่อยู่ด้วยตัวเอง คุณสามารถปล่อยให้ระบบดำเนินการแทนคุณได้ หากคุณระบุที่อยู่อีเมลและชื่อ ที่อยู่อีเมลจะแสดงข้อความต่อไปนี้โดยอัตโนมัติ:
"ชื่อบุคคล" < [email protected] >
นี่คือรูปแบบ "ที่ถูกต้อง" สำหรับที่อยู่อีเมล แน่นอน คุณสามารถเพิ่มที่อยู่หลายรายการลงในชุดถึง CC และสำเนาลับถึงได้ในลักษณะเดียวกับข้างต้น การส่งข้อความจำนวนมากโดยทางโปรแกรมในลักษณะนี้ง่ายกว่าการส่งข้อความทีละข้อความมาก เพียงเพิ่มที่อยู่หลายแห่งลงในแอตทริบิวต์ BCC เพื่อให้สามารถส่งจดหมายจำนวนมากได้
2. ปัญหาที่มีอยู่
ตอนนี้เรามาวิเคราะห์ข้อผิดพลาดเล็กๆ น้อยๆ ที่มีอยู่กันดีกว่า
ตามที่กล่าวไว้ข้างต้น เนมสเปซใหม่นี้มาพร้อมกับข้อบกพร่องเล็กๆ น้อยๆ บางประการ ประการแรกคือเมื่อคุณส่งอีเมล ข้อมูลส่วนหัวจะถูกเพิ่มเป็นตัวพิมพ์เล็กทั้งหมด อย่างไรก็ตาม ข้อกำหนด RFC สำหรับอีเมล SMTP ไม่ได้ระบุว่าส่วนหัวของอีเมลควรใช้ตัวพิมพ์ใหญ่อย่างไร อย่างไรก็ตาม โปรแกรมกรองสแปมจำนวนมากจะจำกัดข้อความอีเมลที่ส่วนหัวใช้อักษรตัวพิมพ์ใหญ่ไม่ถูกต้อง
ข้อผิดพลาดอีกประการหนึ่งเกี่ยวข้องกับการตั้งค่าลำดับความสำคัญ - ด้วยการตั้งค่าลำดับความสำคัญ ผู้ใช้สามารถระบุความสำคัญของข้อความในโปรแกรมรับส่งเมลได้ เนื่องจากวิธีการจัดรูปแบบส่วนหัวของอีเมล (แปลงเป็นตัวพิมพ์เล็กทั้งหมด) โปรแกรมอีเมลของฉัน (Eudora) จึงไม่รู้จักแฟล็กลำดับความสำคัญที่เกี่ยวข้อง ดังนั้นจึงไม่ได้ทำเครื่องหมายอีเมลนี้ว่าสำคัญโดยเฉพาะ แม้ว่าสิ่งนี้อาจดูเล็กน้อย แต่ดูเหมือนว่าจะไม่มีเหตุผลที่ชัดเจนในการเปลี่ยนไปใช้ System.Web.Mail เวอร์ชันใหม่
ดังนั้นฉันจะสำรวจปัญหานี้ต่อไป หากฉันไม่พบวิธีแก้ไขที่ดีจริงๆ ฉันจะกลับไปที่ System.Web.Mail ก่อนหน้าเพื่อแก้ไขปัญหาคำเตือนข้างต้นอย่างมีประสิทธิภาพมากขึ้น