void windowsSocket::connect(const vmime::string& address, const vmime::port_t port) { // Close current connection, if any if (m_desc != -1) { ::closesocket(m_desc); m_desc = -1; } // Resolve address ::sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(static_cast <unsigned short>(port)); addr.sin_addr.s_addr = ::inet_addr(address.c_str()); if (addr.sin_addr.s_addr == static_cast <int>(-1)) { ::hostent* hostInfo = ::gethostbyname(address.c_str()); if (hostInfo == NULL) { // Error: cannot resolve address throw vmime::exceptions::connection_error("Cannot resolve address."); } memcpy(reinterpret_cast <char*>(&addr.sin_addr), hostInfo->h_addr, hostInfo->h_length); } // Get a new socket m_desc = ::socket(AF_INET, SOCK_STREAM, 0); if (m_desc == -1) throw vmime::exceptions::connection_error("Error while creating socket."); // Start connection if (::connect(m_desc, reinterpret_cast <sockaddr*>(&addr), sizeof(addr)) == -1) { ::closesocket(m_desc); m_desc = -1; // Error throw vmime::exceptions::connection_error("Error while connecting socket."); } }
void posixSocket::connect(const vmime::string& address, const vmime::port_t port) { // Close current connection, if any if (m_desc != -1) { ::close(m_desc); m_desc = -1; } #if VMIME_HAVE_GETADDRINFO // use thread-safe and IPv6-aware getaddrinfo() if available // Resolve address, if needed struct ::addrinfo hints; memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_CANONNAME; hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; std::ostringstream portStr; portStr.imbue(std::locale::classic()); portStr << port; struct ::addrinfo* res0; if (::getaddrinfo(address.c_str(), portStr.str().c_str(), &hints, &res0) != 0) { // Error: cannot resolve address throw vmime::exceptions::connection_error("Cannot resolve address."); } // Connect to host int sock = -1; struct ::addrinfo* res = res0; for ( ; sock == -1 && res != NULL ; res = res->ai_next) { sock = ::socket(res->ai_family, res->ai_socktype, res->ai_protocol); if (sock < 0) continue; // try next if (m_timeoutHandler != NULL) { ::fcntl(sock, F_SETFL, ::fcntl(sock, F_GETFL) | O_NONBLOCK); if (::connect(sock, res->ai_addr, res->ai_addrlen) < 0) { switch (errno) { case 0: case EINPROGRESS: case EINTR: #if defined(EAGAIN) case EAGAIN: #endif // EAGAIN #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) case EWOULDBLOCK: #endif // EWOULDBLOCK // Connection in progress break; default: ::close(sock); sock = -1; continue; // try next } // Wait for socket to be connected. // We will check for time out every second. fd_set fds; FD_ZERO(&fds); FD_SET(sock, &fds); fd_set fdsError; FD_ZERO(&fdsError); FD_SET(sock, &fdsError); struct timeval tm; tm.tv_sec = 1; tm.tv_usec = 0; m_timeoutHandler->resetTimeOut(); bool connected = false; do { const int ret = select(sock + 1, NULL, &fds, &fdsError, &tm); // Success if (ret > 0) { connected = true; break; } // Error else if (ret < -1) { if (errno != EINTR) { // Cancel connection break; } } // 1-second timeout else if (ret == 0) { if (m_timeoutHandler->isTimeOut()) { if (!m_timeoutHandler->handleTimeOut()) { // Cancel connection break; } else { // Reset timeout and keep waiting for connection m_timeoutHandler->resetTimeOut(); } } else { // Keep waiting for connection } } ::sched_yield(); } while (true); if (!connected) { ::close(sock); sock = -1; continue; // try next } break; } } else { if (::connect(sock, res->ai_addr, res->ai_addrlen) < 0) { ::close(sock); sock = -1; continue; // try next } } } ::freeaddrinfo(res0); if (sock == -1) { try { throwSocketError(errno); } catch (exceptions::socket_exception& e) { throw vmime::exceptions::connection_error ("Error while connecting socket.", e); } } m_desc = sock; #else // !VMIME_HAVE_GETADDRINFO // Resolve address ::sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(static_cast <unsigned short>(port)); addr.sin_addr.s_addr = ::inet_addr(address.c_str()); if (addr.sin_addr.s_addr == static_cast <in_addr_t>(-1)) { ::hostent* hostInfo = ::gethostbyname(address.c_str()); if (hostInfo == NULL) { // Error: cannot resolve address throw vmime::exceptions::connection_error("Cannot resolve address."); } ::memcpy(reinterpret_cast <char*>(&addr.sin_addr), hostInfo->h_addr, hostInfo->h_length); } // Get a new socket m_desc = ::socket(AF_INET, SOCK_STREAM, 0); if (m_desc == -1) { try { throwSocketError(errno); } catch (exceptions::socket_exception& e) { throw vmime::exceptions::connection_error ("Error while creating socket.", e); } } // Start connection if (::connect(m_desc, reinterpret_cast <sockaddr*>(&addr), sizeof(addr)) == -1) { try { throwSocketError(errno); } catch (exceptions::socket_exception& e) { ::close(m_desc); m_desc = -1; // Error throw vmime::exceptions::connection_error ("Error while connecting socket.", e); } } #endif // VMIME_HAVE_GETADDRINFO ::fcntl(m_desc, F_SETFL, ::fcntl(m_desc, F_GETFL) | O_NONBLOCK); }
int sendattach(SENDMAIL_VARIABLES *mvars) { #ifndef WIN32 vmime::platform::setHandler<vmime::platforms::posix::posixHandler>(); #else vmime::platform::setHandler<vmime::platforms::windows::windowsHandler>(); #endif if((mvars->from_addr==NULL)&&(mvars->tolist==NULL)&&(mvars->cclist==NULL)&&(mvars->bcclist==NULL)&&(mvars->from_addr==NULL)) { cerr << "No Email Recipients Specified..." <<endl ; ostringstream errmsg; std::string errstring; errmsg << "ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified..." << endl << endl << endl << endl << (mvars->from_name==NULL ? "" : "From Name: ") << (mvars->from_name==NULL ? "" : mvars->from_name) << (mvars->from_name==NULL ? "" : "\n" ) << (mvars->from_addr==NULL ? "" : "From Address: ") << (mvars->from_addr==NULL ? "" : mvars->from_addr) << (mvars->from_addr==NULL ? "" : "\n" ) << (mvars->tolist==NULL ? "" : "TO: ") << (mvars->tolist==NULL ? "" : mvars->tolist) << (mvars->tolist==NULL ? "" : "\n" ) << (mvars->cclist==NULL ? "" : "CC: ") << (mvars->cclist==NULL ? "" : mvars->cclist) << (mvars->cclist==NULL ? "" : "\n" ) << (mvars->bcclist==NULL ? "" : "BCC: ") << (mvars->bcclist==NULL ? "" : mvars->bcclist) << (mvars->bcclist==NULL ? "" : "\n" ) << (mvars->subject==NULL ? "" : "Subject: ") << (mvars->subject==NULL ? "" : mvars->subject) << (mvars->subject==NULL ? "" : "\n" ) << (mvars->fname[0]==NULL ? "" : "Filename 0: ") << (mvars->fname[0]==NULL ? "" : mvars->fname[0]) << (mvars->fname[0]==NULL ? "" : "\n" ) << (mvars->fname[1]==NULL ? "" : "Filename 1: ") << (mvars->fname[1]==NULL ? "" : mvars->fname[1]) << (mvars->fname[1]==NULL ? "" : "\n" ) << (mvars->fname[2]==NULL ? "" : "Filename 2: ") << (mvars->fname[2]==NULL ? "" : mvars->fname[2]) << (mvars->fname[2]==NULL ? "" : "\n" ) << (mvars->fname[3]==NULL ? "" : "Filename 3: ") << (mvars->fname[3]==NULL ? "" : mvars->fname[3]) << (mvars->fname[3]==NULL ? "" : "\n" ) << (mvars->fname[4]==NULL ? "" : "Filename 4: ") << (mvars->fname[4]==NULL ? "" : mvars->fname[4]) << (mvars->fname[4]==NULL ? "" : "\n" ) << (mvars->fname[5]==NULL ? "" : "Filename 5: ") << (mvars->fname[5]==NULL ? "" : mvars->fname[5]) << (mvars->fname[5]==NULL ? "" : "\n" ) << (mvars->fname[6]==NULL ? "" : "Filename 6: ") << (mvars->fname[6]==NULL ? "" : mvars->fname[6]) << (mvars->fname[6]==NULL ? "" : "\n" ) << (mvars->fname[7]==NULL ? "" : "Filename 7: ") << (mvars->fname[7]==NULL ? "" : mvars->fname[7]) << (mvars->fname[7]==NULL ? "" : "\n" ) << (mvars->fname[8]==NULL ? "" : "Filename 8: ") << (mvars->fname[8]==NULL ? "" : mvars->fname[8]) << (mvars->fname[8]==NULL ? "" : "\n" ) << (mvars->fname[9]==NULL ? "" : "Filename 9: ") << (mvars->fname[9]==NULL ? "" : mvars->fname[9]) << (mvars->fname[9]==NULL ? "" : "\n" ) << (mvars->dname[0]==NULL ? "" : "Attachment 0: ") << (mvars->dname[0]==NULL ? "" : mvars->dname[0]) << (mvars->dname[0]==NULL ? "" : "\n" ) << (mvars->dname[1]==NULL ? "" : "Attachment 1: ") << (mvars->dname[1]==NULL ? "" : mvars->dname[1]) << (mvars->dname[1]==NULL ? "" : "\n" ) << (mvars->dname[2]==NULL ? "" : "Attachment 2: ") << (mvars->dname[2]==NULL ? "" : mvars->dname[2]) << (mvars->dname[2]==NULL ? "" : "\n" ) << (mvars->dname[3]==NULL ? "" : "Attachment 3: ") << (mvars->dname[3]==NULL ? "" : mvars->dname[3]) << (mvars->dname[3]==NULL ? "" : "\n" ) << (mvars->dname[4]==NULL ? "" : "Attachment 4: ") << (mvars->dname[4]==NULL ? "" : mvars->dname[4]) << (mvars->dname[4]==NULL ? "" : "\n" ) << (mvars->dname[5]==NULL ? "" : "Attachment 5: ") << (mvars->dname[5]==NULL ? "" : mvars->dname[5]) << (mvars->dname[5]==NULL ? "" : "\n" ) << (mvars->dname[6]==NULL ? "" : "Attachment 6: ") << (mvars->dname[6]==NULL ? "" : mvars->dname[6]) << (mvars->dname[6]==NULL ? "" : "\n" ) << (mvars->dname[7]==NULL ? "" : "Attachment 7: ") << (mvars->dname[7]==NULL ? "" : mvars->dname[7]) << (mvars->dname[7]==NULL ? "" : "\n" ) << (mvars->dname[8]==NULL ? "" : "Attachment 8: ") << (mvars->dname[8]==NULL ? "" : mvars->dname[8]) << (mvars->dname[8]==NULL ? "" : "\n" ) << (mvars->dname[9]==NULL ? "" : "Attachment 9: ") << (mvars->dname[9]==NULL ? "" : mvars->dname[9]) << (mvars->dname[9]==NULL ? "" : "\n" ) << (mvars->mtype[0]==NULL ? "" : "MimeType 0: ") << (mvars->mtype[0]==NULL ? "" : mvars->mtype[0]) << (mvars->mtype[0]==NULL ? "" : "\n" ) << (mvars->mtype[1]==NULL ? "" : "MimeType 1: ") << (mvars->mtype[1]==NULL ? "" : mvars->mtype[1]) << (mvars->mtype[1]==NULL ? "" : "\n" ) << (mvars->mtype[2]==NULL ? "" : "MimeType 2: ") << (mvars->mtype[2]==NULL ? "" : mvars->mtype[2]) << (mvars->mtype[2]==NULL ? "" : "\n" ) << (mvars->mtype[3]==NULL ? "" : "MimeType 3: ") << (mvars->mtype[3]==NULL ? "" : mvars->mtype[3]) << (mvars->mtype[3]==NULL ? "" : "\n" ) << (mvars->mtype[4]==NULL ? "" : "MimeType 4: ") << (mvars->mtype[4]==NULL ? "" : mvars->mtype[4]) << (mvars->mtype[4]==NULL ? "" : "\n" ) << (mvars->mtype[5]==NULL ? "" : "MimeType 5: ") << (mvars->mtype[5]==NULL ? "" : mvars->mtype[5]) << (mvars->mtype[5]==NULL ? "" : "\n" ) << (mvars->mtype[6]==NULL ? "" : "MimeType 6: ") << (mvars->mtype[6]==NULL ? "" : mvars->mtype[6]) << (mvars->mtype[6]==NULL ? "" : "\n" ) << (mvars->mtype[7]==NULL ? "" : "MimeType 7: ") << (mvars->mtype[7]==NULL ? "" : mvars->mtype[7]) << (mvars->mtype[7]==NULL ? "" : "\n" ) << (mvars->mtype[8]==NULL ? "" : "MimeType 8: ") << (mvars->mtype[8]==NULL ? "" : mvars->mtype[8]) << (mvars->mtype[8]==NULL ? "" : "\n" ) << (mvars->mtype[9]==NULL ? "" : "MimeType 9: ") << (mvars->mtype[9]==NULL ? "" : mvars->mtype[9]) << (mvars->mtype[9]==NULL ? "" : "\n" ) << (mvars->fdata[0]==NULL ? "" : "File Data 0: ") << (mvars->fdata[0]==NULL ? "" : "TRUE") << (mvars->fdata[0]==NULL ? "" : "\n" ) << (mvars->fdata[1]==NULL ? "" : "File Data 1: ") << (mvars->fdata[1]==NULL ? "" : "TRUE") << (mvars->fdata[1]==NULL ? "" : "\n" ) << (mvars->fdata[2]==NULL ? "" : "File Data 2: ") << (mvars->fdata[2]==NULL ? "" : "TRUE") << (mvars->fdata[2]==NULL ? "" : "\n" ) << (mvars->fdata[3]==NULL ? "" : "File Data 3: ") << (mvars->fdata[3]==NULL ? "" : "TRUE") << (mvars->fdata[3]==NULL ? "" : "\n" ) << (mvars->fdata[4]==NULL ? "" : "File Data 4: ") << (mvars->fdata[4]==NULL ? "" : "TRUE") << (mvars->fdata[4]==NULL ? "" : "\n" ) << (mvars->fdata[5]==NULL ? "" : "File Data 5: ") << (mvars->fdata[5]==NULL ? "" : "TRUE") << (mvars->fdata[5]==NULL ? "" : "\n" ) << (mvars->fdata[6]==NULL ? "" : "File Data 6: ") << (mvars->fdata[6]==NULL ? "" : "TRUE") << (mvars->fdata[6]==NULL ? "" : "\n" ) << (mvars->fdata[7]==NULL ? "" : "File Data 7: ") << (mvars->fdata[7]==NULL ? "" : "TRUE") << (mvars->fdata[7]==NULL ? "" : "\n" ) << (mvars->fdata[8]==NULL ? "" : "File Data 8: ") << (mvars->fdata[8]==NULL ? "" : "TRUE") << (mvars->fdata[8]==NULL ? "" : "\n" ) << (mvars->fdata[9]==NULL ? "" : "File Data 9: ") << (mvars->fdata[9]==NULL ? "" : "TRUE") << (mvars->fdata[9]==NULL ? "" : "\n" ) << (mvars->body==NULL ? "" : "Body: ") << (mvars->body==NULL ? "" : mvars->body) << (mvars->body==NULL ? "" : "\n" ) << "\"" << endl; //errstring=errmsg.str(); std::cerr << errstring; /* #ifdef WIN32 if(!mvars->ignerr) { //system("ok.exe ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified...\""); system(errstring.c_str()); } #else if(!mvars->ignerr) { //system("ok.lnx ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified...\""); system(errstring.c_str()); } #endif */ return (1); } try { vmime::messageBuilder mb; ostringstream ostream1; if((mvars->from_name==NULL)&&(mvars->from_addr!=NULL)) { ostream1 << " <" << mvars->from_addr << ">"; }else if((mvars->from_name!=NULL)&&(mvars->from_addr!=NULL)) { ostream1 << mvars->from_name << " <" << mvars->from_addr << ">"; }else{ } //std::cout <<stream1.str() << std::endl; // Fill in the basic fields mb.setExpeditor(vmime::mailbox(ostream1.str())); vmime::addressList from; from.appendAddress(vmime::create <vmime::mailbox>(ostream1.str())); mb.setRecipients(from); ostream1.clear(); // This may be in the wrong place.... istringstream istream1; std::string name; vmime::addressList to; if(mvars->tolist!=NULL) { if((strstr(mvars->tolist,","))==NULL) { //std::string tostr = .str(); to.appendAddress(vmime::create <vmime::mailbox>(mvars->tolist)); mb.setRecipients(to); }else{ // Needs a for/while loop using strtok or similar... //std::string tostr(mvars->tolist); //tostr1.erase(std::remove(tostr1.begin(), tostr1.end(), '\n'), tostr1.end()); //tostr1.erase(std::remove(tostr1.begin(), tostr1.end(), '\r'), tostr1.end()); //stringstream strstrm(tostr.c_str()); stringstream strstrm(mvars->tolist); char num1[200]; while(1) { strstrm.getline(&num1[0],200,','); //cout << num1 << std::endl; to.appendAddress(vmime::create <vmime::mailbox>(num1)); mb.setRecipients(to); if((strlen(num1))==0) { break; } } } istream1.clear(); } // Subject Header if(mvars->subject==NULL) { mb.setSubject(vmime::text("")); }else{ mb.setSubject(vmime::text(mvars->subject)); } // Message body if(mvars->body==NULL) { mb.getTextPart()->setText(vmime::create <vmime::stringContentHandler>("")); } else if((mvars->body!=NULL)&&(!strcmp(mvars->body,"stdin"))) { vmime::string stdin_body((std::istreambuf_iterator<char>(cin)), std::istreambuf_iterator<char>()); mb.getTextPart()->setText(vmime::create <vmime::stringContentHandler>(stdin_body)); }else{ mb.getTextPart()->setText(vmime::create <vmime::stringContentHandler>(mvars->body)); } if(mvars->cclist!=NULL) { vmime::addressList cc; if((strstr(mvars->cclist,","))==NULL) { cc.appendAddress(vmime::create <vmime::mailbox>(mvars->cclist)); mb.setCopyRecipients(cc); }else{ // Needs a for/while loop using strtok or similar... stringstream strstrm(mvars->cclist); char num1[200]; while(1) { strstrm.getline(&num1[0],200,','); //cout << num1 << std::endl; cc.appendAddress(vmime::create <vmime::mailbox>(num1)); mb.setCopyRecipients(cc); if((strlen(num1))==0) { break; } } } } // This section needs to be done for BCC if(mvars->bcclist!=NULL) { vmime::addressList bcc; if((strstr(mvars->bcclist,","))==NULL) { bcc.appendAddress(vmime::create <vmime::mailbox>(mvars->bcclist)); mb.setBlindCopyRecipients(bcc); }else{ // Needs a for/while loop using strtok or similar... stringstream strstrm(mvars->bcclist); char num1[200]; while(1) { strstrm.getline(&num1[0],200,','); //cout << num1 << std::endl; bcc.appendAddress(vmime::create <vmime::mailbox>(num1)); mb.setBlindCopyRecipients(bcc); if((strlen(num1))==0) { break; } } } } int x; vmime::string s1; s1 = "This is a string that really should be the contents of a file."; for(x=0;x<10;x++) { //TRACE; if((mvars->fname[x]!=NULL)&&(!strcmp(mvars->fname[x],"stdin"))) { //std::string stdin_str((std::istreambuf_iterator<char>(cin)), std::istreambuf_iterator<char>()); //vmime::string stdin_str; //stdin_str = "This is a string that really should be the contents of a file."; //std::cout << "The stdin_str size is: " << stdin_str.length() << endl; //ref <utility::inputStream> is = vmime::create <utility::inputStreamStringAdapter>(stdin_str); #ifdef WIN32 if (_setmode(_fileno(stdin), _O_BINARY) == -1) std::cerr << "ERROR: while converting cin to binary:" << strerror(errno) << endl; #endif ref <utility::inputStream> is = vmime::create <utility::inputStreamPointerAdapter>(&cin,true); vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( is, vmime::word("Report.txt"), // default filename vmime::mediaType("application/octet-stream"), // default content type vmime::text("Report.txt") // default description ); a->getFileInfo().setFilename("Report.txt"); mb.appendAttachment(a); } else if((mvars->fname[x]!=NULL)&&(!strcmp(mvars->fname[x],"stdin"))&&(mvars->dname[x]==NULL)&&(mvars->mtype[x]!=NULL)) { if(mvars->rdadiag) { TRACE; } //vmime::string stdin_str((std::istreambuf_iterator<char>(cin)), std::istreambuf_iterator<char>()); //std::cout << "The stdin_str size is: " << stdin_str.length() << endl //ref <utility::inputStream> is = vmime::create <utility::inputStreamStringAdapter>(stdin_str); #ifdef WIN32 if (_setmode(_fileno(stdin), _O_BINARY) == -1) std::cerr << "ERROR: while converting cin to binary:" << strerror(errno) << endl; #endif ref <utility::inputStream> is = vmime::create <utility::inputStreamPointerAdapter>(&cin,true); vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( is, vmime::word("Report.txt"), // default filename vmime::mediaType(mvars->mtype[x]), // set content type vmime::text("Report.txt") // default description ); // If the MIME TYPE is application/pdf or similar, the default filename should be changed... a->getFileInfo().setFilename("Report.txt"); mb.appendAttachment(a); } else if((mvars->fname[x]!=NULL)&&(!strcmp(mvars->fname[x],"stdin"))&&(mvars->dname[x]!=NULL)&&(mvars->mtype[x]==NULL)) { if(mvars->rdadiag) { TRACE; } //vmime::string stdin_str((std::istreambuf_iterator<char>(cin)), std::istreambuf_iterator<char>()); //std::cout << "The stdin_str size is: " << strlen(stdin_str.cstr) << endl //ref <utility::inputStream> is = vmime::create <utility::inputStreamStringAdapter>(stdin_str); #ifdef WIN32 if (_setmode(_fileno(stdin), _O_BINARY) == -1) std:cerr << "ERROR: while converting cin to binary:" << strerror(errno) << endl; #endif ref <utility::inputStream> is = vmime::create <utility::inputStreamPointerAdapter>(&cin,true); vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( is, vmime::word(mvars->dname[x]), // specified filename vmime::mediaType("application/octet-stream"), // default content type vmime::text(mvars->dname[x]) // specified description ); a->getFileInfo().setFilename(mvars->dname[x]); mb.appendAttachment(a); } else if((mvars->fname[x]!=NULL)&&(!strcmp(mvars->fname[x],"stdin"))&&(mvars->dname[x]!=NULL)&&(mvars->mtype[x]!=NULL)) { if(mvars->rdadiag) { TRACE; } //vmime::string stdin_str((std::istreambuf_iterator<char>(cin)), std::istreambuf_iterator<char>()); //std::cout << "The stdin_str size is: " << stdin_str.length() << endl //ref <utility::inputStream> is = vmime::create <utility::inputStreamStringAdapter>(stdin_str); #ifdef WIN32 if (_setmode(_fileno(stdin), _O_BINARY) == -1) std::cerr << "ERROR: while converting cin to binary:" << strerror(errno) << endl; #endif ref <utility::inputStream> is = vmime::create <utility::inputStreamPointerAdapter>(&cin,true); vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( is, vmime::word(mvars->dname[x]), // specified filename vmime::mediaType(mvars->mtype[x]), // set content type vmime::text(mvars->dname[x]) // specified description ); a->getFileInfo().setFilename(mvars->dname[x]); mb.appendAttachment(a); }else if((mvars->fname[x]!=NULL)&&(!strcmp(mvars->fname[x],"stdin3"))&&(mvars->dname[x]==NULL)&&(mvars->mtype[x]==NULL)) { if(mvars->rdadiag) { TRACE; } ref <utility::inputStream> is = vmime::create <utility::inputStreamPointerAdapter>(&cin,true); if(mvars->rdadiag) { TRACE; } vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( is, vmime::word("Report3.txt"), vmime::mediaType("application/octet-stream"), // content type vmime::text("Report3.txt") // description ); if(mvars->rdadiag) { TRACE; } /* vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( "/proc/self/fd/0", // linux cheat to read stdin using file name vmime::mediaType("application/octet-stream"), // content type vmime::text("Report.txt") // description ); */ if(mvars->rdadiag) { TRACE; } a->getFileInfo().setFilename("Report.txt"); if(mvars->rdadiag) { TRACE; } mb.appendAttachment(a); if(mvars->rdadiag) { TRACE; } }else if((mvars->fname[x]!=NULL)&&(!strcmp(mvars->fname[x],"stdin2"))&&(mvars->dname[x]==NULL)&&(mvars->mtype[x]==NULL)) { if(mvars->rdadiag) { TRACE; } std::string stdin_str((std::istreambuf_iterator<char>(cin)), std::istreambuf_iterator<char>()); ref <utility::inputStream> is = vmime::create <utility::inputStreamStringAdapter>(stdin_str); //ref <utility::inputStream> is = vmime::create <utility::inputStreamStringAdapter>(mvars->fdata[x]); //ref <utility::inputStream> is = vmime::create <utility::inputStreamStringAdapter>(s1); vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( is, vmime::word("Report.txt"), vmime::mediaType("application/octet-stream"), // content type vmime::text("Report.txt") // description ); a->getFileInfo().setFilename("Report.txt"); mb.appendAttachment(a); }else if((mvars->fname[x]!=NULL)&&(mvars->mtype[x]!=NULL)&&(mvars->dname[x]!=NULL)) { if(mvars->rdadiag) { TRACE; } vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( mvars->fname[x], // full path to file vmime::mediaType(mvars->mtype[x]), // content type vmime::text(mvars->dname[x]) // description ); a->getFileInfo().setFilename(mvars->dname[x]); //a->getFileInfo().setCreationDate(vmime::datetime("30 Apr 2003 14:30:00 +0200")); //mb.attach(a); mb.appendAttachment(a); }else if((mvars->fname[x]!=NULL)&&(mvars->mtype[x]==NULL)&&(mvars->dname[x]!=NULL)) { if(mvars->rdadiag) { TRACE; std::cerr << "FNAME " << mvars->fname[x] <<endl; std::cerr << "DNAME " << mvars->dname[x] <<endl; } vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( mvars->fname[x], vmime::mediaType("application/octet-stream"), vmime::text(mvars->dname[x]) ); a->getFileInfo().setFilename(mvars->dname[x]); mb.appendAttachment(a); }else if((mvars->fname[x]!=NULL)&&(mvars->mtype[x]==NULL)&&(mvars->dname[x]==NULL)) { if(mvars->rdadiag) { TRACE; } // Need a cross platform basename function used on fname before setting attachment name to it. vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( mvars->fname[x], vmime::mediaType("application/octet-stream"), vmime::text(mvars->fname[x]) ); a->getFileInfo().setFilename(mvars->fname[x]); mb.appendAttachment(a); }else if((mvars->fname[x]!=NULL)&&(mvars->mtype[x]!=NULL)&&(mvars->dname[x]==NULL)) { if(mvars->rdadiag) { TRACE; } // Need a cross platform basename function used on fname before setting attachment name to it. vmime::ref <vmime::fileAttachment> a = vmime::create <vmime::fileAttachment> ( mvars->fname[x], vmime::mediaType(mvars->mtype[x]), vmime::text(mvars->fname[x]) ); a->getFileInfo().setFilename(mvars->fname[x]); mb.appendAttachment(a); /* }else{ TRACE; std::cout << "ELSE condition of add attachment. Should never reach here." <<endl ; */ } } // Email Construction vmime::ref <vmime::message> msg = mb.construct(); // Add reply to header if value exists. if(mvars->replyto!=NULL) { vmime::ref <vmime::header> hdr = msg->getHeader(); vmime::headerFieldFactory *hfFactory = vmime::headerFieldFactory::getInstance(); vmime::ref <vmime::headerField> ReplyToField = hfFactory->create(vmime::fields::REPLY_TO); ReplyToField->setValue(vmime::text (mvars->replyto)); hdr->appendField(ReplyToField); } // Raw text generation const vmime::string dataToSend = msg->generate(); // Print it to stdout for testing // ostream1 << dataToSend ; FILE *pipe=NULL; #ifdef WIN32 HANDLE *procinfo; pipe=win32_popen(&procinfo,"msmtp.exe -t","wb"); bufferwrite(pipe,dataToSend.c_str(),(strlen(dataToSend.c_str())),65535); //fclose(pipe); //WaitForSingleObject(procinfo,INFINITE); win32_pclose(&procinfo,pipe); // win32_plose is broken. Does not wait on passed object... // using fclose and WaitForSingleObject works in parent... //win32_pclose(&procinfo,pipe); //system("msmtp.exe -d -t <C:\\email.txt"); //RunSilent("msmtp.exe -t <C:\\email.txt"); //system_command("msmtp.exe -d -t <C:\\email.txt"); //RunSilent("msmtp.exe -d -t <\\\\pipe\\SamplePipe"); #else char const *approot=getenv("VM_HOST_ROOT"); if(approot!=NULL) { std::string msmtpcmd("msmtp -C "); msmtpcmd.append(approot); msmtpcmd.append("/approot/msmtprc -X "); msmtpcmd.append(approot); msmtpcmd.append("/approot/openrda/"); if(mvars->srcuser!=NULL) { msmtpcmd.append(mvars->srcuser); msmtpcmd.append("/msmtp.log -t"); }else{ msmtpcmd.append("/unknown-msmtp.log -t"); } pipe=popen(msmtpcmd.c_str(),"w"); }else{ pipe=popen("msmtp -t","w"); } if(pipe==NULL) { cerr <<std::endl <<"ERROR SENDING EMAIL: MSMTP Failed. Ensure MSMTP Is Installed..." <<std::endl; //if(!mvars->ignerr) { // system("ok.lnx ERRORDIALOG \"ERROR SENDING EMAIL\" \"MSMTP Failed. Ensure MSMTP Is Installed...\""); //} }else{ fwrite(dataToSend.c_str(),(strlen(dataToSend.c_str())),1,pipe); } if(mvars->rdadiag) { cerr <<std::endl <<std::endl <<dataToSend.c_str() <<std::endl <<std::endl; } if(pipe!=NULL) { pclose(pipe); } DelayAfterSending(); /* Crash is coming from the implicit destructor when this function returns TRACE; ~msg( ); TRACE; */ #endif return(0); //fwrite(ostream1.str(),(strlen(ostream1.str())),1,pipe); //strcpy(firstName, my_string.c_str()); //std::cout << "strlen is " << strlen(ostream1.str()) std::endl; //std::cout << ostream1.str() << std::endl; //std::cout << dataToSend << std::endl; } // VMime exception catch (vmime::exception& e) { std::cerr << "vmime::exception: " << e.what() << std::endl; ostringstream verrmsg; std::string verrstring; verrmsg << "ERRORDIALOG \"ERROR SENDING EMAIL\" \"vmime::exception: " << e.what() << endl << endl << endl << endl << (mvars->from_name==NULL ? "" : "From Name: ") << (mvars->from_name==NULL ? "" : mvars->from_name) << (mvars->from_name==NULL ? "" : "\n" ) << (mvars->from_addr==NULL ? "" : "From Address: ") << (mvars->from_addr==NULL ? "" : mvars->from_addr) << (mvars->from_addr==NULL ? "" : "\n" ) << (mvars->tolist==NULL ? "" : "TO: ") << (mvars->tolist==NULL ? "" : mvars->tolist) << (mvars->tolist==NULL ? "" : "\n" ) << (mvars->cclist==NULL ? "" : "CC: ") << (mvars->cclist==NULL ? "" : mvars->cclist) << (mvars->cclist==NULL ? "" : "\n" ) << (mvars->bcclist==NULL ? "" : "BCC: ") << (mvars->bcclist==NULL ? "" : mvars->bcclist) << (mvars->bcclist==NULL ? "" : "\n" ) << (mvars->subject==NULL ? "" : "Subject: ") << (mvars->subject==NULL ? "" : mvars->subject) << (mvars->subject==NULL ? "" : "\n" ) << (mvars->fname[0]==NULL ? "" : "Filename 0: ") << (mvars->fname[0]==NULL ? "" : mvars->fname[0]) << (mvars->fname[0]==NULL ? "" : "\n" ) << (mvars->fname[1]==NULL ? "" : "Filename 1: ") << (mvars->fname[1]==NULL ? "" : mvars->fname[1]) << (mvars->fname[1]==NULL ? "" : "\n" ) << (mvars->fname[2]==NULL ? "" : "Filename 2: ") << (mvars->fname[2]==NULL ? "" : mvars->fname[2]) << (mvars->fname[2]==NULL ? "" : "\n" ) << (mvars->fname[3]==NULL ? "" : "Filename 3: ") << (mvars->fname[3]==NULL ? "" : mvars->fname[3]) << (mvars->fname[3]==NULL ? "" : "\n" ) << (mvars->fname[4]==NULL ? "" : "Filename 4: ") << (mvars->fname[4]==NULL ? "" : mvars->fname[4]) << (mvars->fname[4]==NULL ? "" : "\n" ) << (mvars->fname[5]==NULL ? "" : "Filename 5: ") << (mvars->fname[5]==NULL ? "" : mvars->fname[5]) << (mvars->fname[5]==NULL ? "" : "\n" ) << (mvars->fname[6]==NULL ? "" : "Filename 6: ") << (mvars->fname[6]==NULL ? "" : mvars->fname[6]) << (mvars->fname[6]==NULL ? "" : "\n" ) << (mvars->fname[7]==NULL ? "" : "Filename 7: ") << (mvars->fname[7]==NULL ? "" : mvars->fname[7]) << (mvars->fname[7]==NULL ? "" : "\n" ) << (mvars->fname[8]==NULL ? "" : "Filename 8: ") << (mvars->fname[8]==NULL ? "" : mvars->fname[8]) << (mvars->fname[8]==NULL ? "" : "\n" ) << (mvars->fname[9]==NULL ? "" : "Filename 9: ") << (mvars->fname[9]==NULL ? "" : mvars->fname[9]) << (mvars->fname[9]==NULL ? "" : "\n" ) << (mvars->dname[0]==NULL ? "" : "Attachment 0: ") << (mvars->dname[0]==NULL ? "" : mvars->dname[0]) << (mvars->dname[0]==NULL ? "" : "\n" ) << (mvars->dname[1]==NULL ? "" : "Attachment 1: ") << (mvars->dname[1]==NULL ? "" : mvars->dname[1]) << (mvars->dname[1]==NULL ? "" : "\n" ) << (mvars->dname[2]==NULL ? "" : "Attachment 2: ") << (mvars->dname[2]==NULL ? "" : mvars->dname[2]) << (mvars->dname[2]==NULL ? "" : "\n" ) << (mvars->dname[3]==NULL ? "" : "Attachment 3: ") << (mvars->dname[3]==NULL ? "" : mvars->dname[3]) << (mvars->dname[3]==NULL ? "" : "\n" ) << (mvars->dname[4]==NULL ? "" : "Attachment 4: ") << (mvars->dname[4]==NULL ? "" : mvars->dname[4]) << (mvars->dname[4]==NULL ? "" : "\n" ) << (mvars->dname[5]==NULL ? "" : "Attachment 5: ") << (mvars->dname[5]==NULL ? "" : mvars->dname[5]) << (mvars->dname[5]==NULL ? "" : "\n" ) << (mvars->dname[6]==NULL ? "" : "Attachment 6: ") << (mvars->dname[6]==NULL ? "" : mvars->dname[6]) << (mvars->dname[6]==NULL ? "" : "\n" ) << (mvars->dname[7]==NULL ? "" : "Attachment 7: ") << (mvars->dname[7]==NULL ? "" : mvars->dname[7]) << (mvars->dname[7]==NULL ? "" : "\n" ) << (mvars->dname[8]==NULL ? "" : "Attachment 8: ") << (mvars->dname[8]==NULL ? "" : mvars->dname[8]) << (mvars->dname[8]==NULL ? "" : "\n" ) << (mvars->dname[9]==NULL ? "" : "Attachment 9: ") << (mvars->dname[9]==NULL ? "" : mvars->dname[9]) << (mvars->dname[9]==NULL ? "" : "\n" ) << (mvars->mtype[0]==NULL ? "" : "MimeType 0: ") << (mvars->mtype[0]==NULL ? "" : mvars->mtype[0]) << (mvars->mtype[0]==NULL ? "" : "\n" ) << (mvars->mtype[1]==NULL ? "" : "MimeType 1: ") << (mvars->mtype[1]==NULL ? "" : mvars->mtype[1]) << (mvars->mtype[1]==NULL ? "" : "\n" ) << (mvars->mtype[2]==NULL ? "" : "MimeType 2: ") << (mvars->mtype[2]==NULL ? "" : mvars->mtype[2]) << (mvars->mtype[2]==NULL ? "" : "\n" ) << (mvars->mtype[3]==NULL ? "" : "MimeType 3: ") << (mvars->mtype[3]==NULL ? "" : mvars->mtype[3]) << (mvars->mtype[3]==NULL ? "" : "\n" ) << (mvars->mtype[4]==NULL ? "" : "MimeType 4: ") << (mvars->mtype[4]==NULL ? "" : mvars->mtype[4]) << (mvars->mtype[4]==NULL ? "" : "\n" ) << (mvars->mtype[5]==NULL ? "" : "MimeType 5: ") << (mvars->mtype[5]==NULL ? "" : mvars->mtype[5]) << (mvars->mtype[5]==NULL ? "" : "\n" ) << (mvars->mtype[6]==NULL ? "" : "MimeType 6: ") << (mvars->mtype[6]==NULL ? "" : mvars->mtype[6]) << (mvars->mtype[6]==NULL ? "" : "\n" ) << (mvars->mtype[7]==NULL ? "" : "MimeType 7: ") << (mvars->mtype[7]==NULL ? "" : mvars->mtype[7]) << (mvars->mtype[7]==NULL ? "" : "\n" ) << (mvars->mtype[8]==NULL ? "" : "MimeType 8: ") << (mvars->mtype[8]==NULL ? "" : mvars->mtype[8]) << (mvars->mtype[8]==NULL ? "" : "\n" ) << (mvars->mtype[9]==NULL ? "" : "MimeType 9: ") << (mvars->mtype[9]==NULL ? "" : mvars->mtype[9]) << (mvars->mtype[9]==NULL ? "" : "\n" ) << (mvars->fdata[0]==NULL ? "" : "File Data 0: ") << (mvars->fdata[0]==NULL ? "" : "TRUE") << (mvars->fdata[0]==NULL ? "" : "\n" ) << (mvars->fdata[1]==NULL ? "" : "File Data 1: ") << (mvars->fdata[1]==NULL ? "" : "TRUE") << (mvars->fdata[1]==NULL ? "" : "\n" ) << (mvars->fdata[2]==NULL ? "" : "File Data 2: ") << (mvars->fdata[2]==NULL ? "" : "TRUE") << (mvars->fdata[2]==NULL ? "" : "\n" ) << (mvars->fdata[3]==NULL ? "" : "File Data 3: ") << (mvars->fdata[3]==NULL ? "" : "TRUE") << (mvars->fdata[3]==NULL ? "" : "\n" ) << (mvars->fdata[4]==NULL ? "" : "File Data 4: ") << (mvars->fdata[4]==NULL ? "" : "TRUE") << (mvars->fdata[4]==NULL ? "" : "\n" ) << (mvars->fdata[5]==NULL ? "" : "File Data 5: ") << (mvars->fdata[5]==NULL ? "" : "TRUE") << (mvars->fdata[5]==NULL ? "" : "\n" ) << (mvars->fdata[6]==NULL ? "" : "File Data 6: ") << (mvars->fdata[6]==NULL ? "" : "TRUE") << (mvars->fdata[6]==NULL ? "" : "\n" ) << (mvars->fdata[7]==NULL ? "" : "File Data 7: ") << (mvars->fdata[7]==NULL ? "" : "TRUE") << (mvars->fdata[7]==NULL ? "" : "\n" ) << (mvars->fdata[8]==NULL ? "" : "File Data 8: ") << (mvars->fdata[8]==NULL ? "" : "TRUE") << (mvars->fdata[8]==NULL ? "" : "\n" ) << (mvars->fdata[9]==NULL ? "" : "File Data 9: ") << (mvars->fdata[9]==NULL ? "" : "TRUE") << (mvars->fdata[9]==NULL ? "" : "\n" ) << (mvars->body==NULL ? "" : "Body: ") << (mvars->body==NULL ? "" : mvars->body) << (mvars->body==NULL ? "" : "\n" ) << "\"" << endl; //verrstring=verrmsg.str(); std::cerr << verrmsg.str(); /* #ifdef WIN32 if(!mvars->ignerr) { //system("ok.exe ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified...\""); system(verrstring.c_str()); } #else if(!mvars->ignerr) { //system("ok.lnx ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified...\""); system(verrstring.c_str()); } #endif */ return(1); throw; } // Standard exception catch (std::exception& e) { std::cerr << "std::exception: " << e.what() << std::endl; ostringstream serrmsg; std::string serrstring; serrmsg << "ERRORDIALOG \"ERROR SENDING EMAIL\" \"std::exception: " << e.what() << endl << endl << endl << endl << (mvars->from_name==NULL ? "" : "From Name: ") << (mvars->from_name==NULL ? "" : mvars->from_name) << (mvars->from_name==NULL ? "" : "\n" ) << (mvars->from_addr==NULL ? "" : "From Address: ") << (mvars->from_addr==NULL ? "" : mvars->from_addr) << (mvars->from_addr==NULL ? "" : "\n" ) << (mvars->tolist==NULL ? "" : "TO: ") << (mvars->tolist==NULL ? "" : mvars->tolist) << (mvars->tolist==NULL ? "" : "\n" ) << (mvars->cclist==NULL ? "" : "CC: ") << (mvars->cclist==NULL ? "" : mvars->cclist) << (mvars->cclist==NULL ? "" : "\n" ) << (mvars->bcclist==NULL ? "" : "BCC: ") << (mvars->bcclist==NULL ? "" : mvars->bcclist) << (mvars->bcclist==NULL ? "" : "\n" ) << (mvars->subject==NULL ? "" : "Subject: ") << (mvars->subject==NULL ? "" : mvars->subject) << (mvars->subject==NULL ? "" : "\n" ) << (mvars->fname[0]==NULL ? "" : "Filename 0: ") << (mvars->fname[0]==NULL ? "" : mvars->fname[0]) << (mvars->fname[0]==NULL ? "" : "\n" ) << (mvars->fname[1]==NULL ? "" : "Filename 1: ") << (mvars->fname[1]==NULL ? "" : mvars->fname[1]) << (mvars->fname[1]==NULL ? "" : "\n" ) << (mvars->fname[2]==NULL ? "" : "Filename 2: ") << (mvars->fname[2]==NULL ? "" : mvars->fname[2]) << (mvars->fname[2]==NULL ? "" : "\n" ) << (mvars->fname[3]==NULL ? "" : "Filename 3: ") << (mvars->fname[3]==NULL ? "" : mvars->fname[3]) << (mvars->fname[3]==NULL ? "" : "\n" ) << (mvars->fname[4]==NULL ? "" : "Filename 4: ") << (mvars->fname[4]==NULL ? "" : mvars->fname[4]) << (mvars->fname[4]==NULL ? "" : "\n" ) << (mvars->fname[5]==NULL ? "" : "Filename 5: ") << (mvars->fname[5]==NULL ? "" : mvars->fname[5]) << (mvars->fname[5]==NULL ? "" : "\n" ) << (mvars->fname[6]==NULL ? "" : "Filename 6: ") << (mvars->fname[6]==NULL ? "" : mvars->fname[6]) << (mvars->fname[6]==NULL ? "" : "\n" ) << (mvars->fname[7]==NULL ? "" : "Filename 7: ") << (mvars->fname[7]==NULL ? "" : mvars->fname[7]) << (mvars->fname[7]==NULL ? "" : "\n" ) << (mvars->fname[8]==NULL ? "" : "Filename 8: ") << (mvars->fname[8]==NULL ? "" : mvars->fname[8]) << (mvars->fname[8]==NULL ? "" : "\n" ) << (mvars->fname[9]==NULL ? "" : "Filename 9: ") << (mvars->fname[9]==NULL ? "" : mvars->fname[9]) << (mvars->fname[9]==NULL ? "" : "\n" ) << (mvars->dname[0]==NULL ? "" : "Attachment 0: ") << (mvars->dname[0]==NULL ? "" : mvars->dname[0]) << (mvars->dname[0]==NULL ? "" : "\n" ) << (mvars->dname[1]==NULL ? "" : "Attachment 1: ") << (mvars->dname[1]==NULL ? "" : mvars->dname[1]) << (mvars->dname[1]==NULL ? "" : "\n" ) << (mvars->dname[2]==NULL ? "" : "Attachment 2: ") << (mvars->dname[2]==NULL ? "" : mvars->dname[2]) << (mvars->dname[2]==NULL ? "" : "\n" ) << (mvars->dname[3]==NULL ? "" : "Attachment 3: ") << (mvars->dname[3]==NULL ? "" : mvars->dname[3]) << (mvars->dname[3]==NULL ? "" : "\n" ) << (mvars->dname[4]==NULL ? "" : "Attachment 4: ") << (mvars->dname[4]==NULL ? "" : mvars->dname[4]) << (mvars->dname[4]==NULL ? "" : "\n" ) << (mvars->dname[5]==NULL ? "" : "Attachment 5: ") << (mvars->dname[5]==NULL ? "" : mvars->dname[5]) << (mvars->dname[5]==NULL ? "" : "\n" ) << (mvars->dname[6]==NULL ? "" : "Attachment 6: ") << (mvars->dname[6]==NULL ? "" : mvars->dname[6]) << (mvars->dname[6]==NULL ? "" : "\n" ) << (mvars->dname[7]==NULL ? "" : "Attachment 7: ") << (mvars->dname[7]==NULL ? "" : mvars->dname[7]) << (mvars->dname[7]==NULL ? "" : "\n" ) << (mvars->dname[8]==NULL ? "" : "Attachment 8: ") << (mvars->dname[8]==NULL ? "" : mvars->dname[8]) << (mvars->dname[8]==NULL ? "" : "\n" ) << (mvars->dname[9]==NULL ? "" : "Attachment 9: ") << (mvars->dname[9]==NULL ? "" : mvars->dname[9]) << (mvars->dname[9]==NULL ? "" : "\n" ) << (mvars->mtype[0]==NULL ? "" : "MimeType 0: ") << (mvars->mtype[0]==NULL ? "" : mvars->mtype[0]) << (mvars->mtype[0]==NULL ? "" : "\n" ) << (mvars->mtype[1]==NULL ? "" : "MimeType 1: ") << (mvars->mtype[1]==NULL ? "" : mvars->mtype[1]) << (mvars->mtype[1]==NULL ? "" : "\n" ) << (mvars->mtype[2]==NULL ? "" : "MimeType 2: ") << (mvars->mtype[2]==NULL ? "" : mvars->mtype[2]) << (mvars->mtype[2]==NULL ? "" : "\n" ) << (mvars->mtype[3]==NULL ? "" : "MimeType 3: ") << (mvars->mtype[3]==NULL ? "" : mvars->mtype[3]) << (mvars->mtype[3]==NULL ? "" : "\n" ) << (mvars->mtype[4]==NULL ? "" : "MimeType 4: ") << (mvars->mtype[4]==NULL ? "" : mvars->mtype[4]) << (mvars->mtype[4]==NULL ? "" : "\n" ) << (mvars->mtype[5]==NULL ? "" : "MimeType 5: ") << (mvars->mtype[5]==NULL ? "" : mvars->mtype[5]) << (mvars->mtype[5]==NULL ? "" : "\n" ) << (mvars->mtype[6]==NULL ? "" : "MimeType 6: ") << (mvars->mtype[6]==NULL ? "" : mvars->mtype[6]) << (mvars->mtype[6]==NULL ? "" : "\n" ) << (mvars->mtype[7]==NULL ? "" : "MimeType 7: ") << (mvars->mtype[7]==NULL ? "" : mvars->mtype[7]) << (mvars->mtype[7]==NULL ? "" : "\n" ) << (mvars->mtype[8]==NULL ? "" : "MimeType 8: ") << (mvars->mtype[8]==NULL ? "" : mvars->mtype[8]) << (mvars->mtype[8]==NULL ? "" : "\n" ) << (mvars->mtype[9]==NULL ? "" : "MimeType 9: ") << (mvars->mtype[9]==NULL ? "" : mvars->mtype[9]) << (mvars->mtype[9]==NULL ? "" : "\n" ) << (mvars->fdata[0]==NULL ? "" : "File Data 0: ") << (mvars->fdata[0]==NULL ? "" : "TRUE") << (mvars->fdata[0]==NULL ? "" : "\n" ) << (mvars->fdata[1]==NULL ? "" : "File Data 1: ") << (mvars->fdata[1]==NULL ? "" : "TRUE") << (mvars->fdata[1]==NULL ? "" : "\n" ) << (mvars->fdata[2]==NULL ? "" : "File Data 2: ") << (mvars->fdata[2]==NULL ? "" : "TRUE") << (mvars->fdata[2]==NULL ? "" : "\n" ) << (mvars->fdata[3]==NULL ? "" : "File Data 3: ") << (mvars->fdata[3]==NULL ? "" : "TRUE") << (mvars->fdata[3]==NULL ? "" : "\n" ) << (mvars->fdata[4]==NULL ? "" : "File Data 4: ") << (mvars->fdata[4]==NULL ? "" : "TRUE") << (mvars->fdata[4]==NULL ? "" : "\n" ) << (mvars->fdata[5]==NULL ? "" : "File Data 5: ") << (mvars->fdata[5]==NULL ? "" : "TRUE") << (mvars->fdata[5]==NULL ? "" : "\n" ) << (mvars->fdata[6]==NULL ? "" : "File Data 6: ") << (mvars->fdata[6]==NULL ? "" : "TRUE") << (mvars->fdata[6]==NULL ? "" : "\n" ) << (mvars->fdata[7]==NULL ? "" : "File Data 7: ") << (mvars->fdata[7]==NULL ? "" : "TRUE") << (mvars->fdata[7]==NULL ? "" : "\n" ) << (mvars->fdata[8]==NULL ? "" : "File Data 8: ") << (mvars->fdata[8]==NULL ? "" : "TRUE") << (mvars->fdata[8]==NULL ? "" : "\n" ) << (mvars->fdata[9]==NULL ? "" : "File Data 9: ") << (mvars->fdata[9]==NULL ? "" : "TRUE") << (mvars->fdata[9]==NULL ? "" : "\n" ) << (mvars->body==NULL ? "" : "Body: ") << (mvars->body==NULL ? "" : mvars->body) << (mvars->body==NULL ? "" : "\n" ) << "\"" << endl; //serrstring=serrmsg.str(); std::cerr << serrmsg.str(); /* #ifdef WIN32 if(!mvars->ignerr) { //system("ok.exe ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified...\""); system(serrstring.c_str()); } #else if(!mvars->ignerr) { //system("ok.lnx ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified...\""); system(serrstring.c_str()); } #endif */ return(1); throw; } return(0); }