Mając nadzieję, że ktoś będzie w stanie pomóc z tym, rozejrzałem się i nie mogę znaleźć nigdzie odpowiedzi..NET 4.5 Klient SMTP Problem z drażnieniem podczas dostarczania do katalogu Pickup
Tworzę wiadomość pocztową, która będzie dostarczana do określonego katalogu pobierania, kod ten był wielokrotnie używany w przeszłości bez problemów. Teraz jednak, gdy sprawdzam wynikowy plik, a dokładniej adres URL w pliku eml, widzę, że w środku znajduje się podwójne .
. Z tego, co czytałem, rozumiem, że jest to część protokołu SMTP, która polega na dodawaniu kropek, jeśli pierwszy znak w linii zaczyna się od .
. Plik ten zostanie później odebrany przez inną usługę, która ostatecznie przeprowadzi wysyłanie wiadomości e-mail.
Byłem w stanie zawęzić go do dokładnej linii, gdy zadzwonię pod numer client.Send()
. Jeśli sprawdzam treść wiadomości przed wysłaniem, adres URL jest poprawnie uformowany. Po sprawdzeniu treści wiadomości po jej wywołaniu w adresie URL pojawia się ..
.
Moje pytanie lub pytania, jak sądzę, są następujące:
- Czy ktoś jeszcze natknąć się na problem z nadzieniem dot podczas korzystania
SmtpDeliveryMethod.SpecifiedPickupDirectory
? - Czyja praca polega na prawidłowym obsługiwaniu tego? .NET SMTP lub usługa dodatkowa, która odbiera tę wiadomość w późniejszym terminie i wysyła ją do ostatecznego miejsca docelowego?
- Wszelkie porady, jak rozwiązać ten problem?
Próbowałem wcześniej approach described here, ale nie udało się z wieloma wyjątkami.
Poszukuję głównie sposobu na zapisanie tego pliku eml do lokalizacji na dysku, która może być później odebrana z powrotem i wysłana, moja wiedza na temat języka C# jest nadal dość ograniczona, więc może być coś prostego. patrząc, więc wszelkie rady lub wskazówki byłyby niezwykle cenne!
Utworzyłem małą próbkę kodu, aby spróbować odtworzyć problem, nie jest to dokładna treść, której używam, ale pokazuje, że po wysłaniu za pośrednictwem metody client.Send() istnieją 2 ".." na początku napisu.
using (var client = new SmtpClient())
{
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
client.PickupDirectoryLocation = @"C:\temp";
var message = new MailMessage();
message.To.Add(new MailAddress("[email protected]"));
message.From = new MailAddress("[email protected]");
message.Subject = "Smtp Dot Stuffing Test";
message.Body = ".A.B.C..... .0.1.2.3.4.5.6.7.8.9";
client.Send(message);
}
Czy możesz pokazać nam jakiś odpowiedni kod? – Dawnkeeper
@Dawnacker Właśnie dodałem mały fragment kodu przykładowego, aby zademonstrować problem –