Častým problémem začínajících .NET vývojářů je odesílání e-mailů, proto se vás v příštích několika dílech pokusím seznámit se správným odesíláním e-mailových zpráv v prostředí .NET 2.0.
Jeden z nejčastěji pokládaných dotazů začínajících .NET vývojářů se týká odesílání e-mailů, proto se vás v následujících několika dílech pokusím s metodami odesílání e-mailů v prostředí .NET seznámit. Zpočátku se dozvíte něco o odesílání běžných zpráv, o metodách odesílání a jejich konfiguraci.
Vytvoření a odeslání zprávy
Zprávu vytvoříte vytvořením nové instance třídy System.Net.Mail.MailMessage – základní údaje o zprávě můžete nastavit přímo v jejím konstruktoru. V jednom z konstruktorů jsou požadovány 2 parametry typu System.Net.Mail.MailAddress – tato třída umožňuje zadat kromě e-mailové adresy i zobrazované jméno s jistotou, že se ve zprávě správně zakóduje.
public void SendMail()
{
// vytvoření nové zprávy
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(new System.Net.Mail.MailAddress("odesilatel@mail.cz", "Odesílatel"), new System.Net.Mail.MailAddress("prijemce@mail.cz", "Příjemce"));
// přiřazení dalšího příjemce - tímto bude mít zpráva 2 příjemce
message.To.Add(new System.Net.Mail.MailAddress("prijemce2@mail.cz", "Příjemce2"));
// předmět zprávy
message.Subject = "Předmět zprávy";
// tělo zprávy
message.Body = "Tělo zprávy";
// určení typu zprávy
message.IsBodyHtml = true;
// vytvoření SMTP klienta
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.mail.cz", 25);
// pokud je to potřeba, můžete provést přihlášení k SMTP serveru
smtp.Credentials = new System.Net.NetworkCredential("Username", "Password");
// nastavení metody odesílání
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
// můžete povolit nebo zakázat zabezpečené odeslání - některé SMTP servery nedovolují zabezpečené připojení
smtp.EnableSsl = false;
// odeslání vytvořené zprávy
smtp.Send(message);
}
K odesílání zprávy slouží třída System.Net.Mail.SmtpClient. Třída mimo jiné umožňuje přihlášení k SMTP serveru, které probíhá prostřednictví třídy System.Net.NetworkCredential. Vlastnost DeliveryMethod, která je typu System.Net.Mail.SmtpDeliveryMethod, slouží k nastavení odesilací metody. Pokud vám to SMTP server dovolí, můžete přes vlastnost EnableSsl povolit zabezpečené odesílání zpráv.
Metody odesílání a jejich konfigurace
- PickupDirectoryFromIis
- Výchozí metoda, která použije mail pickup service lokálního IIS. K odeslání zprávy nemusí dojít, když .NET Framework není schopen načíst konfiguraci z IIS nebo když na serveru nejsou zapnuté SMTP services. Nepotřebuje žádné zvláštní nastavení.
- SpecifiedPickupDirectory
- Hodí se k vyřešení problému s načítáním konfigurace u předchozí metody, nebo když vlastně žádné e-maily posílat nechcete. Musíte specifikovat, jaký adresář se má použít, většinou C:\Inetpub\mailroot\Pickup.
-
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.net> <mailSettings> <smtp from="odesilatel@mail.cz" deliveryMethod="SpecifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="C:\Inetpub\mailroot\Pickup"/> </smtp> </mailSettings> </system.net> </configuration>
- Network
- Mnou preferovaná metoda, která k odeslání použije jakýkoliv SMTP server, který vám odeslání dovolí. Většinou je potřeba se přihlásit. Musíte specifikovat alespoň adresu SMTP serveru. Tato metoda funguje prakticky pokaždé.
-
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.net> <mailSettings> <smtp from="odesilatel@mail.cz" deliveryMethod="Network"> <network host="smtp.mail.cz" port="25" userName="Username" password="Password"/> </smtp> </mailSettings> </system.net> </configuration>
Pod popisem metody je uveden příklad konfigurace, která probíhá v konfiguračním souboru aplikace – app.config v případě klientské aplikace a web.config v případě webové aplikace.
Závěrem
To je v 1. dílu vše, pokud vám tu něco podstatného chybí, neváhejte se zeptat v komentářích. Příště se dozvíte, jak správně odesílat přílohy a jak zobrazovat obrázkové přílohy v těle zprávy, aby je následně zobrazil každý klient pracující s HTML zprávami.