Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_POST, m_uri, Poco::Net::HTTPMessage::HTTP_1_1);
Poco::Net::HTMLForm form;
form.setEncoding(Poco::Net::HTMLForm::ENCODING_MULTIPART);
// 设置 headers
auto header = make_tof4_header();
for(auto iter = header.begin(); iter != header.end(); iter++) {
request.add(iter->first, iter->second);
}
// 设置 form data
form.set("EmailType", m_email_type);
form.set("From", m_from);
form.set("To", Poco::cat(std::string(","), m_to.begin(), m_to.end()));
form.set("CC", Poco::cat(std::string(","), m_cc.begin(), m_cc.end()));
form.set("Bcc", Poco::cat(std::string(","), m_bcc.begin(), m_bcc.end()));
form.set("Title", m_title);
form.set("Content", m_content);
form.set("BodyFormat", m_body_format);
// 设置 file
for(auto iter = m_attachment.begin(); iter != m_attachment.end(); iter++) {
form.addPart("file", new Poco::Net::FilePartSource(*iter));
}
form.prepareSubmit(request);
Poco::URI uri(m_uri);
Poco::Net::HTTPClientSession *httpSession = new Poco::Net::HTTPClientSession(uri.getHost(), uri.getPort());
httpSession->setTimeout(Poco::Timespan(3, 0));
form.write(httpSession->sendRequest(request));
Poco::Net::HTTPResponse res;
std::istream &is = httpSession->receiveResponse(res);
std::string res_string;
Poco::StreamCopier::copyToString(is, res_string);
Json::Value res_json;
Json::Reader json_reader;
if (!json_reader.parse(res_string, res_json)) {
return "parse response failed!";
}
if (0 != res_json["ErrCode"].asInt()) {
return res_json["ErrMsg"].asString();
}
return "ok";