UtlString MailMessage::FormatForSending() { unsigned int i; int lineLength = 4; // From: "Name" <Address> UtlString data = "From: " + m_From.toString() + CRLF; // To: "Name" <Address>, "Name" <Address> data += "To: "; for (i = 0; i < m_vecTo.size(); i++) { if (lineLength + m_vecTo[i].toString().length() > 998) { data += "\r\n "; lineLength = 1; } data += m_vecTo[i].toString(); lineLength += m_vecTo[i].toString().length(); if (i < m_vecTo.size()-1) { data += ", "; lineLength += 2; } } data += CRLF; // Cc: "Name" <Address>, "Name" <Address> data += "Cc: "; for (i = 0; i < m_vecCc.size(); i++) { if (lineLength + m_vecCc[i].toString().length() > 998) { data += "\r\n "; lineLength = 1; } data += m_vecCc[i].toString(); lineLength += m_vecCc[i].toString().length(); if (i < m_vecCc.size()-1) { data += ", "; lineLength += 2; } } data += CRLF; // Subject: Subject text data += "Subject: " + m_Subject + CRLF; // Date: Mon, 25 Sep 2001 11:11:11 -0600\r\n UtlString dateString; OsDateTime now; OsDateTime::getCurTime(now); now.getHttpTimeString(dateString); /* SYSTEMTIME now; GetLocalTime(&now); TIME_ZONE_INFORMATION tzinfo; GetTimeZoneInformation(&tzinfo); char *day[] = { "Sun","Mon","Tue","Wed","Thu","Fri","Sat" }; char *month[] = { "Jan","Feb","Mar","Apr","May","Jun","Jul", "Aug","Sep","Oct","Nov","Dec" }; char buf[128]; wsprintf(buf, "Date: %s, %u %s %u %02u:%02u:%02u %c%02u%02u", day[now.wDayOfWeek], now.wDay, month[now.wMonth], now.wYear, now.wHour, now.wMinute, now.wSecond, tzinfo.Bias > 0 ? '-' : '+', abs(tzinfo.Bias/60), abs(tzinfo.Bias%60)); */ char buf[128]; sprintf(buf, "Date: %s",dateString.data()); data += buf + CRLF; // MIME version header data += "Mime-Version: 1.0" + CRLF; // If attachments... if (m_vecAttachment.size() > 0) { UtlString boundary = "---=_Next_Part_of_Message_987456321147852369"; // MIME content type header and separator line data += "Content-Type: multipart/mixed; boundary=\"" + boundary + "\"" + CRLFCRLF; // Message body data += "--" + boundary + CRLF; data += "Content-Type: " + m_ContentType + CRLF; data += "Content-Transfer-Encoding: quoted-printable" + CRLFCRLF; data += m_Body + CRLF; // Attachments for (int i = 0; i < ((int)(m_vecAttachment.size())); i++) { data += "--" + boundary + CRLF; data += "Content-Type: " + m_vecAttachment[i].MIMEtype() + "; name=\"" + m_vecAttachment[i].Filename() + "\"" + CRLF; data += "Content-Transfer-Encoding: base64" + CRLF; data += "Content-Disposition: attachment; filename=\"" + m_vecAttachment[i].Filename() + "\"" + CRLFCRLF; data += m_vecAttachment[i].Base64Data() + CRLF; } data += "--" + boundary + "--"; } // No attachments else { // MIME content type header data += "Content-Type: " + m_ContentType + CRLF; // Separator line, body data += CRLF + m_Body; } data += CRLF + "."; data += CRLF; return data; }