def inform_parent_username_changed(parent, password):
    """
    parent is object
    """
    path_to_templates = config_get_section_attribute('DIRECTORIES', 'path_to_templates')
    parent_email_templates = read_in_templates(path_to_templates + '/parent_username_changed')
    email = Email(config_get_section_attribute('EMAIL', 'domain'))
    email.define_sender('*****@*****.**', "DragonNet Admin")
    email.use_templates(parent_email_templates)
    email.make_subject("Notification of updated SSIS DragonNet username")
    email.add_to(parent.email)
    for student in parent.children:
        if student.is_korean:
            email.add_language('kor')
        if student.is_chinese:
            email.add_language('chi')
    email.add_bcc('*****@*****.**')
    email.add_bcc('*****@*****.**')
    email.define_field('username', parent.email)
    email.define_field('salutation', 'Dear SSIS Parent')
    email.define_field('password', password)

    email.send()
def inform_new_parent(parent):
    """
    parent is object
    """
    path_to_templates = config_get_section_attribute('DIRECTORIES', 'path_to_templates')
    parent_email_templates = read_in_templates(path_to_templates + '/parent_new_account')
    email = Email(config_get_section_attribute('EMAIL', 'domain'))
    email.define_sender('*****@*****.**', "DragonNet Admin")
    email.use_templates(parent_email_templates)
    email.make_subject("Your SSIS DragonNet Parent Account")
    for parent_email in parent.emails:
        email.add_to(parent_email)
    for student in parent.children:
        if student.is_korean:
            email.add_language('kor')
        if student.is_chinese:
            email.add_language('chi')
    email.add_bcc('*****@*****.**')
    email.add_bcc('*****@*****.**')
    email.define_field('username', parent.email)
    email.define_field('salutation', 'Dear Parent')

    email.send()
            if match:
                to_who = match.group(1)
                where = line.index(search_item)
                message = line[ (where+ len(search_item)+1): -1]
                match = re.search("orig_to=<(.*?)>", line)
                if match:
                    orig_to = match.group(1)
                    if args.stdout:
                        print(to_who)
                        print(orig_to)
                    bounce = bounces[to_who]
                    bounce.key = escape(to_who)
                    bounce.count += 1
                    bounce.messages.append(escape(message))

email = Email(domain)
email.add_to('*****@*****.**')
email.make_subject("Bounces")
email.define_sender('DragonNet Admin <*****@*****.**>')
html = "<html>"
for bounce in bounces:
    ns = NS(bounces[bounce])
    ns.messages = "<br />".join(ns.messages)
    ns.BR = '<br />'
    html += ns('<p>Email{COLON}{SPACE}{key}{SPACE} ' \
        'How many bounces{COLON}{SPACE}{count}{BR}<i>{messages}</i></p>')
html+= "</html>"
email.define_content(html)
if not args.no_emails:
    email.send()
if args.stdout:
def inform_new_student(student):
    path_to_templates = config_get_section_attribute('DIRECTORIES', 'path_to_templates')
    student_email_templates = read_in_templates(path_to_templates + '/student_new_account')
    sender = '"DragonNet Admin" <*****@*****.**>'
    sf = NS(student)
    email = Email(config_get_section_attribute('EMAIL', 'domain'))
    email.define_sender('*****@*****.**', "DragonNet Admin")
    email.use_templates(student_email_templates)
    email.make_subject(sf("New Student in Homeroom {homeroom}, {lastfirst}"))
    homeroom_teacher = student.homeroom_teacher
    if homeroom_teacher:
          email.add_to(homeroom_teacher.email)
    # ssis does not want this feature
    #for guardian_email in student.guardian_emails:
    #      email.add_to(guardian_email)
    # for class_teacher in student.get_teachers_as_list():
    #       email.add_to(class_teacher + '@ssis-suzhou.net')
    # if student.grade in [11, 12]:
    #       email.add_cc('*****@*****.**')
    #       email.add_cc('*****@*****.**')
    # elif student.grade in [6, 7, 8, 9, 10]:
    #       email.add_cc('*****@*****.**')
    email.add_bcc('*****@*****.**')
    email.add_bcc('*****@*****.**')
    email.define_fields(sf)

    email.send()
    def email(self, email: "List or not", cc=None, bcc=None):
        """
        USE THE Email API TO SEND AN EMAIL
        HANDLES IT WHETHER OR NOT LISTS ARE PASSED
        """
        e = Email(self.server)
        e.define_sender(self.sender)
        if isinstance(email, list):
            for item in email:
                e.add_to(item)
        else:
            e.add_to(email)

        if cc:
           if isinstance(cc, list):
               for item in cc:
                   e.add_cc(item)
           else:
               e.add_cc(cc)

        if bcc:
            if isinstance(bcc, list):
                for item in bcc:
                    e.add_bcc(item)
            else:
                e.add_bcc(bcc)

        e.define_subject(self.get_subject())
        e.define_content(self.get_html())

        try:
            e.send()
        except smtplib.SMTPRecipientsRefused:
            self.print_email(email)