문제

vb.net에서 MailMessage.headers.set Call을 통해이를 수행하려고했습니다. 아래를 참조하십시오 :

    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)

나는 objmail.headers.set 호출이 실제로 작동하고 있음을 확인했습니다. 나중에 값을 얻으면 성공적으로 변경되었습니다. 내 문제는 TELK에서 전자 메일을 받으면 1999 년이 아닌 20099 년이 아닌 날짜가 2009 년이라는 것입니다. 그 이메일 메뉴.

내가 뭘 잘못하고 있죠? 나는 분명한 것을 놓친 느낌이있다 ...

분명히 : 나는 ~ 아니다 악의적 인 의도로 이것을 수행합니다. UID와 "마지막 처리 된"날짜를 모두 사용하여 통합 할 첫 번째 새 이메일을 찾는 이메일 통합 구성 요소를 작업 중입니다. 전자 메일 통합 모듈이 이러한 상황을 완벽하게 처리해야하므로 여러 전자 메일이 동일한 날짜/시간을 갖는 사례를 테스트하고 싶습니다. 단순히 이런 식으로 날짜를 속일 수 있다면 자동 스크립트로 보내지 않고 특정 날짜/시간과 일치하는 많은 이메일을 보낼 수 있습니다. . 그래도 다른 접근 방식을 취해야 할 것 같습니다.

도움이 되었습니까?

해결책

@lasse v. Karlsen의 메모에 추가하면 SMTP 서버가 코드에 메시지에 넣은 내용을 무시하고 있다고 생각합니다. 모든 정직으로, 왜 과거에 전송 된 것처럼 보이는 것처럼 보이도록해야합니까? 나는 최소한 부정직하지 않은 단일 이유를 생각할 수 없거나 최악의 경우 악의적입니다.

따라서 서버 가이 헤더가 의심스러워 보이면이 헤더를 덮어 쓰는 것이 합리적입니다. 그것이 실제로 무슨 일이 일어나고 있는지 모르겠지만 @lasse v. karlsen이 옳다고 확신합니다.

그렇다면 가능한 솔루션은 SMTP 서버의 날짜를 과거의 날짜로 변경하는 것입니다 (서버를 제어하고 그렇게 할 수있는 경우).

아직도, 나는 당신이 왜 이것을하고 싶은지 궁금합니다. 정교 해 줄 수 있습니까?

추가

@Lasse V. Karlsen- 메모를 답으로 게시해야한다고 생각합니다.

다른 팁

헤더를 준비 할 때 메시지 클래스에서 헤더 값이 덮어 쓰고 있습니다.

this.Headers.InternalAdd(MailHeaderInfo.GetString(MailHeaderID.Date), MailBnfHelper.GetDateTimeString(DateTime.Now, null));

이 값을 설정하려는 이유는 다른 계산 된 헤더에 대해 알아야하기 때문입니다. "충분히 가까이"해야 할 것 같아요.

헤더 속성에 사용자 정의 헤더를 추가 할 수 있습니다. 그러나 날짜를 포함한 예약 헤더는 거의 없습니다. 문서에 따르면 제한된 헤더에 대한 사용자 정의 값은 폐기되거나 덮어 쓸 것입니다. 여기 MSDN에서

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top