it-swarm.com.de

Der Remote-Name konnte nicht aufgelöst werden, wenn E-Mails mit SMTP mit Host als IP-Adresse gesendet werden

MailMessage message = new MailMessage();
message.Subject = "test";
message.Body = "test";
message.To.Add("[email protected]");
message.From = new MailAddress("[email protected]");
SmtpClient smtp = new SmtpClient();
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Host = "172.22.0.20";
smtp.Port = 25;
smtp.Send(message);

Jede Idee, warum ich einen Fehler bekomme 

Die Remotename konnte nicht aufgelöst werden. 

Natürlich ist keine Auflösung erforderlich, da ich eine IP-Adresse angegeben habe. Ich kann die IP-Adresse und sogar Telnet an Port 25 anpingen und erfolgreich eine E-Mail senden. Ich kann jedoch keine E-Mail senden.

Ich habe eine wireshark-Ablaufverfolgung ausgeführt, und es sieht nicht so aus, als würde Verkehr an 172.22.0.20 gesendet

11
Lee Tickett

Ich verwende diesen Code und es funktioniert einwandfrei an meinem Ende. __ Stellen Sie sicher, dass Sie die richtige IP-Adresse und Portnummer verwenden. Ich denke, Ihre Portnummer ist nicht korrekt . (Öffnen Sie Ihre E-Mail-ID und überprüfen Sie die E-Mail-Konfiguration.)

MailMessage mail = new MailMessage("[email protected]", "[email protected]");
mail.Subject = "Subject";
mail.IsBodyHtml = true;
mail.Body = "this is email body";

SmtpClient client = new SmtpClient("172.22.0.20");
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
client.Port = 25;

client.Send(mail);
8

Ich habe Ihren Code getestet mit:

static void Main(string[] args)
        {
            try
            {
                MailMessage message = new MailMessage();
                message.Subject = "test";
                message.Body = "test";
                message.To.Add("[email protected]");
                message.From = new MailAddress("[email protected]");
                SmtpClient smtp = new SmtpClient();
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.UseDefaultCredentials = false;
                smtp.Host = "127.0.0.1";
                smtp.Port = 25;
                smtp.Send(message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.ReadLine();
            }
        }

Und es scheint gut zu sein. Ich habe die smtp4dev-Tools verwendet und dies macht dies deutlich:

220 localhost smtp4dev ready
EHLO Aepro
250-Nice to meet you.
250-8BITMIME
250-STARTTLS
250-AUTH=CRAM-MD5 PLAIN LOGIN ANONYMOUS
250-AUTH CRAM-MD5 PLAIN LOGIN ANONYMOUS
250 SIZE
MAIL FROM:<[email protected]>
250 Okey dokey
RCPT TO:<[email protected]>
250 Recipient accepted
RSET
250 Rset completed
RSET
250 Rset completed
MAIL FROM:<[email protected]>
250 Okey dokey
RCPT TO:<[email protected]>
250 Recipient accepted
DATA
354 End message with period
MIME-Version: 1.0

Wenn ich jedoch eine falsche IP-Adresse eingebe, habe ich eine Ausnahme (die normal ist).

Ich denke, Ihre IP ist schlecht oder Sie müssen ein Problem mit einer Firewall haben

3
user5447154

Der folgende Code funktioniert gut an meinem Ende .....

        MailMessage mailMessage = new MailMessage("[email protected]", "[email protected]");
        mailMessage.Priority = System.Net.Mail.MailPriority.High;
        mailMessage.Body = "message";
        mailMessage.IsBodyHtml = true;
        SmtpClient smtpClient = new SmtpClient("Host/IP", 25);
        NetworkCredential credentials = new NetworkCredential("[email protected]", "password");
        smtpClient.Credentials = credentials;
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtpClient.Credentials = credentials;
        smtpClient.Send(mailMessage);
3

Wenn Ihr Code in einem Dienstanwendungspool ausgeführt wird, müssen Sie die Identität unter "Erweiterte Einstellungen" im Prozessmodell als "Netzwerkdienst" und nicht als Standard "ApplicationPoolIdentity" festlegen. Wenn Sie das tun, wird es jedes Mal funktionieren. Wenn nicht, funktionieren einige E-Mails, andere nicht. Es ist eine seltsame Erlaubnissache.

2
Robin Johnson

Ein ähnliches Problem tauchte hier auf: System.Net.WebException: Der Remote-Name konnte nicht aufgelöst werden:

Wie Sie sehen, kann ein einfacher Abfragemechanismus, der eine try-catch-Anweisung umhüllt, Ihnen die Möglichkeit geben, Ihren Methodenblock mehrmals (der sporadisch fehlschlägt) auszuprobieren, bevor Sie ihn dem Benutzer melden. 

1
yantraman

Ihre IP-Adresse ist nicht korrekt oder Sie arbeiten möglicherweise unter einer Firewall. Überprüfen Sie auch Ihre DNS-Einstellungen.

0
Ankit Zalani

Das Problem, das ich sehe, ist diese Zeile: 

smtp.Host = 172.22.0.20; 

smtp.Host erwartet einen String. Also, es sollte smtp.Host = "172.22.0.20"; sein. Bitte fügen Sie den Code unten hinzu, damit wir einen Fehler sehen können 

try 
{
    smtp.Send(mail); 
}
catch (Exception e) 
{
    Debug.WriteLine("Exception Message: " + e.Message);
}
0

Möglicherweise ist der umgekehrte Name obligatorisch. Haben Sie versucht, einen Namen für diese IP in der Host-Datei zu registrieren? (Oder natürlich in Ihrem DNS)

Versuchen Sie hinzuzufügen:

172.22.0.20 my-smtp.example
0
Leahkim