Próbowałem osiągnąć to poprzez wywołanie MailMessage.Headers.Set, w VB.net. Patrz poniżej:Jak mogę wysłać wiadomość e-mail z datą przeszłą z .NET?
Dim objMail As MailMessage
Dim objSMTPClient As SmtpClient
objMail = New MailMessage()
objSMTPClient = New SmtpClient()
objMail.From = New MailAddress(MY_EMAIL_ADDRESS)
objMail.To.Add(New MailAddress(TEST_EMAIL_ADDRESS))
objMail.Headers.Set("Date", "09 Jan 1999 17:23:42 -0400")'date in the past'
objMail.Subject = "The Subject"
objMail.Body = "The Body"
objSMTPClient.Port = 25
objSMTPClient.Host = HOST_IP
objSMTPClient.Credentials = New System.Net.NetworkCredential(MY_EMAIL_ADDRESS, txtPassword.Text)
objSMTPClient.Send(objMail)
I potwierdził, że wezwanie objMail.Headers.Set rzeczywiście działa - jeśli dostanę wartość potem został pomyślnie zmieniony. Mój problem polega na tym, że kiedy otrzymuję e-mail w Outlook'u TEST_EMAIL_ADDRESS, data jest wszędzie w roku 2009, a nie w roku 1999. Zaraz w interfejsie programu Outlook, a także w nagłówku, do którego dostęp uzyskuję za pomocą elementu "Opcje" w kontekście menu dla tego e-maila.
Co robię źle? Mam przeczucie, że przegapiłem coś oczywistego ...
Aby było jasne: Jestem nie robiąc to złośliwie. Pracuję nad komponentem integracji e-mail, który wykorzystuje zarówno identyfikatory UID, jak i datę "Last przetworzone", aby znaleźć pierwszą nową wiadomość e-mail do integracji. Chcę przetestować przypadki, w których wiele wiadomości e-mail ma dokładnie tę samą datę/czas - ponieważ moduł integracji poczty e-mail powinien obsługiwać te sytuacje bezbłędnie. Gdybym mógł po prostu sfałszować datę w ten sposób, mógłbym wysłać tyle e-maili, ile chciałem, które pasują do konkretnej daty/czasu, zamiast wysyłać je za pomocą automatycznego skryptu - mając nadzieję, że wszystkie zostaną odebrane w ciągu tej samej sekundy . Wygląda jednak na to, że muszę przyjąć inne podejście.
Prawdopodobnie jest to unieważnione przez serwery, o których mowa, które rejestrują czas otrzymania wiadomości, a nie kiedy wiadomość mówi, że została wysłana . –
Myślę, że węszenie sieci pomogłoby. Lub co najmniej dodatkowe logowanie na serwerze SMTP. –
@Lasse V. Karlsen Jak powiedział David Stratton, powinieneś dodać ten komentarz jako odpowiedź. To ma sens. Będę musiał wymyślić lepsze podejście. –