11 – Přidání e-mailu na web

 
 

 

Tato kapitola vysvětluje, jak z webu odesílat automatizované e-mailové zprávy.

Co se naučíte:

V této kapitole budou představeny následující funkce technologie ASP.NET:

 

 

Odesílání e-mailových zpráv z webu

Pro odeslání e-mailu z webu může existovat celá řada důvodů. Můžete uživatelům odesílat zprávy s potvrzením nebo můžete odesílat upozornění sami sobě (například při registraci nového uživatele). Pomocná třída WebMail (Webová pošta) vám odesílání e-mailů velmi usnadní.

Abyste mohli pomocnou třídu WebMail používat, musíte mít přístup k serveru SMTP (Simple Mail Transfer Protocol). SMTP server je e-mailový server, který zprávy pouze předává serveru příjemce — zajišťuje zpracování odchozích e-mailů. Pokud pro svůj web používáte poskytovatele hostingových služeb, nejspíš pro vás zřídil e-mailové služby a dozvíte se od něj název vašeho serveru SMTP. Pokud pracujete uvnitř podnikové sítě, pak vám informace, který server můžete použít, obvykle poskytne správce nebo oddělení IT. Pokud pracujete doma, můžete zkusit použít svého běžného poskytovatele e-mailových služeb, který vám sdělí název svého serveru SMTP. Obvykle potřebujete:

V rámci tohoto postupu vytvoříme dvě stránky. První stránka obsahuje formulář umožňující uživatelům zadat popis, jako by vyplňovali formulář technické podpory. Informace z této první stránky jsou odeslány druhé stránce. Kód v druhé stránce informace od uživatele zpracuje a odešle e-mailovou zprávu. Také zobrazí zprávu potvrzující, že hlášení problému bylo přijato.

ch11email-1

Poznámka   V rámci zachování jednoduchosti tohoto příkladu kód inicializuje pomocnou třídu WebMail přímo ve stránce, ve které ji používáme. Při práci se skutečnými weby je ovšem lepší vložit takovýto kód s inicializací do globálního souboru, aby bylo možné třídu WebMail inicializovat pro všechny soubory na webu. Další informace najdete v kapitole 18 – úpravy chování s platností na celém webu.
  1. Vytvořte nový web.
  2. Vytvořte novou stránku s názvem EmailRequest.cshtml a přidejte do ní následující kód značkovacího jazyka:
    <!DOCTYPE html> 
    <html> 
    <head> 
        <title>Request for Assistance</title> 
    </head> 
    <body> 
      <h2>Submit Email Request for Assistance</h2> 
      <form method="post" action="ProcessRequest.cshtml"> 
        <div> 
            Your name: 
            <input type="text" name="customerName" /> 
        </div> 
     
        <div> 
            Details about your problem: <br /> 
            <textarea name="customerRequest" cols="45" rows="4"></textarea> 
        </div> 
     
        <div> 
            <input type="submit" value="Submit" /> 
        </div> 
      </form> 
    </body> 
    </html>

    Všimněte si, že atribut action (akce) elementu form byl nastaven na hodnotu ProcessRequest.cshtml. To znamená, že formulář bude odeslán této stránce místo aktuální stránky.

  3. Přidejte na web novou stránku s názvem ProcessRequest.cshtml a přidejte do ní následující programový kód a kód značkovacího jazyka:
    @{ 
        var customerName = Request["customerName"]; 
        var customerRequest = Request["customerRequest"]; 
        try { 
            
    // Inicializace pomocné třídy WebMail
             WebMail.SmtpServer = "your-SMTP-host"; 
            WebMail.SmtpPort = 25; 
            WebMail.EnableSsl = true; 
            WebMail.UserName = "your-user-name-here"; 
            WebMail.From = "your-email-address-here"; 
            WebMail.Password = "your-account-password"; 
     
            
    // Odeslání e-mailu 
            WebMail.Send(to: "target-email-address-here", 
                subject: "Help request from - " + customerName, 
                body: customerRequest 
            ); 
        } 
        catch (Exception ex ) { 
            <text> 
                <b>The email was <em>not</em> sent.</b> 
                The code in the ProcessRequest page must provide an 
                SMTP server name, a user name, a password, and 
                a "from" address. 
            </text> 
        } 
    } 
    <!DOCTYPE html> 
    <html> 
    <head> 
      <title>Request for Assistance</title> 
    </head> 
    <body> 
      <p>Sorry to hear that you are having trouble, <b>@customerName</b>.</p> 
     
      <p>An email message has been sent to our customer service 
         department regarding the following problem:</p> 
     
      <p><b>@customerRequest</b></p> 
    </body> 
    </html>

    V kódu získáme hodnoty polí formuláře, které byly stránce zaslány. Poté můžeme zavolat metodu Send (Odeslat) pomocné třídy WebMail (Webová pošta), která vytvoří a odešle e-mailovou zprávu. V tomto případě použijeme hodnoty sestávající z textu zřetězeného s hodnotami odeslanými z formuláře.

    Kód pro tuto stránku se nachází uvnitř bloku try/catch. Pokud z nějakého důvodu nebude pokus o odeslání e-mailu úspěšný (například při použití nesprávných nastavení), bude na stránce zobrazena zpráva. Značka <text> je použita pro označení více řádků textu v rámci bloku kódu. (Více informací o blocích try/catch a o značce <text> získáte v kapitole 2 – úvod do programování webů ASP.NET s použitím syntaxe Razor.)

  4. Upravte v kódu následující nastavení e-mailu:
  5. Spusťte stránku EmailRequest.cshtml v prohlížeči. (Před jejím spuštěním ověřte, zda je stránka vybrána v pracovním prostředí Files – Soubory.)
  6. Zadejte své jméno a popis problému a poté klikněte na tlačítko Submit (Odeslat). Budete přesměrováni na stránku ProcessRequest.cshtml, která zobrazí potvrzení přijetí vaší zprávy a odešle e-mailovou zprávu.

    ch11email-2

