× Aktuálně z oboru

Vychází Game Ready ovladače pro Far Cry 5 [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]
Celá zprávička [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]

Odesílání e-mailů – 2. díl

[ http://programujte.com/profil/2373-dusan-janosik/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/75-martin-zak/ ]Google [ :?rel=author ]       9. 7. 2006       22 730×

V druhém, pravděpodobně posledním dílu se dozvíte, jak odesílat e-maily s přílohami a jak zobrazovat přiložené obrázky v těle e-mailu.

Dnes přímo navážu na předchozí díl a ukážu vám, jak snadné je odesílat e-maily s přílohami, jak zobrazovat přiložené obrázky v těle e-mailu a jak nastavit správný MIME typ přílohy pro zajištění správného zobrazení ve všech e-mailových kilentech.

Odesílání příloh

Klasickou přílohu reprezentuje třída System.Net.Mail.Attachment [ http://msdn2.microsoft.com/en-us/library/system.net.mail.attachment.aspx ], přes kterou můžete připojit fyzický soubor nebo objekt typu Stream [ http://msdn2.microsoft.com/en-us/library/system.io.stream.aspx ].


// vytvoření nové přílohy
System.Net.Mail.Attachment atach = new System.Net.Mail.Attachment("c:/soubor.jpg");
// nastavení MIME typu
atach.ContentType.MediaType = System.Net.Mime.MediaTypeNames.Image.Jpeg;
// přiložení přílohy do zprávy
message.Attachments.Add(atach);

Velmi důležité je správné určení MIME typu přílohy – zabráníte tak možným komplikacím při zobrazování na straně klienta.

Nezapomínejte správně určit MIME typ přílohy, můžete tak zabránit případným chybám v zobrazení na straně klienta.

Zobrazení obrázku v těle e-mailu

Možná vás někdy zajímalo, jak vlastně fungují obrázkové propagační e-maily, spamy, když žádný obrázek není umístěn na externím serveru ani jako běžná příloha. Vše spočívá v tom, že zvláštnímu typu přílohy přiřadíte určité ContentId a následně zobrazíte obrázek v HTML zprávě.


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 = "Vložený obrázek";
    // určení typu zprávy
    message.IsBodyHtml = true;

    // přilinkování obrázku
    System.Net.Mail.LinkedResource lres = new System.Net.Mail.LinkedResource(@"C:\soubor.jpg");
    // přiřazení ContentId
    lres.ContentId = "img";
    // nastavení MIME typu
    lres.ContentType.MediaType = System.Net.Mime.MediaTypeNames.Image.Jpeg;

    // vytvoření alternativního zobrazení zprávy
    System.Net.Mail.AlternateView aview = System.Net.Mail.AlternateView.CreateAlternateViewFromString(@"Tělo zprávy.<br><img src=""cid:img"">", null, "text/html");
    // přiložení přilinkovaného obrázku
    aview.LinkedResources.Add(lres);

    // přiložení alternativního zobrazení ke zprávě
    message.AlternateViews.Add(aview);

    // 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);
}

Znovu jsem uvedl celý kód, abyste se mohli podívat na změny. Obrázek není připojený jako běžná příloha, ale jako System.Net.Mail.LinkedResource [ http://msdn2.microsoft.com/en-us/library/system.net.mail.linkedresource.aspx ], který se u klienta nezobrazí v seznamu příloh. I v tomto případě je dobré nastavit správný MIME typ. Není klasicky uvedené tělo zprávy message.Body, protože je vytvořený objekt System.Net.Mail.AlternateView [ http://msdn2.microsoft.com/en-us/library/system.net.mail.alternateview.aspx ], který po připojení ke zprávě celý obsah message.Body přepíše. Ve zvoleném konstruktoru AlternateView jsou tři parametry: text, kódování a MIME typ. Obrázek ve zprávě zobrazjete bežným tagem.

<img src="cid:img">

Jako src zvolte prefix cid: a následně ContentId, které jste přiřadili vašemu obrázku, v tomto případě je to img.

Závěrem

To je všechno, co jsem vám chtěl sdělit. Vaše dotazy pište do komentářů – mohou mě inspirovat k napsání dalšího dílu tohoto krátkého seriálu.


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006070201-odesilani-e-mailu-2-dil/ ].