E-Mail-Nachricht per Telnet versenden

smtp
Tags: #<Tag:0x00007f9adfb9a060>

#1

Um eine E-Mail-Nachricht per Telnet zu versenden, folgende Befehle verwenden:

telnet mymailserver 25
HELO local.domain.com
MAIL FROM: someone@example.org
RCPT TO: someone@example.org
DATA
SUBJECT: Mein Betreff

Mein Inhalt
.
QUIT

Jede Zeile mit der Eingabe-Taste abschließen, bis auf SUBJECT, dort zwei mal die Eingabe-Taste betätigen.

mymailserver ist der entsprechende Name oder die IP-Adresse des Mailserver. Z.B. localhost, wenn auf dem lokalen Server der Mailserver läuft.


#2

Hier eine Lösung in C#:

using System;
using System.Net.Mail;

class CMain
{
    public static void Main()
    {
        string host   = "smtp.gmail.com";
        string hostid = "from@gmail.com";
        string hostpw = "password";

        try
        {
            SmtpClient smtp = new SmtpClient();
            smtp.Credentials = new System.Net.NetworkCredential(hostid, hostpw);
            smtp.Host = host;
            smtp.Port = 587;
            smtp.EnableSsl = true;

            MailMessage mm = new MailMessage(hostid, "to@test.com", "Test-Subject", "Test-Body");
            smtp.Send(mm);
            Console.WriteLine("Email sent");
        }
        catch (Exception ex)
        {
            Console.WriteLine("ERROR: " + ex);
        }
    }
}

#3

Danke!

Bei SMTP ist es in C# auch immer sehr sinnvoll, die InnerException abzurufen, da dort meistens die eigentliche Serverantwort steht.

Also z.B. so was wie:

catch (Exception ex)
{
    while ( ex != null )
    {
        Console.WriteLine("ERROR: " + ex);
        ex = ex.InnerException;
    }
}