Immer eine ASP-Fehlermeldung: Mailbox nicht verfügbar. Die Serverantwort war: Zugriff verweigert - Ungültiger HELO-name (Siehe RFC2821 4.1.1.1)
Ich eine Fehlermeldung, und ich weiß, dass meine Anmeldedaten korrekt sind. Irgendwelche Ideen? Diese ist auf einem Windows-Server, aber ich bin nutzen wollen, die Hostgator SMTP-Einstellungen für mein E-Mail. Dies ist, was passiert, wenn ich Ihnen ein einfaches Kontaktformular.
FEHLER:
Postfach nicht verfügbar. Die Serverantwort war: Zugriff verweigert - Ungültiger HELO-name (Siehe RFC2821 4.1.1.1)
Beschreibung: Eine nicht behandelte Ausnahme ist aufgetreten während der Ausführung der aktuellen Webanforderung. Bitte überprüfen Sie die Stapelüberwachung für weitere Informationen über den Fehler und wo Sie Ihren Ursprung in den code.
Exception Details: System.Net.E-Mail.SmtpException: Postfach nicht verfügbar. Die Serverantwort war: Zugriff verweigert - Ungültiger HELO-name (Siehe RFC2821 4.1.1.1)
Quellfehler Zeile 61:
Line 59:
Line 60: SmtpClient smtp = new SmtpClient(SMTPServer, SMTPPort);
Line 61: smtp.Credentials = new NetworkCredential(SMTPUserId, SMTPPassword);
Line 62: smtp.Send(mail);
Line 63: }
Quelle: File: \ \ Websites\Client\Berichte\ContactUs.aspx.cs Zeile: 61
=========================================================================
Mein Quellcode:
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
string name = txtFirstName.Text + " " + txtLastName.Text;
string clientID = Session["CustomerID"].ToString();
string message = txtMessage.Text;
string email = txtEmail.Text;
string company = txtCompany.Text;
string phone = txtPhone.Text;
SMTPMailHelper.SendMail(email, "[email protected]", "Contact from Client: " + clientID + ": " + name + " " + company, message);
}
LIEß ICH EINIGE SKRIPT HAST, EGAL, WIE BEDINGTE ANWEISUNGEN.
UND DAS IST DER REST:
public class SMTPMailHelper
{
const string SMTPServer = "mail.mydomain.com";
const string SMTPUserId = "[email protected]";
const string SMTPPassword = "MyPasswordHidden";
const int SMTPPort = 25;
public static void SendMail(string sendFrom, string sendTo, string subject, string body)
{
MailAddress fromAddress = new MailAddress(sendFrom);
MailAddress toAddress = new MailAddress(sendTo);
MailMessage mail = new MailMessage();
mail.From = fromAddress;
mail.To.Add(toAddress);
mail.Subject = subject;
if (body.ToLower().Contains("<html>"))
{
mail.IsBodyHtml = true;
}
mail.Body = body;
SmtpClient smtp = new SmtpClient(SMTPServer, SMTPPort);
smtp.Credentials = new NetworkCredential(SMTPUserId, SMTPPassword);
smtp.Send(mail);
}
}
- Mögliche Duplikate stackoverflow.com/questions/10828555/...
- Nee, in die andere Frage, bekommt der user wieder ein "Failed to deliver" E-Mail-Nachricht. In dieser Frage hat, bekommt er eine exception in der Methode Send ().
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem, das Sie haben ist, dass die SmtpClient ist die Erteilung einer
HELO
oderEHLO
Befehl mit dem Hostnamen/Domäne string, den Ihr server SMTP-Ablehnung.Ich kann natürlich nicht wissen, die innere Logik von Microsoft SmtpClient Umsetzung, aber ich vermute, dass Sie wahrscheinlich hinter einem NAT-Router, was bedeutet, dass die SmtpClient nicht lösen können die Welt sichtbar voll qualifizierten domain-Namen Ihres Rechners. Es können nur die lösen den FQDN der Maschine auf Ihre "interne Netzwerk" (und realistisch gesehen, wird es wahrscheinlich nicht selbst beheben, es zu einer tatsächlichen FQDN, ist es wohl, sich für den internen Netzwerk-IP-Adresse).
So... SmtpClient ist wohl das senden so etwas wie
EHLO [192.168.1.100]
(oder was auch immer Ihre lokale IP ist) und der server ist zu verwerfen, denn das ist nicht die IP-Adresse, es ist empfangen von Paketen aus.Was Sie tun müssen, ist finden Sie Ihre externe IP-Adresse durch den Besuch einer Website wie http://www.whatismyip.com/ oder über den Hostnamen erkannt, die von einer Website wie http://www.displaymyhostname.com/.
Um zu verdeutlichen, was ich spreche, hier ein kleines demo-Programm:
Unabhängig von IP-Adresse, die es druckt, ist wahrscheinlich die, die SmtpClient in seiner
HELO
/EHLO
Befehl.Die schlechte Nachricht ist, dass es gibt keine Möglichkeit, umgehen dieses problem mit dem System.Net.E-Mail.SmtpClient.
Die gute Nachricht ist, dass ich gerettet 15% auf meine KFZ-Versicherung... äh, ich meine, die ich geschrieben habe meine eigene E-Mail-Bibliotheken genannt MimeKit und MailKit, dass kann dieses problem zu umgehen.
Einige weitere gute Nachricht ist, dass können Sie leicht wandeln Sie Ihre System.Net.E-Mail.MailMessage-Objekt in ein MimeKit.MimeMessage-Objekt (obwohl, natürlich, es wäre besser zu wechseln voll und ganz MimeKit und MailKit).
Hier ist, was Ihr neu geschrieben SMTPMailHelper Klasse Aussehen würde mit MimeKit und MailKit:
Der wichtige Teil ist die Zeichenfolge, die Sie festlegen LocalDomain Eigenschaft der SmtpClient zu.