Ben SMTP sunucusu 127.0.0.1 hayranlarıyla hatası kullanıyorum alınamıyor ASP.NET sayfası, hata oluşmadı. Plz yardımı.alıyorum IIS toplama dizini
cevap
Ne yazık ki, IIS/SMTP alma dizininin konumunu belirlemeye çalışırken herhangi bir türünde sorun oluştuğunda bu özel durum ortaya çıkar. Yaygın bir neden, IIS SMTP hizmetinde eksik.
// C#
var client = new SmtpClient();
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
client.PickupDirectoryLocation = ...;
client.Send(...);
Veya bunun yerine ASP.NET en Web.config, bu set: Eğer System.Net.Mail.SmtpClient kullanarak posta gönderiyorsanız
, elle toplama dizini ayarlamayı deneyin
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory
pickupDirectoryLocation="..." />
<network defaultCredentials="false" />
</smtp>
</mailSettings>
</system.net>
</configuration>
Alternatif olarak, SmtpDeliveryMethod.Network
yöntemini kullanın ve SMTP sunucunuza Host
ve Port
özelliklerini gönderin.
fazla bilgi: http://forums.iis.net/p/1149338/1869548.aspx
web-app olarak çalışan hesap, bu hata atılabilmektedir gerekli düğümlere erişimi yok yani eğer toplama dizini, II6 Metatabanınızı saklanır (vardı bu kendim). Metatabanı izinleri dosya izinleri ayrı, bu yüzden Metatabanı explorer ile keşfetmek:
http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&displaylang=en (IIS kaynak kitinin onun parçası)
Bu düğümler okumak izni web-app kullanıcıya verdik gerekir: \ LM \ SmtpSvc \ LM \ SmtpSvc
Bu çalışmasını sağlamak için dosya izinlerini düzeltmem gerektiğini de belirtmeliyim. – Peter
Bu harika ve şimdi sorunu görebiliyorum/anlayabiliyorum, ancak Windows 2008 kutumda Uygulama Havuzu Kimliği kullanıyorum ve bu kullanıcı hesabının izinlerini ayarlamak için GUI'yi kullanamıyorum. Bunu yapmak için daha önce komut satırından dosya izinleri ayarladım. Bu izinler için aynı şeyi yapmanın mümkün olup olmadığını biliyor musunuz? – ProNotion
Ben XP üzerinde iyi çalıştı koduyla Windows 7 bu aynı hatayı başlamıştı 1 \. Çok fazla deneme ve hatadan sonra. Postaları bir alma dizinine depolamak için IIS'yi kuruyorum. Ama yine de hatam oldu. Benim kod
çizgiyi dışarı yorumladı:
client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
Bu kod satırını çıkarmak işe yaradı, neden olmasın. Umarım bu sizin için de çalışır çünkü bu sorun, gerçek zamanlı bir sorun değildir.
Dizindeki tüm izinleri değiştirmek zorunda kalmamıştım. Metatabanını değiştirmek zorunda DEĞİLDİM. Web.config'i değiştirmem gerekmedi (ki bunu yapmak istemedim çünkü üretimde değil, yerel makinemde geliştirme yaparken sadece bir dizinin içine yerleştirilmiş e-postaları istiyorum.) korumak için iki farklı web.config dosyasını istiyorum).
Sadece bunun benim için çalışılan şey olduğunu söylemek için bağırıyor. Bir VS2004 projesini VS2010'a güncelledim ve bu satır kaldırılıncaya kadar gönderimi reddeden e-posta gönderdim. – spamguy
Ayrıca unittest proje için bunu belirtebilirsiniz:
public enum TestContextKeys { EmailPickupDirectory, ... };
[TestClass]
public class AssemblyInitializer
{
[AssemblyInitialize]
public static void Init(TestContext testContext)
{
string configPath = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
XDocument xmlConfig = XDocument.Load(configPath);
var emailPickupDirectory = xmlConfig.Element("configuration")
.Element("system.net")
.Element("mailSettings")
.Element("smtp")
.Element("specifiedPickupDirectory")
.Attribute("pickupDirectoryLocation")
.Value;
testContext.Properties[TestContextKeys.EmailPickupDirectory.ToString()] = emailPickupDirectory;
}
Ve test kodu:
[TestMethod]
public void TestEmailRegistration()
{
MyApp app = new MyApp();
app.RegisterUser("Johny Cash",...);
string emailPickupDirectory = (string)_testContext.Properties[TestContextKeys.EmailPickupDirectory.ToString()];
string[] allEmails = Directory.GetFiles(emailPickupDirectory);
string[] recentEmails = allEmails.Where(e => new FileInfo(e).CreationTime.AddMinutes(1) > DateTime.Now).ToArray();
//check that the registration email was sent
foreach (var email in recentEmails)
{
string content = File.ReadAllText(email);
if (content.Contains("Johny Cash") && content.Contains("successful") && content.Contains("registration"))
{
File.Delete(email);
return;//OK found
}
}
Assert.Fail("Registratoin email has not been sent to Johny Cash");
}
[TestMethod]
public void TestEmailPickupDirectoryConfiguration()
{
string emailPickupDirectory = (string)_testContext.Properties[TestContextKeys.EmailPickupDirectory.ToString()];
MailAddress mailFrom = new MailAddress("[email protected]", "Tester");
MailAddress mailTo = new MailAddress("[email protected]", "Tester2");
string subject = "Test Message TestEmailPickupDirectory";
using (SmtpClient sc = new SmtpClient())
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add(mailTo);
mail.Subject = subject;
mail.From = mailFrom;
mail.IsBodyHtml = true;
mail.BodyEncoding = System.Text.Encoding.GetEncoding("ISO-8859-9");
mail.Body = "<html><body>";
mail.Body += "TestEmailPickupDirectory";
mail.Body += "</body></html>";
sc.Send(mail);
}
string[] allEmails = Directory.GetFiles(emailPickupDirectory);
string[] recentEmails = allEmails.Where(e => new FileInfo(e).CreationTime.AddMinutes(1) > DateTime.Now).ToArray();
foreach (var email in recentEmails)
{
string content = File.ReadAllText(email);
if (content.Contains(mailFrom.Address) && content.Contains(mailTo.Address) && content.Contains(subject))
{
File.Delete(email);
return;//OK found
}
}
Assert.Fail("EmailPickupDirectory configuration may be wrong.");
}
değil, varsa unittest projede app.config dosyasını oluşturma veya bu satırları birleştirme mevcut app.config ile.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="d:\temp\Emails\" />
</smtp>
</mailSettings>
</system.net>
</configuration>
- 1. Bir IIS sanal dizini oluşturmak için WiX kullanma
- 2. IIS
- 3. IIS.
- 4. Toplama()
- 5. IIS
- 6. IIS
- 7. IIS
- 8. IIS
- 9. IIS
- 10. Adminscripts klasörü, IIS 7
- 11. lftp, IIS
- 12. alıyorum
- 13. IIS Express 7.5 VS 2010 bir web projesi hata ayıklamak çalışırken Ultimate aşağıdaki hatayı alıyorum IIS Express kullanılarak
- 14. Python numpy toplama hatası
- 15. IIS-NetFXExtensibility
- 16. Toplama işlevleri
- 17. HTTP Hatası 401.1 - Yerel IIS
- 18. IIS ile www neden 404 in IIS
- 19. Form Toplama Hatası
- 20. IIS 7.5
- 21. IIS Express
- 22. IIS ölçeklenebilirliği
- 23. Otomatik IIS
- 24. PowerShell Komut Websiteleri IIS
- 25. Komut satırından IIS express
- 26. ViewFlowLayout Tuhaf hata alıyorum
- 27. bir toplama işlevi veya Madde
- 28. IIS 6'da çalışan ASP.NET MVC 4 dizinindeki dizin listesi reddedildi Sanal Dizini
- 29. C# Günlük dosyasında WCF IIS dağıtım/sanal dizini çalışma zamanında nasıl değiştirilir?
- 30. Javascript üzerinde çalışmıyor IIS
PickupDirectoryLocation hakkında daha fazla bilgi alabilir misiniz? PickupDirectoryLocation'ı kullanmak için hangi değeri vermemiz gerekiyor? – ManirajSS
Alım SatışıYedekleme, IIS SMTP hizmeti (veya uyumlu üçüncü taraf hizmeti) tarafından bir alma dizini olarak kullanılan bir dizine giden bir yola ayarlanmalıdır - kaydedilen tüm e-postalar gönderilir. Örneğin, "C: \ Inetpub \ mailroot \ Pickup" olabilir. –