diff --git a/src/sbbs3/ctrl/MailCfgDlgUnit.cpp b/src/sbbs3/ctrl/MailCfgDlgUnit.cpp index 96b40c132259fb6b28dda9b0bc783f360ae7b0c3..204b630606965605c2bfc0867822343a35a176ec 100644 --- a/src/sbbs3/ctrl/MailCfgDlgUnit.cpp +++ b/src/sbbs3/ctrl/MailCfgDlgUnit.cpp @@ -1,12 +1,10 @@ /* Synchronet Control Panel (GUI Borland C++ Builder Project for Win32) */ -/* $Id: MailCfgDlgUnit.cpp,v 1.34 2018/03/05 05:35:13 rswindell Exp $ */ - /**************************************************************************** * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -15,21 +13,9 @@ * See the GNU General Public License for more details: gpl.txt or * * http://www.fsf.org/copyleft/gpl.html * * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * * For Synchronet coding style and modification guidelines, see * * http://www.synchro.net/source.html * * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * * Note: If this box doesn't appear square, then you need to fix your tabs. * ****************************************************************************/ @@ -107,7 +93,6 @@ void __fastcall TMailCfgDlg::FormShow(TObject *Sender) UseSubPortCheckBox->Checked=MainForm->mail_startup.options&MAIL_OPT_USE_SUBMISSION_PORT; TLSSubPortCheckBox->Checked=MainForm->mail_startup.options&MAIL_OPT_TLS_SUBMISSION; - DefCharsetEdit->Text=AnsiString(MainForm->mail_startup.default_charset); RelayServerEdit->Text=AnsiString(MainForm->mail_startup.relay_server); RelayAuthNameEdit->Text=AnsiString(MainForm->mail_startup.relay_user); RelayAuthPassEdit->Text=AnsiString(MainForm->mail_startup.relay_pass); @@ -236,8 +221,6 @@ void __fastcall TMailCfgDlg::OKBtnClick(TObject *Sender) MainForm->mail_startup.rescan_frequency=RescanFreqEdit->Text.ToIntDef(MAIL_DEFAULT_RESCAN_FREQUENCY); MainForm->mail_startup.max_concurrent_connections=MaxConConEdit->Text.ToIntDef(0); - SAFECOPY(MainForm->mail_startup.default_charset - ,DefCharsetEdit->Text.c_str()); SAFECOPY(MainForm->mail_startup.default_user ,DefaultUserEdit->Text.c_str()); if(isalnum(*DNSServerEdit->Text.c_str())) @@ -434,8 +417,6 @@ void __fastcall TMailCfgDlg::SendMailCheckBoxClick(TObject *Sender) OutboundSoundEdit->Enabled=checked; OutboundSoundLabel->Enabled=checked; OutboundSoundButton->Enabled=checked; - DefCharsetLabel->Enabled=checked; - DefCharsetEdit->Enabled=checked; ConnectTimeoutLabel->Enabled=checked; ConnectTimeoutEdit->Enabled=checked; diff --git a/src/sbbs3/ctrl/MailCfgDlgUnit.dfm b/src/sbbs3/ctrl/MailCfgDlgUnit.dfm index 359c1b518e215e27631837a367f4e00d6b587b42..53f164514fd323dbcf3a7804d076b8ce3898f0b6 100644 --- a/src/sbbs3/ctrl/MailCfgDlgUnit.dfm +++ b/src/sbbs3/ctrl/MailCfgDlgUnit.dfm @@ -482,14 +482,6 @@ object MailCfgDlg: TMailCfgDlg Height = 13 Caption = 'DNS Server' end - object DefCharsetLabel: TLabel - Left = 7 - Top = 62 - Width = 85 - Height = 19 - AutoSize = False - Caption = 'Default Charset' - end object ConnectTimeoutLabel: TLabel Left = 7 Top = 146 @@ -579,16 +571,6 @@ object MailCfgDlg: TMailCfgDlg TabOrder = 0 OnClick = SendMailCheckBoxClick end - object DefCharsetEdit: TEdit - Left = 92 - Top = 62 - Width = 65 - Height = 21 - Hint = 'Character set specified for locally generated e-mail messages' - ParentShowHint = False - ShowHint = True - TabOrder = 3 - end object ConnectTimeoutEdit: TEdit Left = 92 Top = 146 diff --git a/src/sbbs3/ctrl/MailCfgDlgUnit.h b/src/sbbs3/ctrl/MailCfgDlgUnit.h index 258490faee238dae494057ce0f7eb58620f551b7..73f96d23a000a55dc7c53478274121eb626c9023 100644 --- a/src/sbbs3/ctrl/MailCfgDlgUnit.h +++ b/src/sbbs3/ctrl/MailCfgDlgUnit.h @@ -1,7 +1,5 @@ /* Synchronet Control Panel (GUI Borland C++ Builder Project for Win32) */ -/* $Id: MailCfgDlgUnit.h,v 1.22 2018/07/24 01:11:29 rswindell Exp $ */ - /**************************************************************************** * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * @@ -15,21 +13,9 @@ * See the GNU General Public License for more details: gpl.txt or * * http://www.fsf.org/copyleft/gpl.html * * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * * For Synchronet coding style and modification guidelines, see * * http://www.synchro.net/source.html * * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * * Note: If this box doesn't appear square, then you need to fix your tabs. * ****************************************************************************/ @@ -140,8 +126,6 @@ __published: TEdit *RelayAuthPassEdit; TTabSheet *AdvancedTabSheet; TCheckListBox *AdvancedCheckListBox; - TLabel *DefCharsetLabel; - TEdit *DefCharsetEdit; TLabel *SubPortLabel; TEdit *SubPortEdit; TCheckBox *DebugHeadersCheckBox; diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index a0c7522aa36ead374ed313f999e567d01041d2f7..93037dc07aa0d5e15584877ced3bcd2e362a0e5f 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -665,7 +665,6 @@ static ulong sockmimetext(SOCKET socket, const char* prot, CRYPT_SESSION sess, s char date[64]; char* p; char* np; - char* content_type=NULL; int i; int s; ulong lines; @@ -798,18 +797,24 @@ static ulong sockmimetext(SOCKET socket, const char* prot, CRYPT_SESSION sess, s } for(i=0;i<msg->total_hfields;i++) { if(msg->hfield[i].type==RFC822HEADER) { - if(strnicmp((char*)msg->hfield_dat[i],"Content-Type:",13)==0) - content_type=msg->hfield_dat[i]; if(!sockprintf(socket,prot, sess,"%s",(char*)msg->hfield_dat[i])) return(0); } } + const char* charset = msg->text_charset; + if(charset == NULL) { + if(smb_msg_is_utf8(msg) || (msg->hdr.auxattr & MSG_HFIELDS_UTF8)) + charset = "UTF-8"; + else if(str_is_ascii(msgtxt)) + charset = "US-ASCII"; + else + charset = "IBM437"; + } + /* Default MIME Content-Type for non-Internet messages */ - if(msg->from_net.type!=NET_INTERNET && content_type==NULL) { - const char* charset = smb_msg_is_utf8(msg) ? "UTF-8" : startup->default_charset; - if(*charset) - sockprintf(socket,prot,sess,"Content-Type: text/plain; charset=%s", charset); - sockprintf(socket,prot,sess,"Content-Transfer-Encoding: 8bit"); + if(msg->from_net.type!=NET_INTERNET && msg->content_type==NULL) { + sockprintf(socket,prot,sess, "Content-Type: text/plain; charset=%s", charset); + sockprintf(socket,prot,sess, "Content-Transfer-Encoding: 8bit"); } if(strListCount(file_list)) { /* File attachments */ @@ -817,7 +822,7 @@ static ulong sockmimetext(SOCKET socket, const char* prot, CRYPT_SESSION sess, s sockprintf(socket,prot,sess,""); mimeblurb(socket,prot,sess,mime_boundary); sockprintf(socket,prot,sess,""); - mimetextpartheader(socket,prot,sess,mime_boundary, startup->default_charset); + mimetextpartheader(socket,prot,sess,mime_boundary, msg->text_subtype, charset); } if(!sockprintf(socket,prot,sess,"")) /* Header Terminator */ return(0); @@ -1690,8 +1695,11 @@ static void pop3_thread(void* arg) } msg.hdr.attr|=MSG_DELETE; - if((i=smb_putmsg(&smb,&msg))==SMB_SUCCESS && msg.hdr.auxattr&MSG_FILEATTACH) - delfattach(&scfg,&msg); + if((i=smb_putmsg(&smb,&msg))==SMB_SUCCESS && msg.hdr.auxattr&MSG_FILEATTACH) { + if(!delfattach(&scfg,&msg)) + lprintf(LOG_ERR, "%04d %s <%s> !ERROR %d deleting attachment: %s" + ,socket, client.protocol, user.alias, errno, msg.subj); + } smb_unlockmsghdr(&smb,&msg); smb_unlocksmbhdr(&smb); smb_freemsgmem(&msg); @@ -5041,8 +5049,11 @@ BOOL bounce(SOCKET sock, smb_t* smb, smbmsg_t* msg, char* err, BOOL immediate) msg->hdr.attr|=MSG_DELETE; i=smb_updatemsg(smb,msg); - if(msg->hdr.auxattr&MSG_FILEATTACH) - delfattach(&scfg,msg); + if(msg->hdr.auxattr&MSG_FILEATTACH) { + if(!delfattach(&scfg,msg)) + lprintf(LOG_ERR, "%04d SEND !ERROR %d deleting attachment: %s" + ,sock, errno, msg->subj); + } if(i!=SMB_SUCCESS) { lprintf(LOG_ERR,"%04d SEND !BOUNCE ERROR %d (%s) deleting message" ,sock, i, smb->last_error); @@ -5805,8 +5816,11 @@ static void sendmail_thread(void* arg) if((i=smb_updatemsg(&smb,&msg))!=SMB_SUCCESS) lprintf(LOG_ERR,"%04d %s !ERROR %d (%s) deleting message #%u" ,sock, prot, i, smb.last_error, msg.hdr.number); - if(msg.hdr.auxattr&MSG_FILEATTACH) - delfattach(&scfg,&msg); + if(msg.hdr.auxattr&MSG_FILEATTACH) { + if(!delfattach(&scfg,&msg)) + lprintf(LOG_ERR, "%04d %s !ERROR %d deleting attachment: %s" + ,sock, prot, errno, msg.subj); + } /* QUIT */ sockprintf(sock,prot,session,"QUIT"); diff --git a/src/sbbs3/mailsrvr.h b/src/sbbs3/mailsrvr.h index 95791bbd40636375d81e5abb1215a6f540ac8296..2dac0e8a8d302d6d1b1aceea6e2dd2b2ce6cacd4 100644 --- a/src/sbbs3/mailsrvr.h +++ b/src/sbbs3/mailsrvr.h @@ -1,8 +1,5 @@ /* Synchronet Mail (SMTP/POP3/SendMail) server */ -/* $Id: mailsrvr.h,v 1.88 2019/03/22 21:28:27 rswindell Exp $ */ -// vi: tabstop=4 - /**************************************************************************** * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * @@ -16,21 +13,9 @@ * See the GNU General Public License for more details: gpl.txt or * * http://www.fsf.org/copyleft/gpl.html * * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * * For Synchronet coding style and modification guidelines, see * * http://www.synchro.net/source.html * * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * * Note: If this box doesn't appear square, then you need to fix your tabs. * ****************************************************************************/ @@ -102,7 +87,6 @@ typedef struct { char inbound_sound[128]; char outbound_sound[128]; char pop3_sound[128]; - char default_charset[128]; char newmail_notice[256]; char forward_notice[256]; diff --git a/src/sbbs3/mime.c b/src/sbbs3/mime.c index 6a94387e89e0b440671d03ec9958cbfe5d52b4f3..fe43c6f3c6ae88e1ab9f32c7fba3ca9ebf86efb0 100644 --- a/src/sbbs3/mime.c +++ b/src/sbbs3/mime.c @@ -1,7 +1,5 @@ /* Synchronet MIME functions, originally written/submitted by Marc Lanctot */ -/* $Id: mime.c,v 1.12 2018/07/20 01:34:36 rswindell Exp $ */ - /**************************************************************************** * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * @@ -15,21 +13,9 @@ * See the GNU General Public License for more details: gpl.txt or * * http://www.fsf.org/copyleft/gpl.html * * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * * For Synchronet coding style and modification guidelines, see * * http://www.synchro.net/source.html * * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * * Note: If this box doesn't appear square, then you need to fix your tabs. * ****************************************************************************/ @@ -81,14 +67,15 @@ void mimeblurb(SOCKET socket, const char* prot, int sess, char* boundary) sockprintf(socket,prot,sess,""); } -void mimetextpartheader(SOCKET socket, const char* prot, int sess, char* boundary, const char* charset) +void mimetextpartheader(SOCKET socket, const char* prot, int sess, char* boundary + ,const char* text_subtype, const char* charset) { - if(charset == NULL || *charset == 0) - charset = "iso-8859-1"; + if(text_subtype == NULL || *text_subtype == '\0') + text_subtype = "plain"; sockprintf(socket,prot,sess,"--%s",boundary); - sockprintf(socket,prot,sess,"Content-Type: text/plain;"); + sockprintf(socket,prot,sess,"Content-Type: text/%s;", text_subtype); sockprintf(socket,prot,sess," charset=\"%s\"", charset); - sockprintf(socket,prot,sess,"Content-Transfer-Encoding: 7bit"); + sockprintf(socket,prot,sess,"Content-Transfer-Encoding: 8bit"); } BOOL base64out(SOCKET socket, const char* prot, int sess, char* pathfile) diff --git a/src/sbbs3/mime.h b/src/sbbs3/mime.h index fec02eddb6c841443c5c002db0d5cc324ed13306..9a66c0a4b723ce21498c1a15a39ba11a9ad4fdfb 100644 --- a/src/sbbs3/mime.h +++ b/src/sbbs3/mime.h @@ -1,7 +1,5 @@ /* Synchronet MIME functions, originally written/submitted by Marc Lanctot */ -/* $Id: mime.h,v 1.6 2018/07/20 01:34:36 rswindell Exp $ */ - /**************************************************************************** * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * @@ -15,21 +13,9 @@ * See the GNU General Public License for more details: gpl.txt or * * http://www.fsf.org/copyleft/gpl.html * * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * * For Synchronet coding style and modification guidelines, see * * http://www.synchro.net/source.html * * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * * Note: If this box doesn't appear square, then you need to fix your tabs. * ****************************************************************************/ @@ -40,7 +26,7 @@ char * mimegetboundary(void); void mimeheaders(SOCKET socket, const char* prot, int sess, char * boundary); void mimeblurb(SOCKET socket, const char* prot, int sess, char * boundary); -void mimetextpartheader(SOCKET socket, const char* prot, int sess, char * boundary, const char* charset); +void mimetextpartheader(SOCKET socket, const char* prot, int sess, char * boundary, const char* text_subtype, const char* charset); BOOL mimeattach(SOCKET socket, const char* prot, int sess, char * boundary, char * pathfile); void endmime(SOCKET socket, const char* prot, int sess, char * boundary); diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c index bd9011be7d232a9b0582e331816da1e80a6d1c4c..6404d597e59b91c6721a7e8101c828c1d1ea1aad 100644 --- a/src/sbbs3/sbbs_ini.c +++ b/src/sbbs3/sbbs_ini.c @@ -533,9 +533,6 @@ void sbbs_read_ini( SAFECOPY(mail->default_user ,iniGetString(list,section,"DefaultUser",nulstr,value)); - SAFECOPY(mail->default_charset - ,iniGetString(list,section,"DefaultCharset",nulstr,value)); - SAFECOPY(mail->dnsbl_hdr ,iniGetString(list,section,"DNSBlacklistHeader","X-DNSBL",value)); SAFECOPY(mail->dnsbl_tag @@ -1038,9 +1035,6 @@ BOOL sbbs_write_ini( if(!iniSetString(lp,section,"DNSServer",mail->dns_server,&style)) break; - if(!iniSetString(lp,section,"DefaultCharset",mail->default_charset,&style)) - break; - if(!iniSetString(lp,section,"DefaultUser",mail->default_user,&style)) break;