-
ใช้ System.Web.Mail;
โมฆะส่วนตัว Button1_Click (ผู้ส่งวัตถุ System.EventArgs e)
-
//สร้างอินสแตนซ์วัตถุ MailMessage
System.Web.Mail.MailMessage เมล = ใหม่ System.Web.Mail.MailMessage();
//กำหนดที่อยู่สำหรับส่งอีเมล์ คุณสามารถกรอกที่อยู่ที่ไม่มีอยู่จริงได้ตามต้องการ
เมลจาก = " [email protected] ";
//กำหนดที่อยู่รับอีเมล์
//ตั้งค่ารายการที่อยู่อีเมลของผู้รับโดยคั่นด้วยเครื่องหมายอัฒภาค
mail.To=" [email protected] ";
//กำหนดที่อยู่ BCC ของอีเมล
//ตั้งค่ารายการที่อยู่อีเมลที่คั่นด้วยเครื่องหมายอัฒภาค
//mail.Bcc=" [email protected] ";
//กำหนดที่อยู่สำเนาคาร์บอนของอีเมล
//ตั้งค่ารายการที่อยู่อีเมลที่คั่นด้วยเครื่องหมายอัฒภาค
//mail.Cc=" [email protected];[email protected]
//กำหนดหัวเรื่องของอีเมล์
mail.Subject="การทดสอบเมลแบบไวด์ไบรท์ asp.net ส่งการเรียนรู้เมล";
//กำหนดประเภทเนื้อหาของเนื้อหาอีเมล
//ที่นี่เราส่งมันในรูปแบบ HTML
mail.BodyFormat=System.Web.Mail.MailFormat.Html;
//กำหนดเนื้อหาของอีเมล์
mail.Body="ทดสอบดูว่าใช้งานได้หรือไม่";
//สตริงที่อยู่ใน @ ขึ้นต้นด้วย @ และอยู่ในเครื่องหมายคำพูดคู่ด้วย ตัวอย่างเช่น:
//ข้อดีของการอ้างอิง @ คือ Escape Sequence ไม่ได้รับการประมวลผล ดังนั้นคุณจึงสามารถเขียนสตริง เช่น ชื่อไฟล์แบบเต็ม:
//@"c:DocsSourcea.txt " // แทนที่จะเป็น "c:\Docs\Source\a.txt"
//หากต้องการรวมเครื่องหมายคำพูดคู่ภายในสตริง @-quoted ให้ใช้เครื่องหมายคำพูดคู่สองคู่:
// @"""โอ้โห!"" กัปตันร้อง" // "โอ้โห!" กัปตันร้อง
// การใช้สัญลักษณ์ @ อีกอย่างคือใช้ตัวระบุที่อ้างอิง (/reference) ซึ่งเป็นคีย์เวิร์ด C#
// http://msdn2.microsoft.com/zh-CN/library/362314fe(VS.80).aspx
//ตั้งค่าไฟล์แนบ
System.Web.Mail.MailAttachment mailAttachment=ใหม่ System.Web.Mail.MailAttachment(@" F:dddddd.txt");
//แนบเอกสารแนบไปกับอีเมล
mail.Attachments.Add(เมลแนบ);
//เพิ่มไฟล์แนบหลายรายการต่อที่นี่
mailAttachment=new System.Web.Mail.MailAttachment(@"F:asp_net ส่งเมล Code_Baidu Know.mht");
mail.Attachments.Add(เมลแนบ);
//เซิร์ฟเวอร์ SMTP เนื่องจากถูกตั้งค่าบนเครื่องนี้ ดังนั้นให้เขียน 127.0.0.1 หากคุณเชื่อมต่อกับเซิร์ฟเวอร์อื่น เช่น 163 เมลบ็อกซ์ ให้เขียน smpt.163.com
System.Web.Mail.SmtpMail.SmtpServer = "127.0.0.1";
// ว่ากันว่าเซิร์ฟเวอร์ SMTP จำนวนมากต้องการการรับรองความถูกต้องเพื่อป้องกันสแปม ดูเหมือนว่าจะเรียกว่าโปรโตคอล smpt แบบขยายหรืออะไรบางอย่าง
//แต่สิ่งที่เชื่อมต่อที่นี่คือเซิร์ฟเวอร์ smpt ของตัวเอง smpt แบบธรรมดา ดังนั้นจึงไม่มีการตรวจสอบ
//ส่วนว่าจำเป็นต้องมีการยืนยันเมื่อส่งอีเมลจากเซิร์ฟเวอร์ SMPT ในพื้นที่ไปยัง 163 หรือกล่องจดหมายอื่นๆ ฉันไม่ทราบ ในระหว่างการทดสอบจริง สามารถส่งอีเมลไปที่
//@163.com , @eyou.com, @x.cn ไม่ต้องมีการตรวจสอบ
//ตรวจสอบ
//mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1");
//ชื่อล็อกอิน
//mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendusername ", "widebright");
//รหัสผ่านเข้าสู่ระบบ
//mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendpassword ", "widebright");
//ส่ง
System.Web.Mail.SmtpMail.Send (เมล);
-
โค้ดด้านบนใช้คลาส System.Web.Mail.SmtpMail ที่ให้ไว้ใน .Net เพื่อส่งอีเมลและเชื่อมต่อโดยอัตโนมัติ
เซิร์ฟเวอร์ SMPT เพื่อส่งอีเมล บางคนใช้คลาส TCP หรือซ็อกเก็ตในการเขียนโค้ดเพื่อใช้โปรโตคอล smpt แต่ต้องใช้การเข้ารหัส โปรโตคอล ฯลฯ จำนวนมาก ซึ่งค่อนข้างลำบาก ฉันเคยทำมาแล้วก่อนที่จะใช้ VB โปรโตคอล smpt นั้นค่อนข้างง่าย แต่การเข้ารหัสไฟล์แนบเหล่านั้นต้องใช้โค้ดจำนวนมาก
นี่เป็นเพียงรหัสสำหรับการส่งข้อความ SMTP หากคุณต้องการรับข้อความและรอ คุณต้องมีเซิร์ฟเวอร์ pop3 ที่รองรับโปรโตคอล pop3
ติดตั้งเซิร์ฟเวอร์ smtp แล้วหลังจากติดตั้ง IIS แล้ว Pop3 ไม่ได้มาพร้อมกับมัน ดังนั้นการติดตั้งอาจยุ่งยากกว่านี้เล็กน้อย
การกำหนดค่าเซิร์ฟเวอร์ SMTP
ฉันเปิดใช้งานด้วยตัวเองหลังจากติดตั้ง IIS 5.1 ฉันเพิ่งกำหนดค่าใน IIS Information Service Manager
1. เพิ่มชื่อโดเมนหลายชื่อในโดเมน: คลิกขวาที่โดเมนใน "เซิร์ฟเวอร์เสมือน SMTP เริ่มต้น"
เลือก "ใหม่" เพื่อสร้างใหม่ ---> ประเภทโดเมน และเลือก "ระยะไกล"
ชื่อโดเมนถูกกรอกใน 163.com eyou.com x.cn ตามลำดับ เพราะฉันต้องการส่งอีเมลไปยังเซิร์ฟเวอร์เหล่านี้ และเช่นเดียวกับในโค้ดข้างต้น
mail.To=" [email protected] ";
ตามลำดับ หากคุณต้องการส่งอีเมลถึง คุณต้องตั้งชื่อโดเมนที่เกี่ยวข้อง หากคุณไม่ได้ตั้งค่าไว้ จะไม่สามารถส่งอีเมลได้
2. คลิกขวาที่ชื่อโดเมน เช่น 163.com เลือก "Properties" และทำเครื่องหมายที่ "Allow incoming mail to be sended to this domain" อีเมลจะถูกส่งได้หลังจากตรวจสอบแล้วเท่านั้น มิฉะนั้นจะยังมีข้อผิดพลาดอยู่ .
สำหรับเส้นทางโดเมนด้านล่าง เพียงเลือกค่าเริ่มต้น ใช้ DNS เพื่อกำหนดเส้นทางไปยังโดเมน
กุญแจสำคัญคือการตั้งชื่อโดเมนเซิร์ฟเวอร์ SMTP ที่สอดคล้องกันใน IIS จากนั้นคุณสามารถส่งอีเมลได้ ฉันทดสอบกล่องจดหมายหลายกล่องบนหน้า asp.net และสามารถส่งได้ตามปกติ เช่นเดียวกับกล่องจดหมาย 163 คลิกปุ่มเพื่อส่งแล้วคุณจะได้รับ
เพิ่งรู้ว่าคุณสามารถเพิ่มได้
*.ดอทคอม
*.สุทธิ
*cn
ชื่อโดเมนเพื่อให้ตรงกับที่อยู่อีเมลส่วนใหญ่
หากคุณเพิ่มชื่อโดเมน *.com คุณสามารถส่งจดหมายไปที่ @163.com และ @eyou.com ได้
การทดสอบผ่านการทดสอบภายใต้สภาพแวดล้อม windows xp+visual sutdio 2003+iis5.1
อย่างไรก็ตาม ฉันพบว่าไม่ได้รับจดหมายที่ส่งไปยังกล่องจดหมาย Sina และฉันไม่รู้ว่าทำไม
ข้อผิดพลาดทั่วไปของ SMTP 550 5 7 1 ไม่สามารถรีเลย์ได้
นอกจากโดเมนเนมที่ตั้งค่าไม่ถูกต้องแล้วอาจมีได้
ไม่ได้เลือกกล่องกาเครื่องหมาย "อนุญาตให้คอมพิวเตอร์ที่รับรองความถูกต้องเพื่อส่งต่อสำเร็จ" ในการตั้งค่าของเซิร์ฟเวอร์เสมือน SMTP ดังที่แสดงด้านล่าง
ขั้นแรกให้เปิดหน้าการเข้าถึงของหน้าคุณสมบัติเซิร์ฟเวอร์เสมือน SMTP:
จากนั้นคลิกปุ่ม "รีเลย์" และดูว่าได้เลือก "อนุญาตให้คอมพิวเตอร์ทุกเครื่องที่ตรวจสอบสิทธิ์การถ่ายทอดสำเร็จโดยไม่คำนึงถึงรายการด้านบน" ไว้หรือไม่: