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