2010-07-13 39 views
8

Gereksinimlerden birinin bir ASP.NET uygulamasını yeniden yazmak olduğu bir proje üzerinde çalışıyorum. Eski ASP.NET uygulaması .NET Framework 1.1'e dayanıyordu. Yeni ASP.NET uygulaması .NET Framework 3.5 tabanlı.ASP.NET - SmtpClient - Uzak sunucuya bağlanılamıyor

Eski web uygulamasındaki işlevlerden biri e-posta gönderme özelliğiydi. Eski kod System.Web.Mail.SmtpMail sınıfını kullanırken yeni web uygulaması System.Net.Mail.SmtpClient sınıfını kullanıyor.

Bunu geliştirme sunucularında test ederken, her şey iyi çalıştı. Bununla birlikte, yazılımımızı test eden iki beta müşterimiz var ve her ikisi de yeni web uygulamasında e-posta gönderirken sorunla karşılaşıyor. aşağıdaki gibi

belirli istisnadır:

uzak sunucuya bağlanılamıyor

---> System.Net.Sockets.SocketException: Hedef makine etkin

olarak reddettiğinden bağlantı yapılamadı

Hem eski hem de yeni ASP.NET uygulaması aynı sunucuda (Windows Server 2003) bulunmaktadır. Her ikisi de aynı Exchange posta sunucusunu kullanıyor. Neden eski ASP.NET uygulamasının başarıyla e-posta gönderebiliyor, ancak yeni olanı yapamıyor?

Eski koda baktım ve herhangi bir kimlik doğrulama şekli kullanmadı, yalnızca gönderenin e-posta adresini, alıcının e-posta adresini, konuyu, gövdeyi ve sunucuyu belirtti ve iletiyi gönderdi. Ben de SmtpClient sınıfını kullandığımdaki tek farkla aynı şeyi yeni kodda yaptım.

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); 
mail.To.Add(messageTo); 
mail.From = new MailAddress(messageFrom); 
mail.Subject = messageSubject; 
mail.Body = messageBody; 

SmtpClient client = new SmtpClient(); 
client.Host = smtpServer; 
client.Send(mail); 
+0

Exchange günlüklerinde bağlantıyı reddeden bir şey var mı? – David

+0

Onlara erişemiyorum ve beta istemcinin bunlara da erişebileceğini sanmıyorum. Yine, bu bizim için iyi çalıştı. Oldukça basit bir işlevsellik. – Chris

+0

Sunucuyu nasıl belirlersiniz? SmptClient'in yapıcısında veya web.config dosyasında? bazı kod gönderebilir misin? – onof

cevap

5

System.Web.Mail.SmtpMail.SmtpServer"uzak sunucuya bağlantı kurulamıyor ---> System.Net.Sockets.SocketException: Hedef makine etkin olarak reddettiğinden bağlantı yapılmış olabilir" hata genellikle TCP portu anlamına gelir bağlanmaya çalışılırken herhangi bir servis dinlenmiyor, yani kapalı ve bir SMTP bağlantısına izin verilmeden tcp bağlantısı yapılamadı.

Şebeke yığında daha düşük bir seviyede başarısız olduğundan ve posta sunucunuz bağlantı girişimini bile görmeyeceğinden, değişim günlüğünüzde hiçbir şey gösterilmeyecektir.

.net1.1 kodunu da gönderebilir misiniz? En olası sorun, sunucunun standart olmayan bir bağlantı noktasını dinlemesi ve bu bağlantı noktasını yeni kodda belirtmemenizdir. Lütfen portu Port özelliğini kullanarak ayarlamanız gerektiğini unutmayın, sadece Host özelliğine ekleyemezsiniz, ör.

Yanlış:

client.Host = "mail.someco.com:10000"; 

Doğru:

client.Host = "mail.someco.com"; 
client.Port = 10000; 
0

Sen System.Web.Mail.SmtpMail ait SmtpServer özelliği eski kodu ayarlanır eminiz: Aşağıda

yeni ASP.NET uygulamasından bir kod parçacığı nedir? Bu özelliği ayarlamadan kullanmak mümkün oldu ve sonra yerel sunucunun SMTP hizmetini kullandı.

0

u SMTP konak yapılandırması için web.config dosyasını kontrol ettiniz mi? Yapılandırma bölümünü uygulamanıza kopyalamanız gerekir.

3

Virüsten koruma yazılımı kullanıyorsanız, antivirüs yüzünden olup olmadığını kontrol edin. McAffee postalarımı engellediğinde de aynı sorunla karşılaştım (bir güvenlik politikası var - Posta gönderen postaların solmasını engelle). Bu politikayı düzenleyin ve uygulamanızı istisna listesine ekleyin. Benim durumumda bu sorunu sıraladı. Lütfen sizin için çalışıp çalışmadığını kontrol edin.

İlgili konular