parser.add_argument('-S','--smtpserver',dest='smtpserver',default='localhost',help='SMTP server to use (default: "localhost"); port can be specified with "<host>:<port>" notation and takes precedence over implied ports and port specification')
parser.add_argument('--smtpport',dest='smtpport',default=0,type=int,help='SMTP port to use (default: 25); takes precedence over implied ports')
parser.add_argument('--smtpuser',dest='smtpuser',default=None,help='SMTP user to login with (default: none); implies TLS (port 465) unless STARTTLS is set as well')
parser.add_argument('--smtppass',dest='smtppass',default=None,help='SMTP password to login with (default: none); implies TLS (port 465) unless STARTTLS is set as well; will be queried interactively if set to "-"')
parser.add_argument('--smtpuser',dest='smtpuser',default=None,help='SMTP user to login with (default: none); implies TLS (port 465) unless STARTTLS is set as well')
parser.add_argument('--smtppass',dest='smtppass',default=None,help='SMTP password to login with (default: none); implies TLS (port 465) unless STARTTLS is set as well; will be queried interactively if set to "-"')
parser.add_argument('--starttls',dest='starttls',default=False,action='store_true',help='login using STARTTLS (default: False); implies port 587')
# Import dependencies for actual SMTP interaction if necessary
ifnotargs.dryrun:
importsmtplib
# Import dependencies for HTTTP interaction if necessary
ifnotargs.webserver:
importrequests
# Import dependencies for attachment file-magic if necessary
ifargs.attach:
importmagic
# Import dependencies for mail signing if necessary
ifargs.sign:
importmagic
matchargs.sign:
case'gpg'|'gpgsm':
# Import dependencies for GPG-based mail signing if necessary
fromemail.mime.multipartimportMIMEMultipart
importgnupg
case'openssl':
# Import dependencies for OpenSSL-based mail signing if necessary
fromM2CryptoimportBIO,Rand,SMIME
if (len(args.smtpserver.split(':'))==2)or \
(']:'inargs.smtpserver):
args.smtpport=args.smtpserver.rsplit(':',1)[1]
...
...
@@ -132,6 +157,14 @@ if args.verbose:
print(f'Using "{args.input.format_map(SafeDict(basedir=args.basedir,campaign=args.campaign,infix=args.infix,webserver=args.webserver,salt=args.salt))}" as input file.')
print(f'Using "{args.output.format_map(SafeDict(basedir=args.basedir,campaign=args.campaign,infix=args.infix,webserver=args.webserver,salt=args.salt))}" as output file name template.')
print(f'Using "{args.salt.format_map(SafeDict(basedir=args.basedir,campaign=args.campaign,infix=args.infix,webserver=args.webserver,salt=args.salt))}" as salt.')
ifargs.sign:
print(f'Using "{args.sign}" as signature method.')
ifargs.signas:
print(f'Using "{args.signas}" as signing key.')
else:
print(f'Using auto-selected signing key.')
else:
print(f'Using no signature method.')
print(f'Using "{args.subject.format_map(SafeDict(basedir=args.basedir,campaign=args.campaign,infix=args.infix,webserver=args.webserver,salt=args.salt))}" as mail subject.')
print(f'Using "{args.template.format_map(SafeDict(basedir=args.basedir,campaign=args.campaign,infix=args.infix,webserver=args.webserver,salt=args.salt))}" as template file.')
print(f'Using "{args.to.format_map(SafeDict(basedir=args.basedir,campaign=args.campaign,infix=args.infix,webserver=args.webserver,salt=args.salt))}" as recipient mail address.')