Problem senden von E-mail-Nachricht aus ASP.NET MVC-Anwendung auf GoDaddy gehostet
Ich habe ein Formular auf eine MVC-Webanwendung, die gehostet wird, über GoDaddy, können die Benutzer ausfüllen und senden an unser Büro. Ich bin derzeit am testen mit einem Gmail-Konto und ein GoDaddy E-Mail-Konto (mit meinem hosting-Raum). Mit der Gmail-code, die E-Mail senden Geldbuße von meinem localhost, aber wenn ich es veröffentlichen, um die web bekomme ich folgende Fehlermeldung:
Anforderung für die Berechtigung des Typs " System.Net.E-Mail.SmtpPermission,
System, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089' failed.
Hier ist der code (ausgeliehen von dieser Beitrag) ich bin mit Anmeldeinformationen wurden geändert und das Passwort gelöscht:
var fromAddress = new MailAddress("[email protected]", "FEA Drone");
var toAddress = new MailAddress("[email protected]", "ImproveIt Home Services");
const string fromPassword = "<removed>";
var subject = string.Format("Energy Evaluation Request for {0} {1}", model.FirstName, model.LastName);
var body = MailBody(results);
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
Habe ich dann versucht, auf meinem GoDaddy-E-Mail, dass ich für diese Besondere form, und einmal vor Ort, die es sendet. Allerdings, wenn diese hochgeladen wird es einfach mal aus, anstatt mir jede Art von nützlichen Informationen. Hier ist das code:
var fromAddress = new MailAddress("[email protected]", "FEA Drone");
var toAddress = new MailAddress("[email protected]", "ImproveIt! Home Services");
const string fromPassword = "<removed>";
var client = new SmtpClient
{
Host = "relay-hosting.secureserver.net",
Port = 25,
EnableSsl = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Timeout = 20000,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var msg = new MailMessage(fromAddress, toAddress)
{
Subject = string.Format("Energy Evaluation Request for {0} {1}", model.FirstName, model.LastName),
IsBodyHtml = false,
Body = MailBody(results)
})
{
client.Send(msg);
}
Ursprünglich hatte ich smtpout.secureserver.net
für meine GoDaddy Hosten, aber ich fand heraus, von dieser Artikel, dass ich brauchte, um es zu ändern relay-hosting.secureserver.net
. Mit der aktualisierten host-Informationen, die das Skript ausgeführt wird, aber die E-mail-Nachricht nicht machen, es die Ziel-E-Mail-Posteingang oder spam-box).
Bearbeiten
Mithilfe der Maxim-code, es scheint, ich habe bekommen eine "funktionierende" version vorhanden. Die E-Mail nicht sofort angezeigt wird, in der Ziel-Posteingang, aber nicht so nach etwa 15 Minuten. Schade, es scheint, dass GoDaddy ist ein Riesen-PITA, wenn es um die programmatische E-Mail.
Hier ist was ich habe:
var emailmessage = new System.Web.Mail.MailMessage()
{
Subject = subject,
Body = body,
From = fromAddress.Address,
To = toAddress.Address,
BodyFormat = MailFormat.Text,
Priority = System.Web.Mail.MailPriority.High
};
SmtpMail.SmtpServer = "relay-hosting.secureserver.net";
SmtpMail.Send(emailmessage);
Nochmals vielen Dank für die Hilfe, ich hoffe, dass ich herausfinden kann, wie man GoDaddy besser zusammenarbeiten. Wenn ich kann, werde ich wieder mit updates.
InformationsquelleAutor Anders | 2010-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich einige ASP.NET MVC-Anwendungen gehostet werden, auf GoDaddy auch, dass senden E-Mail. Leider, das GoDaddy-E-Mail-policy ist etwas schlecht:
Zunächst müssen Sie
relay-hosting.secureserver.net
- Sie können nicht mit externen SMTP-Server, wie Gmail.Zweitens,
relay-hosting
ist in der Regel sehr, sehr langsam. In meiner Erfahrung, einige E-Mails, um zu nehmen 90 Minuten versandt werden, während andere einfach nicht geliefert, auf allen.Habe ich per E-Mail hin und her mit dem GoDaddy-support viele Male über dieses Problem, aber Sie haben noch fix die riesige Wartezeiten/Probleme oder externen SMTP-Server.
Als für, warum Ihre Nachrichten nicht liefern, sollten Sie versuchen, das Skript mehrmals, um sicherzustellen, dass keine Anomalien auftreten. Wenn es immer noch nicht funktioniert, hier ist meine E-mail-code:
Das einzige, was anders ist (soweit ich bemerkt habe) ist, dass Sie versuchen, Anmeldeinformationen für den SMTP-server. Eigentlich
relay-hosting.secureserver.net
erfordert keine Anmeldeinformationen löschen, aber es werden nur E-Mails senden, wenn es erkennt, dass die Nachricht gesendet wird, eine GoDaddy-server. Dies könnte dein problem lösen!Gut, ich habe Ihren code ein und es tut das gleiche wie früher: Berichte der E-Mail gesendet, aber keine E-Mail hat sich in der Ziel-Posteingang. Gibt es ein log auf meinem GoDaddy-Konto irgendwo auf die ich zugreifen kann, um zu sehen, ob etwas in Unordnung, bis auf das Ende? Obwohl, dass 90-Minuten-relais-Verzögerung, die Sie erwähnt, könnte die Ursache sein jetzt.
Werden Sie sicher, dass Sie Ihre " Von " - E-Mail hat Ihre Domäne. Zum Beispiel meine domain ist "bobcravens.com'. GoDaddy E-Mail-server wird nur relais E-Mails von '[email protected]'.
Ja, es ist. Die E-Mail kam gerade über den account so gab es etwa 10-15 Minuten zu verzögern. Ich werde weiter testen, obwohl, um sicherzustellen, dass es funktioniert "richtig".
Ich Frage mich, wenn Sie Gmail die MX-Datensätze zu GoDaddy-Konto über diese url: godaddy.com/gdshop/google/gmail_login.asp, wenn der Versand der mail über Google Mail funktionieren würde. Wer weiß, wie lange die MX-update dauern würde, zu verbreiten, obwohl.
InformationsquelleAutor Maxim Zaslavsky
Erhielt ich diese Fehlermeldung: "Mailbox-name nicht erlaubt. Die server-Antwort war: sorry, relaying denied von Ihrem Standort aus". Ich war mit diesem zu verbinden:
Sich bei der überprüfung diese Antwort: https://stackoverflow.com/a/4594338/1026459 ich kam zu der Erkenntnis, dass die
Host
anders sein sollte wenn mit credientials. Ich änderte mein code:Und nicht nur die E-Mails richtig zu senden, aber Sie kamen in Sekunden.
InformationsquelleAutor Travis J
Nicht erinnern, wo ich diesen code, aber es funktioniert für mich auf meinem GoDaddy-server zum senden von E-Mails über ein google-Konto:
Update: Hier ist, wie ich bin, mit diesem code:
Kann dies einen Unterschied machen...ich habe ein Google Apps-Konto (kostenlos). Also, ich bin in der Lage, die " von " - Adresse der gleichen Domäne wie mein server.
So wie es aussieht die IsSsl ist nicht vorhanden, der port hat sich geändert, und es sind zusätzliche Felder. Ist die IEmailService die Klasse erbt von etwas bestimmten, der Ihr schrieb?
Die IEmailService Schnittstelle nur definiert, die zwei 'Senden' - Methoden. Sonst nichts. Sie können entweder erstellen Sie die Oberfläche oder entfernen Sie die Schnittstelle aus der definition der Klasse.
Sieht auch wie diese verwendet das veraltet
System.Web.Mail
eher als die neuerenSystem.Net.Mail
.Ich habe bemerkt, dass Sie sich vor einer Weile. Da aber der code funktioniert für mich, ich habe nicht aktualisiert.
InformationsquelleAutor rcravens
Funktioniert es einwandfrei, meine Schritte
Überprüfen Sie zunächst Ihre E-Mail-plan von Godaddy Webmail
ein. Melden Sie sich bei Ihrem Account Manager.
b. Klicken Sie Auf Arbeitsbereich E-Mail.
c. Neben dem Konto, das Sie verwenden möchten, klicken Sie auf Verwalten.
d. Für das Konto mit der E-Mail-Adresse, die Sie verwenden möchten, klicken Sie auf (Adressen Anzeigen).
e. Klicken Sie auf die E-Mail-Adresse, die Sie verwenden möchten, und gehen Sie dann zu der Registerkarte "Erweitert".es zeigt die E-Mail-Plan.
[1]: http://i.stack.imgur.com/AJAoB.png
Basierend auf E-Plan, wählen Sie den Host-Namen. Beispiel: Wenn ein E-Plan AP(2) mittels smtp.Host="smtpout.asia.secureserver.net"oder wenn E-Mail-plan der EU(2)mittels smtp.Host="smtpout.europe.secureserver.net" oder wenn E-Plan UNS heißt smtp.Host="smtpout.secureserver.net".
Bestätigen Ihre Website ist mit SSL oder ohne SSL. Weil Sie wählen die portNo basierend auf SSLs
Beispiel : wenn Ohne smtp-SSL bedeutet.EnableSsl = false gehen Portnummer ist 25, 80, 3535.
Im Falle dass, Wenn Mit SSL ist die Abkürzung für mtp.EnableSsl = true gehen Portnummer ist 465.
All dies sind die wichtigsten Punkte zu bleiben, im Geist zu arbeiten in Godaddy E-mail-Konfiguration.
Unten erwähnen Sie den code,
InformationsquelleAutor M.Dinesh Babu