@@ -448,8 +448,6 @@ static BOOL oxcmail_parse_recipient(const char *charset,
448448static BOOL oxcmail_parse_addresses (const char *charset, const char *field,
449449 uint32_t rcpt_type, TARRAY_SET *pset) try
450450{
451- EMAIL_ADDR email_addr;
452-
453451 vmime::mailboxList mblist;
454452 try {
455453 mblist.parse (field);
@@ -461,16 +459,7 @@ static BOOL oxcmail_parse_addresses(const char *charset, const char *field,
461459 auto mb = vmime::dynamicCast<vmime::mailbox>(compo);
462460 if (mb == nullptr )
463461 continue ;
464- gx_strlcpy (email_addr.display_name , mb->getName ().getConvertedText (" utf-8" ).c_str (), std::size (email_addr.display_name ));
465- auto emp = mb->getEmail ().generate ();
466- gx_strlcpy (email_addr.addr , emp.c_str (), std::size (email_addr.addr ));
467- auto at = emp.find (' @' );
468- if (at == emp.npos )
469- continue ;
470- emp[at] = ' \0 ' ;
471- gx_strlcpy (email_addr.local_part , &emp[0 ], std::size (email_addr.local_part ));
472- gx_strlcpy (email_addr.domain , &emp[at+1 ], std::size (email_addr.domain ));
473-
462+ EMAIL_ADDR email_addr (*mb);
474463 if (!email_addr.has_addr ())
475464 continue ;
476465 if (!oxcmail_parse_recipient (charset,
@@ -487,8 +476,7 @@ static BOOL oxcmail_parse_address(const char *field, uint32_t pr_name,
487476 uint32_t pr_addrtype, uint32_t pr_emaddr, uint32_t pr_smtpaddr,
488477 uint32_t pr_searchkey, uint32_t pr_entryid, TPROPVAL_ARRAY *pproplist) try
489478{
490- EMAIL_ADDR email_addr, *paddr = &email_addr;
491- parse_mime_addr (&email_addr, field);
479+ EMAIL_ADDR email_addr (field), *paddr = &email_addr;
492480
493481 if (paddr->has_dispname ()) {
494482 if (pproplist->set (pr_name, paddr->display_name ) != 0 )
@@ -566,16 +554,7 @@ static BOOL oxcmail_parse_reply_to(const char *charset, const char *field,
566554 auto mb = vmime::dynamicCast<vmime::mailbox>(compo);
567555 if (mb == nullptr )
568556 continue ;
569- gx_strlcpy (email_addr.display_name , mb->getName ().getConvertedText (" utf-8" ).c_str (), std::size (email_addr.display_name ));
570- auto emp = mb->getEmail ().generate ();
571- gx_strlcpy (email_addr.addr , emp.c_str (), std::size (email_addr.addr ));
572- auto at = emp.find (' @' );
573- if (at == emp.npos )
574- continue ;
575- emp[at] = ' \0 ' ;
576- gx_strlcpy (email_addr.local_part , &emp[0 ], std::size (email_addr.local_part ));
577- gx_strlcpy (email_addr.domain , &emp[at+1 ], std::size (email_addr.domain ));
578-
557+ email_addr.set (*mb);
579558 if (!email_addr.has_addr ())
580559 continue ;
581560 snprintf (tmp_buff, std::size (tmp_buff), " %s@%s" ,
0 commit comments