Utolsó frissítés: 31.10.2015
Az SMTP (Simple Mail Transfer Protocol) az interneten keresztüli levelek küldésére szolgál. Ez a protokoll meghatározza, hogy a levelezőszerverek hogyan működjenek együtt az átvitel során Email.
Az SMTP protokollal való munkavégzéshez és az e-mailek .NET-ben történő küldéséhez a System.Net.Mail névtér SmtpClient osztálya használható.
Ez az osztály számos tulajdonságot határoz meg, amelyek lehetővé teszik a küldés testreszabását:
Gazda: smtp szerver, amelyről a leveleket küldik. Például smtp.yandex.ru
Port: Az smp szerver által használt port. Ha nincs megadva, akkor alapértelmezés szerint a 25-ös port használatos.
Hitelesítési adatok: feladó hitelesítési adatok
EnableSsl: megadja, hogy kell-e használni SSL protokoll küldéskor
A küldés során használt másik kulcsosztály a MailMessage . Ez az osztály a küldendő üzenetet képviseli. Tulajdonságai között a következők találhatók:
Mellékletek: tartalmazza az összes e-mail mellékletet
Törzs: közvetlenül a levél szövege
Feladó: feladó címe. Egy MailAddress objektumot képvisel
Címzett: a címzett címe. Szintén egy MailAddress objektumot képvisel
Tárgy: az e-mail tárgyát határozza meg
IsBodyHtml: Azt jelzi, hogy az e-mail html kódú tartalmat képvisel-e
Használjuk ezeket az osztályokat, és küldjük el az e-mailt:
Rendszer használata; a System.Net használatával; a System.IO használatával; a System.Threading.Tasks használatával; a System.Net.Mail használatával; névtér NetConsoleApp ( osztály Program ( static void Main(string args) ( // feladó - állítsa be a címet és a betűben megjelenő nevet MailAddress from = new MailAddress(") [e-mail védett]", "Tom"); // akinek küldjük a mailcímet = new MailAddress(" [e-mail védett]"); // üzenetobjektum létrehozása MailMessage m = new MailMessage(from, to); // levél tárgya m.Subject = "Teszt"; // levél szövege m.Body = "
Az smtp-kliens Letter-tesztje
"; // betű képviseli html kódot m.IsBodyHtml = igaz; // az smtp szerver és a port címe, amelyről levelet küldünk SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); // bejelentkezés és jelszó smtp.Credentials = new NetworkCredential(" [e-mail védett]", "saját jelszó"); smtp.EnableSsl = true; smtp.Send(m); Console.Read(); ) ) )A küldéshez a Send() metódust használjuk, amelyben a MailMessage objektum kerül átadásra.
Használhatjuk a küldés aszinkron változatát is a SendMailAsync metódussal:
Rendszer használata; a System.Net használatával; a System.IO használatával; a System.Threading.Tasks használatával; a System.Net.Mail használatával; névtér NetConsoleApp ( osztály Program ( static void Main(string args) ( SendEmailAsync().GetAwaiter(); Console.Read(); ) privát statikus aszinkron feladat SendEmailAsync() ( MailAddress from = new MailAddress(" [e-mail védett]", "Tom"); MailAddress to = new MailAddress(" [e-mail védett]"); MailMessage m = new MailMessage(feladó, címzett); m.Subject = "Teszt"; m.Body = "Smtp-kliens munkateszt levél 2"; SmtpClient smtp = new SmtpClient("smtp.gmail.com" , 587 ); smtp.Credentials = new NetworkCredential(" [e-mail védett]", "mypassword"); smtp.EnableSsl = true; várjon smtp.SendMailAsync(m); Console.WriteLine("Mail elküldve"); ) ) )
Mellékletek hozzáadása
Az Attachments tulajdonság segítségével mellékleteket csatolhatunk az e-mailekhez. Minden melléklet egy System.Net.Mail.Attachment objektumot képvisel:
MailAddress from = new MailAddress(" [e-mail védett]", "Tom"); MailAddress to = new MailAddress(" [e-mail védett]"); MailMessage m = new MailMessage(feladó, címzett); m.Attachments.Add(new Attachment("D://temlog.txt"));
Hajóparancsnok 2013. október 14-én 19:29-korProgramozottan küldhet e-maileket különféle szolgáltatások segítségével
- .háló,
Nagyon gyakran kell foglalkozni a küldéssel e-maileket tól től programkód. Nem kell messzire keresni a példákat.
Ez a cikk egy tipp, és nem árul el semmi újat, de mielőtt megírtam volna, hasonlókat néztem az interneten, és meglehetősen meglepődtem, hogy szinte mindenhol vagy nem működő vagy elavult megoldást kínálnak, vagy egyszerűen írástudatlan.
Az első dolog, amit ezekkel a példákkal nem szabad tenni, az a System.Web.Mail használata, amely már régóta elavult, és azóta vizuális Stúdió 2010 a System.Web könyvtárat nem is lehet hozzáadni anélkül, hogy tudnánk teljes útvonal a megfelelő DLL-hez.
Ehelyett javasolt a System.Net könyvtár használata.
a System.Net használatával; a System.Net.Mail használatával;
Tehát a legegyszerűbb, egyben a legfontosabb és gyakran használt levél küldése az Öntől levelezőszerver Az, amelyen az SMTP-kliens konfigurálva van. Amint érti, a szerver lehet az, amelyen az alkalmazás fut, vagy egy távoli, amelyen további engedélyek nélkül is jogosult leveleket küldeni.
Mintakód e-mail küldéséhez a helyi gépről:
Levelezési szolgáltatások használata, például Gmail, Yandex, Mail.ru stb. minden ugyanaz, csak a jogosultsággal rendelkező paraméterek kerülnek hozzáadásra.
SMTP szerver: smtp.gmail.com
Port: 587
using (MailMessage mm = new MailMessage("Név
SMTP szerver: smtp.yandex.ru
Kikötő: 25
using (MailMessage mm = new MailMessage("Név
SMTP szerver: smtp.mail.ru
Kikötő: 25
using (MailMessage mm = new MailMessage("Név
Ha van Postafiók a mail.ru szolgáltatásban inbox.ru, list.ru vagy bk.ru végződik, majd az SMTP-kiszolgáló címe (smtp.inbox.ru, smtp.list.ru és smtp.bk.ru) ennek megfelelően módosul.
Mint látható, ahhoz, hogy bármilyen más levelező szolgáltatást használhasson a programjaiban, csak az SMTP szerver címét és portját, valamint a jogosultsági szabályokat kell megtudnia.
Emlékeztetni kell arra is, hogy szinte minden harmadik féltől származó e-mail szolgáltatás korlátozza az adott időszakban elküldött e-mailek számát.
Címkék: email, email küldés, smtp
Az oldalon az egyik legkeresettebb funkció a jelentkezési vagy megrendelőlap, amelyről az adatok az oldal tulajdonosának postára kerülnek. Az ilyen űrlapok általában egyszerűek, és két vagy három adatbeviteli mezőből állnak. Hogyan lehet ilyen megrendelőlapot létrehozni? Ehhez a HTML jelölőnyelv és a nyelv használata szükséges PHP programozás.
Maga a HTML jelölőnyelv egyszerű, csak azt kell kitalálni, hogyan és hova kell elhelyezni bizonyos címkéket. A PHP programozási nyelvvel a dolgok egy kicsit bonyolultabbak.
Egy programozónak nem nehéz létrehozni egy ilyen űrlapot, de néhány művelet nehéznek tűnhet egy HTML kódoló számára.
html beküldési űrlap készítése
Az első sor lesz a következő
Most rakjuk össze az egészet.
Most tegyük kötelezővé az űrlap mezőit. A következő kóddal rendelkezünk:
Hozzon létre egy fájlt, amely fogadja az adatokat egy HTML űrlapról
Ez egy send.php nevű fájl lesz
A fájlban az első szakaszban adatokat kell fogadnia a post tömbből. Ehhez két változót hozunk létre:
$fio = $_POST["fio"];
$email = $_POST["e-mail"];
A php változóneveit egy $ jel előzi meg, és minden sor végére pontosvessző kerül. A $_POST egy tömb, amelybe az űrlap adatait továbbítják. A html űrlapon a send method="post" módszer van megadva. Így két változót vettünk át html űrlapok. Webhelyének védelme érdekében ezeket a változókat több szűrőn – php függvényeken – kell átengednie.
Az első függvény átalakítja az összes karaktert, amelyet a felhasználó megpróbál hozzáadni az űrlaphoz:
Ebben az esetben a php-ben nem hoznak létre új változókat, hanem a meglévőket használják fel. A szűrő átalakítja a karaktert"<" в "<". Также он поступить с другими символами, встречающимися в html коде.
A második függvény dekódolja az url-t, ha a felhasználó megpróbálja hozzáadni az űrlaphoz.
$fio = urldecode($fio);
$email = urldecode($email);
A harmadik függvénnyel eltávolítjuk a szóközt a karakterlánc elejéről és végéről, ha van ilyen:
$fio = trim($fio);
$email = trim($email);
Vannak más funkciók is, amelyek lehetővé teszik a php változók szűrését. Használatuk attól függ, mennyire tart attól, hogy egy támadó programkódot próbál hozzáadni a html-mailekbe való adatküldés ilyen formájához.
A HTML-űrlapból PHP-fájlba továbbított adatok ellenőrzése
Annak ellenőrzésére, hogy ez a kód működik-e, ha az adatátvitel folyamatban van, egyszerűen megjelenítheti a képernyőn a visszhang funkció segítségével:
echo $fio;
visszhang"
";
echo $email;
A második sor itt azért szükséges, hogy a php-változók kimenetét különböző sorokra lehessen szétválasztani.
A beérkezett adatok elküldése a HTML űrlapról levélbe PHP segítségével
Az adatok levélre küldéséhez a PHP levelező funkcióját kell használni.
mail("melyik címre küldjem", "a levél tárgya", "Üzenet (a levél törzse)","Feladó: melyik e-mailről küldték a levelet \r\n");
Például adatokat kell küldenie a webhely tulajdonosának vagy kezelőjének e-mail-címére [e-mail védett]
Az e-mail tárgyának egyértelműnek kell lennie, és az e-mail üzenetének tartalmaznia kell azt, amit a felhasználó a HTML űrlapon megadott.
levél(" [e-mail védett]", "Alkalmazás a webhelyről", "Név:".$fio.". E-mail: ".$email ,"Feladó: [e-mail védett]\r\n");
Hozzá kell adnia egy feltételt, amely ellenőrzi, hogy az űrlapot PHP-vel küldték-e el a megadott e-mail címre.
if (mail(" [e-mail védett]", "Rendelés a webhelyről", "Név:".$fio.". E-mail: ".$email ,"Feladó: [e-mail védett]\r\n"))
{
echo "üzenet sikeresen elküldve";
) más (
}
Így a send.php fájl programkódja, amely a HTML űrlapadatokat küldi el a levélbe, így fog kinézni:
$fio = $_POST["fio"];
$email = $_POST["e-mail"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
//echo $fio;
// visszhang "
";
//echo $email;
if (mail(" [e-mail védett]", "Alkalmazás a webhelyről", "Név:".$fio.". E-mail: ".$email ,"Feladó: [e-mail védett]\r\n"))
( echo "üzenet sikeresen elküldve";
) más (
echo "hiba történt az üzenet küldése közben";
}?>
A fájlba való adattovábbítás ellenőrzésére szolgáló három sor megjegyzésre kerül. Szükség esetén eltávolíthatók, mivel csak a hibakereséshez kellettek.
Helyezze el a HTML és PHP űrlap beküldési kódját egy fájlba
A cikkhez fűzött megjegyzésekben sokan felteszik a kérdést, hogyan lehet a HTML űrlapot és a PHP-kódot is egy fájlba, nem pedig kettőbe foglalni.
A munka megvalósításához el kell helyeznie az űrlap HTML kódját a send.php fájlba, és hozzá kell adnia egy feltételt, amely ellenőrzi a változók jelenlétét a POST tömbben (ez a tömb az űrlapról kerül átadásra). Vagyis ha a változók nem léteznek a tömbben, akkor meg kell mutatnia a felhasználónak egy űrlapot. Ellenkező esetben ki kell vennie az adatokat a tömbből, és el kell küldenie a címzettnek.
Nézzük meg, hogyan változtathatjuk meg a PHP kódot a send.php fájlban:
//ellenőrizze, hogy vannak-e változók a POST tömbben
if(!isset($_POST["fio"]) és !isset($_POST["e-mail"]))(
?> ) más (
//az űrlap megjelenítése
$fio = $_POST["fio"];
$email = $_POST["e-mail"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
if (mail(" [e-mail védett]", "Alkalmazás a webhelyről", "Név:".$fio.". E-mail: ".$email ,"Feladó: [e-mail védett]\r\n"))(
echo "Üzenet sikeresen elküldve";
) más (
echo "Hiba történt az üzenet küldése közben";
}
}
?>
A PHP isset() függvénnyel ellenőrizzük, hogy van-e változó a POST tömbben. A függvény előtti felkiáltójel egy feltételben tagadást jelent. Vagyis ha a változó nem létezik, akkor meg kell mutatnunk az alakunkat. Ha nem tettem fel felkiáltójelet, akkor a feltétel szó szerint azt jelentené, hogy "ha létezik, akkor mutasd meg az űrlapot". És ez esetünkben téves. Természetesen átnevezheti index.php-re. Ha átnevezi a fájlt, ne felejtse el átnevezni a fájl nevét és a sorban