TCP/IP Socket-Programmierung in C# - E-Mail verschicken |
Geschrieben von: Kristian |
Sonntag, den 12. März 2006 um 02:20 Uhr |
Seite 7 von 7
E-Mail verschickenVor dem Aufkommen von E-Mail wurden Nachrichten als Brief oder Telegramm, später als Fernschreiben und Teletex (die letzteren beiden waren immerhin schon digitale Übertragungsverfahren) sowie Telefax übermittelt. Ende der 1980er Jahre begann dann der Siegeszug der E-Mail – sie war eine der ersten Anwendungen, welche die Möglichkeiten des ARPAnets nutzte. Das Format einer E-Mail wird heute durch den RFC 2822 festgelegt. Danach bestehen E-Mails nur aus Textzeichen (7-Bit-ASCII-Zeichen). E-Mails sind intern in zwei Teile geteilt: Den Header mit Kopfzeilen und den Body mit dem eigentlichen Inhalt der Nachricht. Die Header genannten Kopfzeilen einer E-Mail geben Auskunft über den Weg, den eine E-Mail genommen hat, und bieten Hinweise auf Absender, Empfänger, Datum der Erstellung und Stationen der Übermittlung. Der Body einer E-Mail ist durch eine Leerzeile vom Header getrennt und enthält die zu übertragenden Informationen in einem oder mehreren Teilen. Eine E-Mail darf gemäß RFC 2822 Abschnitt 2.3 nur Zeichen des 7-Bit-ASCII-Zeichensatzes enthalten. Sollen andere Zeichen, wie zum Beispiel deutsche Umlaute, oder Daten, wie zum Beispiel Bilder, übertragen werden, müssen diese zuvor passend kodiert werden. E-Mails werden vorwiegend per SMTP über das Internet und in lokalen Netzen übertragen. Das Simple Mail Transfer Protocol ist ein Protokoll der Internetprotokollfamilie und liegt in der Anwendungsschicht eine Ebene über der Transportschicht (TCP). Der verwendete Port ist 25 bzw. bei neueren Servern Port 587. Das .NET Framework stellt für das Versenden von E-Mails separate Klassen zur Verfügung die im Namespace System.Net.Mail versammelt sind. Die Basisklasse für alle Übertragungen bildet die Klasse SmtpClient. Mit dieser Klasse lassen sich Nachrichten auf bequeme Art und Weise versenden. Im nachfolgenden Beispiel wird eine Nachricht synchron versendet. Dabei gilt es zu beachten das viele SMTP-Server eine Authentifizierung des Nutzers erfordern. Die Authentifizierung kann mittels der Klasse NetworkCredential erfolgen. using System; using System.Net.Mail; namespace CodePlanet.Articles.ProgrammingSockets { /// <summary> /// Versendet eine E-Mail über SMTP samt Bild als Anhang. /// </summary> public class SendMail { public static void Main(string[] args) { // Daten eingeben try { MailAddress from = new MailAddress("fromAdress", "Ali Baba"); MailAddress to = new MailAddress("toAdress", "Forty Thieves"); MailMessage message = new MailMessage(from, to); message.Subject = "Our Subject"; message.Body = "This is a message from..."; message.IsBodyHtml = false; message.Priority = MailPriority.High; // Ein Bild als Anhang mitsenden Attachment a = new Attachment("photo.jpg", System.Net.Mime.MediaTypeNames.Image.Jpeg); message.Attachments.Add(a); // SMTP Server benötigt ggf. eine Authentfizierung! SmtpClient emailClient = new SmtpClient("smtp.domain.com", 587); System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential("User", "Password"); emailClient.UseDefaultCredentials = false; emailClient.Credentials = SMTPUserInfo; emailClient.Send(message); Console.WriteLine("Message Sent"); } catch (SmtpException ex) { Console.WriteLine(ex.ToString()); } } } } Sollen viele Nachrichten versendet werden, ist oftmals die synchrone Lösung unzufriedenstellend. Auch in diesem Fall lassen sich mittels Callback asynchrone Operationen durchführen, die ein Blocking der Applikation verhindern. Das Versenden kann sequentiell ebenfalls von einem parallelen Thread ausgeführt werden. SchlussDamit haben wir das Ende dieses Tutorials erreicht. Der Bereich Sockets und insbesondere Protokolle würde allein schon ausreichen um ein Buch mit 500 Seiten zu füllen. Dieses Tutorial gibt lediglich einen kleinen Überblick über TCP/IP in der Programmiersprache C#. Hoffentlich konnte der Artikel Ihnen die .NET Version von Winsock, sowie die wesentlichen Klassen für den Umgang mit dem Internet in C#, ein wenig näher bringen. Im Dateianhang sind neben den im Tutorial aufgeführten Beispielen noch einige weitere Quellcodes zu finden, die Sie sich bequem in Ruhe näher ansehen können. Happy Programming! |
Zuletzt aktualisiert am Donnerstag, den 02. Januar 2014 um 23:03 Uhr |
AUSWAHLMENÜ | ||||||||
|