Odesílání souborů e-mailem

Můžete také posílat soubory připojené k e-mailovým zprávám. V rámci tohoto postupu vytvoříme textový soubor a dvě stránky HTML. Textový soubor použijeme jako přílohu e-mailu.

  1. Na webu vytvořte nový textový soubor s názvem MyFile.txt (Můj soubor.txt).
  2. Zkopírujte následující text a vložte ho do souboru:

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

  3. Vytvořte stránku s názvem SendFile.cshtml a přidejte do ní následující kód značkovacího jazyka:
    <!DOCTYPE html> 
    <html> 
    <head> 
        <title>Attach File</title> 
    </head> 
    <body> 
      <h2>Submit Email with Attachment</h2> 
      <form method="post" action="ProcessFile.cshtml"> 
        <div> 
            Your name: 
            <input type="text" name="customerName" /> 
        </div> 
     
        <div> 
    Předmět: <br /> 
            <input type="text" size= 30 name="subjectLine" /> 
        </div> 
     
        <div> 
            File to attach: <br /> 
            <input type="text" size=60 name="fileAttachment" /> 
        </div> 
     
        <div> 
            <input type="submit" value="Submit" /> 
        </div> 
      </form> 
    </body> 
    </html>
  4. Vytvořte stránku s názvem ProcessFile.cshtml a přidejte do ní následující kód značkovacího jazyka:
    @{ 
        var customerName = Request["customerName"]; 
        var subjectLine = Request["subjectLine"]; 
        var fileAttachment = Request["fileAttachment"]; 
     
        try { 
            // Inicializace pomocné třídy WebMail 
            WebMail.SmtpServer = "your-SMTP-host"; 
            WebMail.SmtpPort = 25; 
            WebMail.EnableSsl = true; 
            WebMail.UserName = "your-user-name-here"; 
            WebMail.From = "your-email-address-here"; 
            WebMail.Password = "your-account-password"; 
     
            // Vytvoření pole obsahující název souboru 
            var filesList = new string [] { fileAttachment }; 
     
            // Připojení souboru a odeslání e-mailu 
            WebMail.Send(to: "target-email-address-here", 
                subject: subjectLine, 
                body: "File attached. <br />From: " + customerName, 
                filesToAttach: filesList); 
        } 
        catch (Exception ex) { 
            <text> 
                <b>The email was <em>not</em> sent.</b> 
                The code in the ProcessFile page must provide an 
                SMTP server name, a user name, a password, and 
                a "from" address. 
            </text> 
        } 
    } 
    <!DOCTYPE html> 
    <html> 
    <head> 
        <title>Request for Assistance </title> 
    </head> 
    <body> 
      <p><b>@customerName</b>, thank you for your interest.</p> 
     
      <p>An email message has been sent to our customer service 
      department with the <b>@fileAttachment</b> file attached.</p> 
     
    </body> 
    </html>
  5. V kódu příkladu upravte následující nastavení pro e-mail:
  6. Spusťte stránku SendFile.cshtml v prohlížeči.
  7. Zadejte své jméno, předmět a název textového souboru, který má být připojen (MyFile.txt).
  8. Klikněte na tlačítko Submit (Odeslat). Budete opět přesměrováni na stránku ProcessFile.cshtml, která vaši zprávu potvrdí a odešle e-mailovou zprávu s připojeným souborem.

Další materiály

Kapitola 18 – úpravy chování s platností na celém webu

Protokol SMTP (Simple Mail Transfer Protocol)

Referenční příručka pro webové stránky ASP.NET se syntaxí Razor