@@ -468,27 +468,54 @@ impl<T: SessionStream> SessionData<T> {
468468 }
469469 Filter :: Header ( header, value) => {
470470 if let Some ( header) = HeaderName :: parse ( header) {
471- let op = if matches ! (
472- header,
473- HeaderName :: MessageId
474- | HeaderName :: InReplyTo
475- | HeaderName :: References
476- | HeaderName :: ResentMessageId
477- ) || value. is_empty ( )
478- {
479- SearchOperator :: Equal
480- } else {
481- SearchOperator :: Contains
482- } ;
471+ match header {
472+ HeaderName :: Subject => {
473+ filters. push ( SearchFilter :: has_text_detect (
474+ EmailSearchField :: Subject ,
475+ value,
476+ self . server . core . jmap . default_language ,
477+ ) ) ;
478+ }
479+ header @ ( HeaderName :: From
480+ | HeaderName :: To
481+ | HeaderName :: Cc
482+ | HeaderName :: Bcc ) => {
483+ filters. push ( SearchFilter :: has_text (
484+ match header {
485+ HeaderName :: From => EmailSearchField :: From ,
486+ HeaderName :: To => EmailSearchField :: To ,
487+ HeaderName :: Cc => EmailSearchField :: Cc ,
488+ HeaderName :: Bcc => EmailSearchField :: Bcc ,
489+ _ => unreachable ! ( ) ,
490+ } ,
491+ value,
492+ Language :: None ,
493+ ) ) ;
494+ }
495+ header => {
496+ let op = if matches ! (
497+ header,
498+ HeaderName :: MessageId
499+ | HeaderName :: InReplyTo
500+ | HeaderName :: References
501+ | HeaderName :: ResentMessageId
502+ ) || value. is_empty ( )
503+ {
504+ SearchOperator :: Equal
505+ } else {
506+ SearchOperator :: Contains
507+ } ;
483508
484- filters. push ( SearchFilter :: cond (
485- EmailSearchField :: Headers ,
486- op,
487- SearchValue :: KeyValues (
488- VecMap :: with_capacity ( 1 )
489- . with_append ( header. as_str ( ) . to_lowercase ( ) , value) ,
490- ) ,
491- ) ) ;
509+ filters. push ( SearchFilter :: cond (
510+ EmailSearchField :: Headers ,
511+ op,
512+ SearchValue :: KeyValues (
513+ VecMap :: with_capacity ( 1 )
514+ . with_append ( header. as_str ( ) . to_lowercase ( ) , value) ,
515+ ) ,
516+ ) ) ;
517+ }
518+ }
492519 }
493520 }
494521 Filter :: Subject ( text) => {
0 commit comments