javax-mail-getReceivedDate在发送方';s时区

javax-mail-getReceivedDate在发送方';s时区,java,jakarta-mail,Java,Jakarta Mail,我想获取电子邮件发件人时区中的接收日期。javax邮件可以做到这一点吗? message.getReceivedDate()返回服务器时区中的日期。据我所知,至少在Java 7中,date类(按其本身)没有原始时区的概念。因此,如果您想访问邮件的原始时区,应该直接获取日期标题:消息.getHeader(“日期”) 根据RFC2822,该报头必须始终存在,必须包含时区,并且应以本地时间表示。因此,您必须解析该值并提取发送方时区。接下来,您只需将getReceivedDate转换为该时区 RFC28

我想获取电子邮件发件人时区中的接收日期。javax邮件可以做到这一点吗?
message.getReceivedDate()
返回服务器时区中的日期。

据我所知,至少在Java 7中,
date
类(按其本身)没有原始时区的概念。因此,如果您想访问邮件的原始时区,应该直接获取
日期
标题:
消息.getHeader(“日期”)

根据RFC2822,该报头必须始终存在,必须包含时区,并且应以本地时间表示。因此,您必须解析该值并提取发送方时区。接下来,您只需将
getReceivedDate
转换为该时区

RFC2822摘录(用于解析日期头):


如果您能够将邮件与包含发件人EST的额外数据包一起发送,那么这将是一个即时解决方案。你到底想做什么?当用户发送邮件时,我会处理它并成功回复用户。我还想在回复中包括原始邮件发送时的时间戳,以便可以在电子邮件旁边发送任何额外数据;您是否使用自己的SMTP?否。用户将从其客户端发送邮件。您是否有服务器接收数据,然后将其发送给适当的人?如果没有,您可以将日期和时间添加到每封电子邮件的底部,然后根据收到的时间进行处理。
orig-date       =       "Date:" date-time CRLF
date-time       =       [ day-of-week "," ] date FWS time [CFWS]
day-of-week     =       ([FWS] day-name) / obs-day-of-week
day-name        =       "Mon" / "Tue" / "Wed" / "Thu" /
                        "Fri" / "Sat" / "Sun"
date            =       day month year
year            =       4*DIGIT / obs-year
month           =       (FWS month-name FWS) / obs-month
month-name      =       "Jan" / "Feb" / "Mar" / "Apr" /
                        "May" / "Jun" / "Jul" / "Aug" /
                        "Sep" / "Oct" / "Nov" / "Dec"
day             =       ([FWS] 1*2DIGIT) / obs-day
time            =       time-of-day FWS zone
time-of-day     =       hour ":" minute [ ":" second ]
hour            =       2DIGIT / obs-hour
minute          =       2DIGIT / obs-minute
second          =       2DIGIT / obs-second
zone            =       (( "+" / "-" ) 4DIGIT) / obs-zone