def send(recipients, invoice_ref): """Construct email from Recipient object and send. Args: recipients (list): A list of recipient objects invoice_ref (str): Identifier of the invoice being emailed """ for recipient in recipients: address = recipient.heademail cc_address = recipient.admemail if recipient.send_only_admin: address = recipient.admemail cc_address = "" print("address: {}".format(address)) print("cc_address: {}".format(cc_address)) try: m = Message(account=account, folder=account.sent, subject=('NIC@KCL: Invoice {0}'.format(invoice_ref)), to_recipients=[Mailbox(email_address=address)]) if cc_address: m.cc_recipients = [ Mailbox(email_address=cc_address), ] f = open(recipient.invoice, "r").read() m.body = HTMLBody(f) m.send_and_save() except: print('could not send email about {}'.format(invoice_ref)) pass
def send(recipients, invoice_ref, email_settings, progress=None): """Construct email from Recipient object and send. Parameters ----------- recipients : list A list of recipient objects invoice_ref : str Identifier of the invoice being emailed email_settings : dict configuration settings for exchange server progress: PyQt progress bar """ username = email_settings["username"] password = email_settings["password"] credentials = Credentials(username=username, password=password) config = Configuration( server=email_settings["server"], credentials=credentials ) account = Account( primary_smtp_address=email_settings["from_address"], config=config, autodiscover=False, access_type=DELEGATE ) cc_address = None for rid, recipient in enumerate(recipients): print(recipient.bcode) if email_settings["test_mode"]: to_address = [ Mailbox(email_address=email_settings["test_address"]) ] else: to_address = [ Mailbox(email_address=address) for address in recipient.addresses["to_email"] ] cc_address = [ Mailbox(email_address=address) for address in recipient.addresses["cc_email"] ] if email_settings["copy_manager"]: cc_address.append( Mailbox(email_address=email_settings["manager_address"]) ) if recipient.group.send_only_admin: address = [ Mailbox(email_address=address) for address in recipient.addresses["cc_email"] ] cc_address = "" m = Message( account=account, folder=account.sent, subject=( 'NIC@KCL: Invoice {0}' .format(invoice_ref) ), to_recipients=to_address, cc_recipients=[] ) if cc_address: m.cc_recipients = cc_address print("address: {}".format(m.to_recipients)) print("cc_address: {}".format(m.cc_recipients)) m.body = HTMLBody(recipient.html) m.send_and_save() if progress is not None: progress.emit(rid)