1. #1

    Registriert seit
    22.05.2012
    Beiträge
    203
    Thanked 21 Times in 9 Posts

    Standard Klasse um E-Mails zu senden

    Hier habt ihr eine Klasse, womit ihr E-Mails senden könnt. Ich weiß nicht mehr genau ob die SMTP-Ports sich bei den ganzen E-Mail Anbietern geändert haben aber ich denke nicht und wenn, könnt ihr diese ja hier dann posten.

    Das beste an dieser Klasse ist, man kann irgendeinen Absender beim Anzeigenamen angeben und dieser wird dann dem Empfänger angezeigt. Wenn der Empfänger nicht soviel Ahnung hat, fällt dieser natürlich rein.


    using System;
    using System.IO;
    using System.Net;
    using System.Net.Mail;

    class Mail
    {
    String SenderMail, SenderMailPass, Receiver, DisplayName;

    /// <summary>
    /// Initialisiert eine neue Instanz der Mail-Klasse.
    /// </summary>
    /// <param name="senderMail">Die E-Mail Adresse, womit die E-Mail gesendet werden soll.</param>
    /// <param name="senderMailPass">Das dazugehörige Passwort der E-Mail Adresse.</param>
    /// <param name="receiver">Der Empfänger der E-Mail.</param>
    /// <param name="displayName">Der Anzeigename der beim Empfänger als Absender angezeigt werden soll.</param>
    public Mail(String senderMail, String senderMailPass, String receiver, String displayName)
    {
    this.SenderMail = senderMail;
    this.SenderMailPass = senderMailPass;
    this.Receiver = receiver;
    this.DisplayName = displayName;
    }

    /// <summary>
    /// Sendet eine E-Mail an den angegebenen Empfänger mit den angegebenen E-Mail Daten.
    /// </summary>
    /// <param name="subject">Betreff der zu sendenden E-Mail.</param>
    /// <param name="useHTML">Bestimmt, ob bei der E-Mail HTML benutzt werden soll.</param>
    /// <param name="message">Die Nachricht der E-Mail.</param>
    /// <param name="priority">Die Priorität der E-Mail.</param>
    /// <param name="attachmentPath">Gibt den Pfad zum Anhang an, wenn kein Anhang hinzugefügt werden soll, hier "null" angeben.</param>
    /// <param name="mailProvider">Der E-Mail Anbieter den man zum Senden der E-Mail benutzt.</param>
    public void Send(String subject, bool useHTML, String message, MailPriority priority, String attachmentPath, MailProvider mailProvider)
    {
    try
    {
    NetworkCredential mailCredentials = new NetworkCredential();
    mailCredentials.UserName = SenderMail;
    mailCredentials.Password = SenderMailPass;

    MailAddress mailAddress = null;

    if (!String.IsNullOrEmpty(DisplayName))
    mailAddress = new MailAddress(SenderMail, DisplayName);
    else
    mailAddress = new MailAddress(SenderMail);

    MailMessage mailMessage = new MailMessage();
    mailMessage.From = mailAddress;
    mailMessage.Subject = subject;
    mailMessage.IsBodyHtml = useHTML;
    mailMessage.Body = message;
    mailMessage.Priority = priority;

    if (!String.IsNullOrEmpty(attachmentPath) && File.Exists(attachmentPath))
    mailMessage.Attachments.Add(new Attachment(attachmentPath));

    mailMessage.To.Add(Receiver);

    SmtpClient smtpClient = new SmtpClient();
    smtpClient.Host = getMailProviderHost(mailProvider);
    smtpClient.Port = getMailProviderPort(mailProvider);
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = mailCredentials;

    smtpClient.Send(mailMessage);
    }
    catch (SmtpException smptpEx)
    {
    Console.WriteLine(smptpEx.ToString());
    }
    }

    private String getMailProviderHost(MailProvider mailProvider)
    {
    switch (mailProvider)
    {
    case MailProvider.GMX:
    return "mail.gmx.net";
    case MailProvider.GOOGLEMAIL:
    return "smtp.googlemail.com";
    case MailProvider.WEB:
    return "smtp.web.de";
    case MailProvider.YAHOO:
    return "smtp.mail.yahoo.de";
    }
    return null;
    }

    private int getMailProviderPort(MailProvider mailProvider)
    {
    switch (mailProvider)
    {
    case MailProvider.GMX:
    return 465;
    case MailProvider.GOOGLEMAIL:
    return 465;
    case MailProvider.WEB:
    return 587;
    case MailProvider.YAHOO:
    return 465;
    }
    return 0;
    }
    }

    public enum MailProvider
    {
    WEB,
    GMX,
    GOOGLEMAIL,
    YAHOO
    }


    Aufruf-Beispiel:



    Mail mail = new Mail("ABSENDER@web.de", "PASSWORT", "Kolloid@knuddels.de", "Holgi@knuddels.de");
    mail.Send("Hallo", false, "Hey du Noob!", MailPriority.High, null, MailProvider.WEB);


    So sieht es dann beim Empfänger aus:

    Klicke auf die Grafik für eine größere Ansicht 

Name:	mailv2kxt.png 
Hits:	215 
Größe:	17,4 KB 
ID:	7475

  2. The Following User Says Thank You to The Don of NYC For This Useful Post:

    Negok (29.08.2016)

  3. #2

    Registriert seit
    14.08.2012
    Beiträge
    7
    Thanked 0 Times in 0 Posts

    Standard Klasse um E-Mails zu senden

    Ich muss sagen, das hast du sehr schön gelöst Ich werde Sie auf jedenfall nutzen.
    Vielen dank.

    Achja und die Ports müssten eigentlich stimmen.

Ähnliche Themen

  1. [H] VB Text Senden
    Von AmJano im Forum Knuddels Programmierung
    Antworten: 2
    Letzter Beitrag: 19.08.2012, 17:12
  2. VB.Net Mails kommen nicht an
    Von x BoooM x im Forum .Net
    Antworten: 3
    Letzter Beitrag: 15.02.2012, 23:51
  3. e-mail senden?
    Von helfen im Forum iOS
    Antworten: 0
    Letzter Beitrag: 13.01.2012, 23:11
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.