| 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 ;
}