import smtplib from . import interface import email def hook_extract_email_from_content(context): context['email'] = email.message_from_bytes(context['content']) def hook_extract_listname(context): email = context['email'] context['listaddress'] = email['To'] context['listname'] = context['listaddress'].split('@')[0] print('found listname: {}'.format(context['listname'])) def hook_check_ml_restrictions(context): pass def hook_validate_poster(context): pass def hook_process_subscribe_queries(context): pass def hook_modify_reply_to(context): email = context['email'] email['Reply-To'] = context['listaddress'] def hook_generate_rcpt_list(context): listname = context.get('listname', None) if not listname: raise interface.HookStopIteration('list name not found') recipients_filename = ''.join([listname, '-recipients.txt']) try: with open(recipients_filename, encoding='utf8') as fi: recipients = [recipient for recipient in fi] context['recipients'] = recipients except FileNotFoundError as e: n = interface.HookAbortError('recipients list not found') n.args += ({'listname': listname, 'recipients_filename': recipients_filename}, ) raise n from e def hook_send_all(context): listaddress = context.get('listaddress', None) if not listaddress: raise interface.HookStopIteration('list address not found') recipients = context.get('recipients', None) if not recipients: raise interface.HookStopIteration() print('server_smtp:', context['conf']['smtp.server']) with smtplib.SMTP('devys.org') as smtp_server: #smtp_server.set_debuglevel(1) smtp_server.send_message(context['email'], from_addr=listaddress, to_addrs=context['recipients'])