senden von E-Mails von localhost und online asp.net
Ich weiß, wie zum senden von E-Mails über smtp, die im code in c#
wenn ich einen gmail-smtp funktioniert es in localhost
aber wenn ich hochladen und stellen Sie es online, dann gmail (smtp.gmail.com -) Einstellungen nicht funktionieren. ich habe um die Einstellungen zu ändern jedes mal auf (relay-hosting.secureserver.net) bei godaddy nach dem hochladen
Nun meine Frage! Gibt es eine Möglichkeit kann ich herausfinden, ob ich auf localhost im code oder online ändern Sie dann die Einstellungen dynamisch im der Speicherung meiner Einstellungen in der db
mein Arbeits-code ist
mm.LoadByPrimaryKey(4);//get body , subject etc from db
mc.LoadByPrimaryKey(1);//get settings from db (host, from , port etc)
var maTo = new MailAddress(strEmail, userName);
var mMailMessage = new MailMessage
{
Subject = mm.Subject,
Body = strBody,
IsBodyHtml = true,
Priority = MailPriority.High,
From =new MailAddress(mc.AdminEmailAddress),
DeliveryNotificationOptions= DeliveryNotificationOptions.OnFailure
};
mMailMessage.To.Add(maTo);
var mSmtpClient = new SmtpClient
{
UseDefaultCredentials = false,
Host = mc.Host,
Credentials = CredentialCache.DefaultNetworkCredentials,
DeliveryMethod = SmtpDeliveryMethod.Network};
mSmtpClient.Send(mMailMessage);
möchte ich nicht ändern, meine Einstellungen jedes mal, ob im online-oder Entwicklungsländern in die localhost-Umgebung
ich will diese Strömung und wie weiß ich meine Bewerbung online oder localhost im code hinter
if(myconnection ==localhost) then fetch gmail credentials
else if (myconnection==online) then fetch godaddys credentials
- Beste option: setzen Sie die Einstellungen in separaten config-Datei.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ref: Bestimmen Sie, ob ASP.NET Anwendung lokal ausgeführt wird und Wie sicher ist die Anfrage.IsLocal?
verwenden:
Beispiel-code-snippet, um E-mail senden über gmail ist:
wenn diese Einstellung überein, auf configuration, dann sind Sie definitiv in der Lage, zum senden von Nachrichten über gmail.
Überprüfen Sie Ihre in diesem Abschnitt der Einstellungen.
Bearbeiten
diesen links Folgen, diese sind nicht die Ursache des Problems, sondern Anleitung zum lösen dieses auf Ihrem lokalen Rechner:
Ich kann E-Mails empfangen, aber nicht senden von einem Konto, das ich einrichten in windows live mail
senden von E-Mails mit gmail-Konto auf dem lokalen Computer
Weiterer Aspekt ist, dass Sie können überprüfen, dass die lokale Maschine die ip oder den Namen des Computers, um herauszufinden, entweder website auf einen entfernten server oder eine eigene Maschine, mit der HttpRequest-Klasse HttpRequest.UserHostAddress Eigenschaft.
Wenn die Ip entspricht der ip-request-Objekt gibt die ip-Adresse Ihres Maschine-Adresse.
Ref:
Anfrage.UserHostName
Wie man die IP-Adresse einer Maschine, der in C#
remote-Ip-Adresse oder Computer-name
Nicht warum Sie das Internet nutzen.Config?
Wenn Sie nur wollen, um zu überprüfen, ob Sie läuft auf localhost oder nicht, dann Sie tun können diese Art der Sache:
Die nette Sache über dieses ist, dass Sie brauchen nicht zu prüfen, die tatsächliche URL, es sei denn, Sie wollen (Sie müssen also nicht jede änderung an den config-Dateien oder nichts).
Ich habe diesen "ärger" wie es war und es funktioniert gut.
Offensichtlich die Frage nach Speicherung von Google Mail-Anmeldeinformationen in Ihrem live-code ist ein separates Problem und war nicht Teil Ihrer Frage. Eigentlich denke ich, Sie sagte, Sie speichern diese in der Datenbank, die ist in Ordnung.
EDIT:, Wenn ich habe diese verwendet, überprüfe ich, dass die
Request.UrlReferrer.DnsSafeHost
ist meine eigentliche live-Domäne zu verhindern, dass ein einfacher Angriff, wo jemand Beiträge auf meiner Seite aus einer anderen Quelle.Wenn Sie NUR wollen, um zu überprüfen, wo Sie ausgeführt werden und egal wie Sie es bekommen (nicht unbedingt eine gute Idee ist), können Sie
Request.Url.DnsSafeHost
.HttpRequest.IsLocal
nicht tun kann.