Oprócz innych informacji, jeśli chcesz zapewnić, że twoje e-maile są wysyłane do folderu względem katalogu głównego strony - przydatne przy testowaniu na serwerach kompilacji, gdzie nie znasz ścieżek - możesz dodaj szybkie sprawdzenie w mailu kodu wysyłającej:
SmtpClient client = new SmtpClient();
...
// Add "~" support for pickupdirectories.
if (client.DeliveryMethod == SmtpDeliveryMethod.SpecifiedPickupDirectory && client.PickupDirectoryLocation.StartsWith("~"))
{
string root = AppDomain.CurrentDomain.BaseDirectory;
string pickupRoot = client.PickupDirectoryLocation.Replace("~/", root);
pickupRoot = pickupRoot.Replace("/",@"\");
client.PickupDirectoryLocation = pickupRoot;
}
a twoje badania będą wyglądać mniej więcej tak (upewnij się, że używasz App_Data tak IIS może napisać do folderu):
// Arrange - get SitePath from AppDomain.Current.BaseDirectory + ..\
string pickupPath = Path.Combine(SitePath, "App_Data", "TempSmtp");
if (!Directory.Exists(pickupPath))
Directory.CreateDirectory(pickupPath);
foreach (string file in Directory.GetFiles(pickupPath, "*.eml"))
{
File.Delete(file);
}
// Act (send some emails)
// Assert
Assert.That(Directory.GetFiles(pickupPath, "*.eml").Count(), Is.EqualTo(1));
"zamiast wysyłać." – Avram