สวัสดี เนื่องจากกราฟมาเนียของฉันกำลังก้าวหน้า ฉันจึงตัดสินใจเพิ่มบทความอื่น บทความจะเช่นเคยพร้อมตัวอย่างใน C # แต่ VB "schnik ที่มีทักษะไม่มากก็น้อยจะเขียนโค้ดทั้งหมดใหม่ภายใต้ VB.NET ได้อย่างง่ายดาย
เริ่มกันเลยดีกว่า
สำหรับ การส่งอีเมลเราจำเป็นต้องใช้วัตถุสามอย่าง System.Net.Mail.SmtpClient เพื่อส่งข้อความ System.Net.Mail.MailMessage เพื่อเป็นตัวแทนข้อความ และ System.Net.NetworkCredential เพื่ออนุญาต
มาสร้างลูกค้ากันเถอะ:
ลูกค้า Var = SmtpClient ใหม่ ("$ Mail-Server-Address$", $ Mail-Server-Port$);
การอ้างอิงตัวสร้าง:
SmtpClient (โฮสต์สตริง, พอร์ต int);
มาสร้างอินสแตนซ์ของคลาส MailMessage:
Var msg = MailMessage ใหม่ ("จาก", "ถึง");
ทีนี้มากำหนดหัวเรื่องและเนื้อหาของจดหมายกัน (ยังไงก็ตาม ทุกอย่างสามารถตั้งค่าได้ในตัวสร้าง) เช่นเดียวกับการเข้าสู่ระบบและรหัสผ่านสำหรับไคลเอนต์ smtp จากนั้นเราจะส่งอีเมลโดยใช้วิธีการส่งของวัตถุลูกค้าของเรา:
ลูกค้า Var = SmtpClient ใหม่ ("smtp.yandex.ru"); var msg = MailMessage ใหม่ ("จาก", "ถึง"); msg.Subject = "ข้อความทดสอบของฉัน"; msg.Body = "สวัสดี เพื่อนของฉัน! ลองนึกดูว่าฉันเพิ่งเขียนโปรแกรมที่น่าทึ่งเพื่อส่งจดหมายที่ไม่มีความหมายนี้ถึงคุณเป็นพันล้านครั้งด้วยการคลิกเพียงไม่กี่ครั้งเท่านั้น!"; msg.SubjectEncoding = การเข้ารหัส UTF8; msg.BodyEncoding = การเข้ารหัส UTF8; // ลำดับความสำคัญ msg.Priority = MailPriority.High; // เนื้อหาข้อความใน html? msg.IsBodyHtml = เท็จ; client.Credentials = ใหม่ NetworkCredential ("เข้าสู่ระบบ", "รหัสผ่าน"); client.Send(msg);
นั่นคือทั้งหมด อย่าลืมป้อนข้อมูลที่จำเป็นทั้งหมดอย่างถูกต้อง
ความคิดเห็น()
รุสแลง02 30
CoolHacker ฉันขอยืมรหัสนี้จากคุณสำหรับส่วนที่ 3 ของเว็บเบราว์เซอร์ได้ไหม
คูลแฮกเกอร์ 770 รุสแลง02 30ขอบคุณ ฉันจะใช้มันเพื่อส่งลิงค์ทางอีเมล
เช่นเดียวกับใน Firefox
ส่งอีเมลโดยทางโปรแกรมโดยใช้บริการต่างๆ
- .สุทธิ,
บ่อยครั้งที่คุณต้องจัดการกับการส่ง อีเมลจาก รหัสโปรแกรม. ไม่ต้องไปหาตัวอย่างที่ไหนไกล
บทความนี้เป็นคำใบ้และไม่ได้เปิดเผยอะไรใหม่ แต่ก่อนที่จะเขียน ฉันดูคล้ายกันบนอินเทอร์เน็ตและรู้สึกประหลาดใจมากที่เกือบทุกแห่งเสนอโซลูชันที่ใช้งานไม่ได้หรือล้าสมัย หรือเขียนโดยไม่รู้หนังสือ
สิ่งแรกที่คุณไม่ควรทำกับตัวอย่างเหล่านี้คือการใช้ System.Web.Mail ซึ่งเลิกใช้งานไปนานแล้ว และตั้งแต่นั้นเป็นต้นมา วิชวลสตูดิโอ 2010 ไม่สามารถเพิ่มห้องสมุด System.Web โดยไม่รู้ตัว เส้นทางเต็มเป็น DLL ที่สอดคล้องกัน
ขอเสนอให้ใช้ไลบรารี System.Net แทน
ใช้ System.Net; ใช้ System.Net.Mail;
ดังนั้น วิธีที่ง่ายที่สุด ที่สำคัญและใช้บ่อยที่สุดคือการส่งจดหมายจากคุณ เมลเซิร์ฟเวอร์ที่ไคลเอนต์ SMTP ได้รับการกำหนดค่า ตามที่คุณเข้าใจ เซิร์ฟเวอร์สามารถเป็นได้ทั้งเซิร์ฟเวอร์ที่แอปพลิเคชันทำงานอยู่หรือเซิร์ฟเวอร์ระยะไกลที่คุณมีสิทธิ์ส่งจดหมายโดยไม่ได้รับอนุญาตเพิ่มเติม
โค้ดตัวอย่างสำหรับการส่งอีเมลจากเครื่องโลคัล:
ใช้บริการอีเมลเช่น Gmail, Yandex, Mail.ru เป็นต้น ทุกอย่างเหมือนกัน เพิ่มเฉพาะพารามิเตอร์ที่มีการอนุญาตเท่านั้น
เซิร์ฟเวอร์ SMTP: smtp.gmail.com
ท่าเรือ: 587
โดยใช้ (MailMessage mm = new MailMessage("ชื่อ
เซิร์ฟเวอร์ SMTP: smtp.yandex.ru
พอร์ต: 25
โดยใช้ (MailMessage mm = new MailMessage("ชื่อ
เซิร์ฟเวอร์ SMTP: smtp.mail.ru
พอร์ต: 25
โดยใช้ (MailMessage mm = new MailMessage("ชื่อ
ถ้าคุณมี ตู้จดหมายบนบริการ mail.ru ลงท้ายด้วย inbox.ru, list.ru หรือ bk.ru จากนั้นที่อยู่ของเซิร์ฟเวอร์ SMTP (smtp.inbox.ru, smtp.list.ru และ smtp.bk.ru) จะเปลี่ยนตามไปด้วย
อย่างที่คุณเห็น ในการใช้บริการเมลอื่นในโปรแกรมของคุณ คุณจะต้องค้นหาที่อยู่และพอร์ตของเซิร์ฟเวอร์ SMTP รวมถึงกฎการให้สิทธิ์เท่านั้น
ต้องจำไว้ว่าบริการอีเมลของบุคคลที่สามเกือบทั้งหมดกำหนดจำนวนอีเมลที่ส่งในช่วงเวลาหนึ่ง
แท็ก: อีเมล, การส่งอีเมล, smtp
หนึ่งในฟังก์ชันที่ได้รับการร้องขอมากที่สุดในไซต์คือแบบฟอร์มใบสมัครหรือคำสั่งซื้อ ซึ่งเป็นข้อมูลที่ส่งไปยังอีเมลของเจ้าของไซต์ ตามกฎแล้ว แบบฟอร์มดังกล่าวเป็นแบบเรียบง่ายและประกอบด้วยสองหรือสามฟิลด์สำหรับการป้อนข้อมูล จะสร้างแบบฟอร์มการสั่งซื้อได้อย่างไร? สิ่งนี้จะต้องใช้ภาษามาร์กอัป HTML และภาษา การเขียนโปรแกรม PHP.
ภาษามาร์กอัป HTML นั้นเรียบง่าย คุณเพียงแค่ต้องหาวิธีการและตำแหน่งที่จะวางแท็กบางอย่าง ด้วยภาษาโปรแกรม PHP สิ่งต่าง ๆ จะซับซ้อนขึ้นเล็กน้อย
ไม่ใช่เรื่องยากสำหรับโปรแกรมเมอร์ในการสร้างแบบฟอร์มดังกล่าว แต่การดำเนินการบางอย่างอาจดูเหมือนยากสำหรับผู้เขียนโค้ด HTML
การสร้างแบบฟอร์มส่ง html
บรรทัดแรกจะอยู่ถัดไป
ตอนนี้เรามารวมเข้าด้วยกัน
ตอนนี้มาทำให้ฟิลด์ในแบบฟอร์มบังคับ เรามีรหัสต่อไปนี้:
สร้างไฟล์ที่รับข้อมูลจากแบบฟอร์ม HTML
นี่จะเป็นไฟล์ชื่อ send.php
ในไฟล์ ในขั้นตอนแรก คุณต้องรับข้อมูลจากอาร์เรย์โพสต์ ในการทำเช่นนี้ เราสร้างตัวแปรสองตัว:
$fio = $_POST["fio"];
$email = $_POST["อีเมล"];
ชื่อตัวแปรใน php นำหน้าด้วยเครื่องหมาย $ และเครื่องหมายอัฒภาคจะอยู่ท้ายแต่ละบรรทัด $_POST เป็นอาร์เรย์ที่ส่งผ่านข้อมูลจากแบบฟอร์ม ในรูปแบบ html มีการระบุวิธีการส่ง method="post" ดังนั้นจึงนำตัวแปรสองตัวมาจาก แบบฟอร์ม html. เพื่อวัตถุประสงค์ในการปกป้องไซต์ของคุณ คุณต้องส่งตัวแปรเหล่านี้ผ่านตัวกรองหลายตัว - ฟังก์ชัน php
ฟังก์ชันแรกจะแปลงอักขระทั้งหมดที่ผู้ใช้จะพยายามเพิ่มลงในแบบฟอร์ม:
ในกรณีนี้ ตัวแปรใหม่ใน php จะไม่ถูกสร้าง แต่จะใช้ตัวแปรที่มีอยู่ สิ่งที่ตัวกรองจะทำคือแปลงอักขระ "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
ฟังก์ชันที่สองจะถอดรหัส URL หากผู้ใช้พยายามเพิ่มลงในแบบฟอร์ม
$fio = urldecode($fio);
$email = urldecode($อีเมล์);
ด้วยฟังก์ชันที่สาม เราจะลบช่องว่างออกจากจุดเริ่มต้นและจุดสิ้นสุดของสตริง หากมี:
$fio = ตัดแต่ง ($fio);
$email = ตัดแต่ง (อีเมล $);
มีฟังก์ชั่นอื่น ๆ ที่ให้คุณกรองตัวแปร php การใช้งานขึ้นอยู่กับว่าคุณกลัวว่าผู้โจมตีจะพยายามเพิ่มรหัสโปรแกรมไปยังรูปแบบการส่งข้อมูลไปยังเมล html นี้มากน้อยเพียงใด
ตรวจสอบข้อมูลที่ส่งผ่านจากรูปแบบ HTML ไปยังไฟล์ PHP
ในการตรวจสอบว่ารหัสนี้ใช้งานได้หรือไม่ หากมีการถ่ายโอนข้อมูล คุณสามารถแสดงข้อมูลนั้นบนหน้าจอโดยใช้ฟังก์ชันเสียงสะท้อน:
ก้อง $fio;
เสียงสะท้อน "
";
สะท้อนอีเมล $;
จำเป็นต้องใช้บรรทัดที่สองที่นี่เพื่อแยกเอาต์พุตของตัวแปร php ออกเป็นบรรทัดต่างๆ
ส่งข้อมูลที่ได้รับจากฟอร์ม HTML ไปยังเมลโดยใช้ PHP
ในการส่งข้อมูลไปยังเมล คุณต้องใช้ฟังก์ชันเมลใน PHP
mail("ไปยังที่อยู่ที่จะส่ง", "หัวเรื่องของจดหมาย", "ข้อความ (เนื้อความของจดหมาย)","จาก: จากอีเมลที่ส่งจดหมาย \r\n");
ตัวอย่างเช่น คุณต้องส่งข้อมูลไปยังอีเมลของเจ้าของหรือผู้จัดการไซต์ [ป้องกันอีเมล]
หัวเรื่องของอีเมลควรชัดเจน และข้อความของอีเมลควรมีสิ่งที่ผู้ใช้ระบุไว้ในรูปแบบ HTML
จดหมาย (" [ป้องกันอีเมล]", "แอปพลิเคชันจากไซต์", "ชื่อ:".$fio". อีเมล: ".$email ," จาก: [ป้องกันอีเมล]\r\n");
คุณต้องเพิ่มเงื่อนไขที่จะตรวจสอบว่าแบบฟอร์มถูกส่งโดยใช้ PHP ไปยังที่อยู่อีเมลที่ระบุหรือไม่
ถ้า (จดหมาย (" [ป้องกันอีเมล]", "สั่งซื้อจากเว็บไซต์", "ชื่อ:".$fio". อีเมล: ".$email ," จาก: [ป้องกันอีเมล]\r\n"))
{
echo "ส่งข้อความสำเร็จ";
) อื่น (
}
ดังนั้นโค้ดโปรแกรมของไฟล์ send.php ซึ่งจะส่งข้อมูลฟอร์ม HTML ไปยังเมลจะมีลักษณะดังนี้:
$fio = $_POST["fio"];
$email = $_POST["อีเมล"];
$fio = htmlพิเศษchars($fio);
$email = htmlพิเศษchars($email);
$fio = urldecode($fio);
$email = urldecode($อีเมล์);
$fio = ตัดแต่ง ($fio);
$email = ตัดแต่ง (อีเมล $);
//เสียงสะท้อน $fio;
//เสียงสะท้อน"
";
//echo $อีเมล;
ถ้า (จดหมาย (" [ป้องกันอีเมล]", "แอปพลิเคชันจากไซต์", "ชื่อ:".$fio". อีเมล: ".$email ," จาก: [ป้องกันอีเมล]\r\n"))
( echo "ส่งข้อความสำเร็จ";
) อื่น (
echo "เกิดข้อผิดพลาดขณะส่งข้อความ";
}?>
สามบรรทัดเพื่อตรวจสอบว่าข้อมูลถูกส่งไปยังไฟล์หรือไม่ หากจำเป็น สามารถลบออกได้ เนื่องจากจำเป็นสำหรับการดีบักเท่านั้น
วางรหัสการส่งแบบฟอร์ม HTML และ PHP ในไฟล์เดียว
ในความคิดเห็นต่อบทความนี้ มีหลายคนถามถึงวิธีทำให้ทั้งฟอร์ม HTML และโค้ด PHP ในการส่งข้อมูลไปยังเมลอยู่ในไฟล์เดียว ไม่ใช่สองไฟล์
ในการดำเนินการนี้ คุณต้องวางรหัส HTML ของแบบฟอร์มในไฟล์ send.php และเพิ่มเงื่อนไขที่จะตรวจสอบการมีอยู่ของตัวแปรในอาร์เรย์ POST (อาร์เรย์นี้ถูกส่งมาจากแบบฟอร์ม) นั่นคือหากไม่มีตัวแปรในอาร์เรย์ คุณต้องแสดงฟอร์มให้ผู้ใช้เห็น มิฉะนั้น คุณต้องรับข้อมูลจากอาร์เรย์และส่งไปยังผู้รับ
มาดูวิธีการเปลี่ยนโค้ด PHP ในไฟล์ send.php:
//ตรวจสอบว่ามีตัวแปรอยู่ในอาร์เรย์ POST หรือไม่
if(!isset($_POST["fio"]) และ !isset($_POST["email"]))(
?> ) อื่น (
//แสดงแบบฟอร์ม
$fio = $_POST["fio"];
$email = $_POST["อีเมล"];
$fio = htmlพิเศษchars($fio);
$email = htmlพิเศษchars($email);
$fio = urldecode($fio);
$email = urldecode($อีเมล์);
$fio = ตัดแต่ง ($fio);
$email = ตัดแต่ง (อีเมล $);
ถ้า (จดหมาย (" [ป้องกันอีเมล]", "แอปพลิเคชันจากไซต์", "ชื่อ:".$fio". อีเมล: ".$email ," จาก: [ป้องกันอีเมล]\r\n"))(
echo "ส่งข้อความสำเร็จ";
) อื่น (
echo "เกิดข้อผิดพลาดขณะส่งข้อความ";
}
}
?>
เราตรวจสอบการมีอยู่ของตัวแปรในอาร์เรย์ POST ด้วยฟังก์ชัน PHP isset() เครื่องหมายอัศเจรีย์หน้าฟังก์ชันนี้ในเงื่อนไขหมายถึงการปฏิเสธ นั่นคือหากไม่มีตัวแปรเราต้องแสดงแบบฟอร์มของเรา ถ้าฉันไม่ใส่เครื่องหมายอัศเจรีย์ เงื่อนไขก็จะหมายถึง - "ถ้ามีแล้ว แสดงแบบฟอร์ม" และนี่เป็นสิ่งที่ผิดในกรณีของเรา คุณสามารถเปลี่ยนชื่อเป็น index.php ได้ หากคุณเปลี่ยนชื่อไฟล์อย่าลืมเปลี่ยนชื่อไฟล์และในบรรทัด