
Ahhoz, hogy az SmtpMail osztályt elérhessük, szükségünk lesz a System.Web.Mail névtérre. Válasszuk tehát a Project – Add Reference menüpontot, majd a .NET lapon keressük elő a System.Web.dll-t. Ezután Select, majd Ok és már írhatjuk is:
Az e-mail küldéséhez most is az SmtpMail osztály Send függvényét fogjuk használni, viszont ebből most azt a változatot, mely egy MailMessage osztályt vár paraméterként. Küldés előtt tehát létre kell hoznunk egy ilyen osztályt és megadnunk annak minden szükséges paraméterét.
Kezdjük a létrehozással. Készítünk egy globális változót mm névvel.
private MailMessage mm = new MailMessage();
A MailMessage osztály részére szükséges adatokat a Form-on lévő beviteli eszközökön keresztül adhatjuk meg.
A levél feladójának címe kerül a MailMessage From property-jébe.
private void button1_Click(object sender, System.EventArgs e)
{
mm.From = textBox2.Text;
A To property-be kell írnunk, hogy kinek az e-mail címére küldjük a levelet.
A Cc és Bcc property-kbe kerülnek a másolatok címei. Az e-mail címek megadásánál pontosvesszővel elválasztva szükség esetén több e-mail címet is megadhatunk.
mm.Cc = textBox4.Text;
mm.Bcc = textBox5.Text;
Levelünk tárgya a Subject property-be kerül.
mm.Subject = textBox6.Text;
A prioritást a Priority property-ben állíthatjuk, enne értéke az alábbiak egyike lehet:
mm.Priority = (MailPriority)listBox1.SelectedIndex;
E-mail szövege a Body property-be kerül.
Ennek a szövegnek a kódolását a BodyEncoding property értéke határozza meg, melynek értéke az alábbiak egyike lehet:
- ASCIIEncoding
- UnicodeEncoding
- UTF7Encoding
- UTF8Encoding
switch (listBox2.SelectedIndex)
{
case 0:
mm.BodyEncoding = Encoding.ASCII;
break;
…
}
A szöveg formátuma a BodyFormat property-ben adható meg. Ez HTML, vagy Text lehet.
mm.BodyFormat = (MailFormat)listBox3.SelectedIndex;
Ha csatolni is szeretnénk állományokat a levelünkhöz, akkor szükségünk lesz a MailAttachment osztály kezelésére is. Mellékelt példában egy ListBox-ba gyűjthetjük össze az e-mail küldése előtt azokat az állományokat, melyeket csatolni szeretnénk. Így a küldéskor most nincs más dolgunk, mint végigmenni egy ciklussal a ListBox összes elemén és minden egyesnél egy MailAttachment objektumot létrehozni, melynek konstruktoránál megadjuk az állomány nevet elérési útvonallal együtt. A létrejött objektumot ezek után a MailMessage osztály Attachments property-jén keresztül elérhető Add függvény hívásával adhatjuk hozzá az elküldendő e-mail-hez.
foreach (string s in listBox4.Items)
{
MailAttachment ma = new MailAttachment(s);
mm.Attachments.Add(ma);
}
Ezzel a MailMessage osztály példánya el is készül az e-mail elküldéséhez. Most már csak meg kell adnunk az SMTP szerverünk nevét az SmtpMail osztály SmtpServer property-jében.
SmtpMail.SmtpServer = textBox1.Text;
Majd utolsó lépésként meghívjuk a Send függvényt, átadva neki az előkészített MailMessage objektumot.
SmtpMail.Send(mm);
label12.Text = "WindowsCodePage: " + mm.BodyEncoding.WindowsCodePage.ToString();
}