#include #include #include #include #include #include #include "deliverrfc.h" bool match_header(const rfcmessaget &m, const std::string &header, const std::string &pattern) { const char *start=m.data, *text; bool mime_decode=FALSE; if(stringcasecmp(header, "From")==0 || stringcasecmp(header, "Subject")==0) mime_decode=TRUE; while(!m.findheader(&start, header.c_str(), &text)) { std::string header_text; m.copyheadertext(header_text, text); if(mime_decode) header_text=decode_rfc1522(header_text); if(check_joker(pattern, header_text, TRUE)) return TRUE; } return FALSE; } #include "deliver.t" typedef deliver_mailt rfc_deliver_mailt; bool deliver_mail(rfcmessaget &m, userpt &up, const std::string &envelope_to, const std::string &envelope_from) { rfc_deliver_mailt deliver_mail(m, up, envelope_to, envelope_from); return deliver_mail.deliver_mail(); }