Die im Folgenden aufgeführten Codeausschnitte stützen sich u.A. auf Beispiele der nachfolgenden Seiten:
synchrones Senden (einfaches Beispiel)
using System; using System.Collections.Generic; using System.Text; using System.Net; // NetworkCredential using System.Net.Mail; using System.Net.Mime; using System.ComponentModel; using System.IO; //AsyncCompletedEventArgs class Program { static void Main(string[] args) { // Mailobjekt erzeugen MailMessage mmMsg = new MailMessage(); // Absenderadresse, Name, Codierung mmMsg.From = new MailAddress("horst@domain.com", "Horst", Encoding.UTF8); // Empfängeradresse, Name, Codierung mmMsg.To.Add(new MailAddress("heinz@domain.com", "Heinz", Encoding.UTF8)); // Mailüberschrift + Codierung mmMsg.Subject = "Mailüberschrift"; mmMsg.SubjectEncoding = Encoding.UTF8; // Mailtext + Codierung mmMsg.Body = "Testtext"; mmMsg.Body += Environment.NewLine; mmMsg.Body += "Testtext2"; mmMsg.BodyEncoding = Encoding.UTF8; // Anhänge hinzufügen // Mime-Typen: http://www.webmaster-toolkit.com/mime-types.shtml // Textdatei + Mimetype mmMsg.Attachments.Add(new Attachment("c:\\Test.txt", "text/plain")); // Exedatei + Mimetype mmMsg.Attachments.Add(new Attachment("c:\\Test.exe", "application/octet-stream")); // Bild + Mimetype mmMsg.Attachments.Add(new Attachment("c:\\Test.jpg", "image/jpeg")); // MailClient-Obj erzeugen und Servernamen und Port übergeben SmtpClient smtpClient = new SmtpClient("mail.gmx.net", 25); // User, Passwort smtpClient.Credentials = new NetworkCredential("user", "password"); // Mail Directory festlegen smtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; smtpClient.PickupDirectoryLocation = "c:\\Temp\\"; // Mail versenden smtpClient.Send(mmMsg); } }
asynchrones Senden (Komplexbeispiel)
using System; using System.Collections.Generic; using System.Text; using System.Net; // NetworkCredential using System.Net.Mail; using System.Net.Mime; using System.ComponentModel; using System.IO; //AsyncCompletedEventArgs class Program { static bool bSendCompleted = false; private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e) { String sToken = (string)e.UserState; // "ÜbergabeToken", siehe smtpClient.SendAsync(...) if (e.Cancelled) { Console.WriteLine("[{0}] Mailsendung abgebrochen.", sToken); } if (e.Error != null) { Console.WriteLine("[{0}] {1}", sToken, e.Error.ToString()); } else { Console.WriteLine("Mail versendet."); } bSendCompleted = true; } static void Main(string[] args) { // Mailobjekt erzeugen MailMessage mmMsg = new MailMessage(); // Absender, Name, Codierung mmMsg.From = new MailAddress("horst@domain.com", "Horst", Encoding.UTF8); // Empfänger, Name, Codierung mmMsg.To.Add(new MailAddress("heinz@domain.com", "Heinz", Encoding.UTF8)); mmMsg.To.Add(new MailAddress("klaus@domain.com", "Klaus", Encoding.UTF8)); // Carbon-Copy-Empfänger, Name, Codierung mmMsg.CC.Add(new MailAddress("rita@domain.com", "Rita", Encoding.UTF8)); // Blind-Carbon-Copy-Empfänger, Name, Codierung mmMsg.Bcc.Add(new MailAddress("sieglinde@domain.com", "Sieglinde", Encoding.UTF8)); // Priorität der Mail mmMsg.Priority = MailPriority.Normal; // Mailüberschrift + Codierung mmMsg.Subject = "Mailüberschrift"; mmMsg.SubjectEncoding = Encoding.UTF8; // Mailtext, HTML, Codierung mmMsg.Body = "Testtext"; mmMsg.Body += Environment.NewLine; mmMsg.Body += "Testtext2"; mmMsg.IsBodyHtml = false; mmMsg.BodyEncoding = Encoding.UTF8; // Benachrichtigungen mmMsg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess | DeliveryNotificationOptions.OnFailure | DeliveryNotificationOptions.Delay; // Filestream für Mailanhang (Bild) öffnen FileStream fs = new FileStream("c:\\Bild1.jpg", FileMode.Open, FileAccess.Read); // Typ des Mailanhang festlegen (JPEG, Name) ContentType ct = new ContentType(); ct.MediaType = MediaTypeNames.Image.Jpeg; ct.Name = "Bild1.jpg"; // Mailanhang hinzufügen mmMsg.Attachments.Add(new Attachment(fs, ct)); // MailClient-Obj erzeugen SmtpClient smtpClient = new SmtpClient(); // Servernamen smtpClient.Host = "mail.gmx.net"; // Mail-Port smtpClient.Port = 25; // Timeout bis Abbruch smtpClient.Timeout = 10000; // SSL verwenden? smtpClient.EnableSsl = false; // Mail Directory festlegen, funktioniert nicht mit SSL smtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; smtpClient.PickupDirectoryLocation = "c:\\Temp\\"; // Username und Passwort festlegen smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new NetworkCredential("user", "password"); // Eventhandler für asyncheones Senden hinzufügen smtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback); // Mail asynchron versenden smtpClient.SendAsync(mmMsg, "ÜbergabeToken"); Console.WriteLine("Mail wird versendet ... 'c' zum abbrechen."); string sInput = Console.ReadLine(); // auf Eingabe warten und wenn Mail noch nicht versendet // evtl. abbrechen if (sInput.StartsWith("c") && bSendCompleted == false) { smtpClient.SendAsyncCancel(); } // aufräumen mmMsg.Dispose(); // Stream für Mailanhang schließen fs.Close(); } }