2013-10-07 38 views
20

Devralınan bir web sitesiyle ilgili bir e-posta sorununu düzeltmeye çalışıyorum ve bu koda (örneğin, yalnızca derlenmiş dosyalara) erişemiyorum. Bu sitenin farklı bir smtp sunucusuna sahip yeni bir web sunucusunda barındırılması gerekiyor.web.config dosyasında smtp ayarlarını yapılandırma

Kodun bitlerini decompiling edildikten sonra e-postaların kod snippet'inde olduğu gibi aşağıdaki yöntem kullanılarak gönderildiği ve smtp'nin smtpMail.SmtpServer = "localhost" olarak ayarlandığını görebiliyorum ancak yeni web sunucunun smtp sunucusudur "relay.tagadab.com" o localhost

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 

benim web.config bu bölümü eklemiş "relay.tagadab.com" olarak alınır ama bu bir fark yaratmıyor yüzden muhtemelen web.config'de bu yapılandırabilir

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

Hemen http://stackoverflow.com/questions/239262/can-i-configure-smtp- ([IIS yapılandırmak] SMTP localhost, relay.tagadab.com'a posta gönderdiği şekilde, i-it-it-to-a-remote-smtp-server-röleleri). – nunzabar

+0

@nunzabar bana bir örnek verebilir misin nasıl iletebiliriz – rumi

cevap

4

Postanızı uzak sunucuya iletmek için IIS'yi ayarlayın. Ayrıntılar, IIS sürümüne bağlı olarak büyük ölçüde değişir. IIS 7.5 için:

  1. Açık IIS Yöneticisi
  2. sunucu düğümü seçin gerekirse sunucunuza
  3. Bağlan; ASP.NET bölümünde sağda bir SMTP seçeneği görmelisiniz
  4. SMTP simgesini çift tıklatın.
  5. "SMTP sunucusuna e-posta sunun" seçeneğini seçip vb sunucu adı, kimlik bilgilerini girin
+0

Web.config'a bir bölüm eklemeyi denedim (lütfen soruma bakın) ama bu bir fark yaratmıyor. SMTP e-postasını açtığımda tam olarak aynı şeyi görüyorum – rumi

+0

Biraz daha yakından baktığımda, SmtpMail'in nasıl örneklendiğini belirlemelisiniz. Web.config yalnızca [varsayılan kurucu] (http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.smtpclient.aspx) kullanırsanız referans alınacaktır. – nunzabar

40

Web.config dosyası:

<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

C# tarafı nedir? Kod örneği peki? –

+3

Kod örneği: SmtpClient smtpClient = new SmtpClient(); smtpClient.Send (msgMail); –

+0

@Sanjay kumar hala çalışıyor mu? Gmail with smtp kullanmaya çalışırken şu hatayı alıyorum: "SMTP sunucusu güvenli bir bağlantı gerektirir veya istemci kimliği doğrulanmamış. Sunucu yanıtı: 5.5.1 Kimlik Doğrulama Gerekliydi.". – dpant

4

Yeterince temsilcisi yok ClintEastwood'a cevap vermek ve kabul edilen cevap Web.config dosyası için doğrudur. Bunu kod farkı için ekliyorum.

MailSettings'iniz Web.config üzerinde ayarlandığında, SmtpClient ve .Send'inizden başka bir şey yapmanız gerekmez. Başvurulan yere gerek duymadan bağlantıyı kendisi bulur. Buna adresinin C# değiştirecek:

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); 

Bu Kime:

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.Send(msgMail); 
İlgili konular