Return Type | Function name | Arguments |
---|---|---|
hzEcode | hzEmail::Compose | (void) |
Declared in file: hzMailer.h
Defined in file : hzMailer.cpp
Function Logic:
Function body:
hzEcode hzEmail::Compose (void) { _hzfunc("hzEmail::Compose") ; hzList<hzEmaddr>::Iter rx ; hzList<_efile>::Iter iA ; ifstream is ; hzEmaddr ema ; _efile A ; hzXDate now ; hzChain filedata ; hzLogger* plog ; const char* i ; uint32_t pid ; char idbuf[60]; hzEcode rc = E_OK ; plog = GetThreadLogger() ; if (!plog) Fatal("No thrread logger\n") ; m_Final.Clear() ; m_Final.Printf("From: %s <%s>\r\n", *m_RealFrom, *m_AddrFrom) ; rx = m_Recipients ; ema = rx.Element() ; m_Final.Printf("To: %s\r\n", *ema) ; for (rx++ ; rx.Valid() ; rx++) { ema = rx.Element() ; m_Final.Printf(" %s\r\n", *ema) ; } if (m_CC.Count()) { rx = m_CC ; ema = rx.Element() ; m_Final.Printf("Cc: %s\r\n", *ema) ; for (rx++ ; rx.Valid() ; rx++) { ema = rx.Element() ; m_Final.Printf(" %s\r\n", *ema) ; } } if (m_BCC.Count()) { rx = m_BCC ; ema = rx.Element() ; m_Final.Printf("Bcc: %s\r\n", *ema) ; for (rx++ ; rx.Valid() ; rx++) { ema = rx.Element() ; m_Final.Printf(" %s\r\n", *ema) ; } } m_Final.Printf("Subject: %s\r\n", *m_Subject) ; if (m_SendAttach.Count()) { now.SysDateTime() ; pid = getpid() ; sprintf(idbuf, "%d--%04d%02d%02d%02d%02d%02d.%06d--%x", pid, now.Year(), now.Month(), now.Day(), now.Hour(), now.Min(), now.Sec(), now.uSec(), pid) ; m_Final << "MIME-Version: 1.0\r\n" ; m_Final.Printf("Content-Type: multipart/mixed; boundary="%s"\r\n\r\n" , idbuf) ; m_Final << "This is a multi-part message in MIME format.\r\n\r\n" ; m_Final.Printf("--%s\r\n", idbuf) ; m_Final << "Content-Type: text/plain; charset=utf-8; format=flowed\r\n" ; m_Final << "Content-Transfer-Encoding: 7bit\r\n\r\n" ; m_Final += m_Text ; m_Final << "\r\n\r\n" ; for (iA = m_SendAttach ; iA.Valid() ; iA++) { A = iA.Element() ; rc = OpenInputStrm(is, A.m_Filepath) ; if (rc != E_OK) break ; filedata.Clear() ; filedata << is ; m_Final.Printf("--%s\r\n", idbuf) ; m_Final << "Content-Type: " ; m_Final << Mimetype2Txt(A.m_eType) ; i = strrchr(*A.m_Filepath, CHAR_FWSLASH) ; if (i) i++ ; else i = A.m_Filepath ; m_Final.Printf("; name="%s"\r\n" , i) ; m_Final << "Content-Transfer-Encoding: base64\r\n" ; m_Final.Printf("Content-Disposition: attachment; filename="%s"\r\n\r\n" , i) ; Base64Encode(m_Final, filedata) ; m_Final << "\r\n" ; is.close() ; is.clear() ; } m_Final.Printf("--%s--\r\n", idbuf) ; } else { m_Final << "MIME-Version: 1.0\r\n" ; m_Final << "Content-Type: text/plain; charset=utf-8; format=flowed\r\n" ; m_Final << "Content-Transfer-Encoding: 7bit\r\n\r\n" ; m_Final += m_Text ; m_Final << "\r\n\r\n" ; } return rc ; }