2013-10-07 14 views
20

Próbuję naprawić problem z adresem e-mail z dziedziczoną witryną internetową i nie mam dostępu do kodu (tj. Tylko skompilowane pliki). Ta strona musi być hostowana na nowym serwerze sieciowym posiadającym inny serwer SMTP.konfiguracja ustawień smtp w web.config

Po dekompilacji bitów kodu widzę wiadomości e-mail wysyłane za pomocą metody podobnej do poniższej w fragmencie kodu, a smtp jest ustawiony jako smtpMail.SmtpServer = "localhost", ale mój nowy serwer smtp serwera WWW to "relay.tagadab.com" jak możemy ewentualnie skonfigurować to tak, że w web.config localhost jest traktowana jako „relay.tagadab.com”

Imports Microsoft.VisualBasic, System.Web.Mail 

Shared Sub SendMail(ByVal ToAdd, ByVal FromAdd, ByVal Message, ByVal Subject) 

    Dim msgMail As New MailMessage() 

    msgMail.To = ToAdd 
    msgMail.From = FromAdd 
    msgMail.Subject = Subject 
    msgMail.Headers.Add("X-Mailer", "ASP.NET") 

    msgMail.BodyFormat = MailFormat.Text 
    msgMail.Body = Message 
    'SmtpMail.SmtpServer = "mail.the-radiator.com" 
    SmtpMail.SmtpServer = "localhost" 
    SmtpMail.Send(msgMail) 

End Sub 

dodałam ten rozdział w moim web.config, ale to nie robi różnicy

<system.net> 
    <mailSettings> 
     <smtp> 
      <network host="relay.tagadab.com" port="25" /> 
     </smtp> 
    </mailSettings> 
</system.net> 
+1

Wystarczy [skonfigurować IIS] (http://stackoverflow.com/questions/239262/can-i-configure-smtp- in-iis-so-it-itlays-to-a-remote-smtp-server), aby lokalny serwer SMTP przekazywał pocztę na relay.tagadab.com. – nunzabar

+0

@nunzabar możesz podać mi przykład, jak możemy go przesłać – rumi

Odpowiedz

4

Ustaw usługę IIS, aby przekazywać pocztę na serwer zdalny. Szczegóły różnią się znacznie w zależności od wersji IIS. Dla IIS 7.5:

  1. Otwórz Menedżer usług IIS
  2. połączyć się z serwerem, jeśli potrzebne
  3. Wybierz węzeł serwera; powinieneś zobaczyć opcję SMTP po prawej stronie sekcji ASP.NET
  4. Kliknij dwukrotnie ikonę SMTP.
  5. wybrać opcję "Dostarcz wiadomość do serwera SMTP" i podaj nazwę serwera, poświadczeń itp
+0

Próbowałem już dodać sekcję w web.config (zobacz moje pytanie), ale to nie robi różnicy. Widzę dokładnie to samo w IIS, kiedy otwieram e-mail SMTP – rumi

+0

Patrząc nieco bliżej, musisz określić, w jaki sposób tworzone jest 'SmtpMail'. Składnik Web.config będzie odwoływał się tylko wtedy, gdy użyjesz [konstruktora domyślnego] (http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.smtpclient.aspx). – nunzabar

40

pliku web.config:

<configuration> 
<system.net> 
     <mailSettings> 
      <smtp from="[email protected]"> 
       <network host="smtp.gmail.com" 
       port="587" 
       userName="[email protected]" 
       password="yourpassword" 
       enableSsl="true"/> 
      </smtp> 
     </mailSettings> 
</system.net> 
</configuration> 
+1

Co ze stroną C#? Przykład kodu pls? –

+3

Przykładowy kod: SmtpClient smtpClient = new SmtpClient(); smtpClient.Send (msgMail); –

+0

@Sanjay Kumar nadal działa? Otrzymuję następujący błąd podczas próby użycia Gmaila przez smtp: "Serwer SMTP wymaga bezpiecznego połączenia lub klient nie został uwierzytelniony. Odpowiedź serwera: 5.5.1 Wymagane uwierzytelnienie.". – dpant

4

nie mam wystarczająco dużo rep aby odpowiedzieć na ClintEastwood, a zaakceptowana odpowiedź jest poprawna dla pliku Web.config. Dodanie tego dla różnicy kodów.

Gdy ustawienia mailSettings są ustawione na Web.config, nie musisz robić nic innego, jak tylko nowości w SmtpClient i .Send. Sam odnajduje połączenie bez potrzeby odwoływania się. Można by zmienić C# z tego:

SmtpClient smtpClient = new SmtpClient("smtp.sender.you", Convert.ToInt32(587)); 
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username", "password"); 
smtpClient.Credentials = credentials; 
smtpClient.Send(msgMail); 

do tego:

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.Send(msgMail); 
Powiązane problemy