SmtpParser::Action SmtpParser::parse(SmtpClient *client) { SmtpParser::State last_state; const std::string *cdata; cdata = &client->get_data(); last_state = client->get_last_state(); if (((last_state == SmtpParser::START) || (last_state == SmtpParser::RCPT)) && (helo(client) || mail_from(client) || rcpt_to(client))) { return SmtpParser::OK; } else if (last_state == SmtpParser::RCPT && data(client)) { return SmtpParser::END_DATA; } else if (last_state == SmtpParser::DATA) { parse_mail(client); return SmtpParser::OK; } else if (cdata->compare(0,4,"QUIT") == 0) return SmtpParser::BYE; return SmtpParser::NOT_IMP;; }
bool smtp_client::to_recipients(const std::vector<rfc822_addr*>& recipients) { std::vector<rfc822_addr*>::const_iterator cit; for (cit = recipients.begin(); cit != recipients.end(); ++cit) { if ((*cit)->addr && rcpt_to((*cit)->addr) == false) return false; } return true; }