bug-mailutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug-mailutils] Best way to get From: email address?


From: Sergey Poznyakoff
Subject: Re: [bug-mailutils] Best way to get From: email address?
Date: Sat, 12 Aug 2017 22:48:20 +0300

Hi Jean,

> What would be best way by using the mailutils to
> get only the email address from the From: header
> by using pipe and not a file?

Please find attached the source file ef.c and makefile ef.mk.
To build: make -f ef.mk
Usage: (something) | ef
   or: ef < INPUT

Regards,
Sergey
   
#include <mailutils/mailutils.h>

int
main (int argc, char **argv)
{
  int rc;
  mu_message_t msg;
  mu_header_t hdr;
  struct mu_address hint;
  mu_address_t addr;
  char *val;
  char const *email;

  mu_stdstream_setup (MU_STDSTREAM_RESET_NONE);
  MU_ASSERT (mu_stdio_stream_create (&mu_strin, MU_STDIN_FD,
                                     MU_STREAM_READ|MU_STREAM_SEEK));
  mu_set_program_name (argv[0]);
  mu_registrar_record (mu_mbox_record);

  MU_ASSERT (mu_stream_to_message (mu_strin, &msg));
  MU_ASSERT (mu_message_get_header (msg, &hdr));
  rc = mu_header_aget_value_unfold (hdr, MU_HEADER_FROM, &val);
  if (rc == MU_ERR_NOENT)
    return 1;
  memset (&hint, 0, sizeof hint);
  rc = mu_address_create_hint (&addr, val, &hint, MU_ADDR_HINT_DOMAIN);
  if (rc)
    {
      mu_error ("can't parse address %s: %s", val, mu_strerror (rc));
      return 1;
    }
  MU_ASSERT (mu_address_sget_email (addr, 1, &email));
  mu_printf ("%s\n", email);
  return 0;
}




CPPFLAGS=`mailutils cflags`
LIBS=`mailutils ldflags mbox`
ef: ef.c
        cc $(CPPFLAGS) $(CFLAGS) -oef ef.c $(LDFLAGS) $(LIBS)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]