def register_member(self, reg):
        random_string = generate_random_string()
        while Member.objects.filter(temporary_web_id=random_string).count() > 0:
            # Preventing duplication errors
            random_string = generate_random_string()

        # Make the 'added' date timezone-aware.
        added_date = datetime.strptime(reg['date'], '%Y-%m-%d %H:%M:%S')

        # Create and configure member
        member = Member()
        member.added = pytz.timezone(settings.TIME_ZONE).localize(added_date)
        member.ssn = reg['ssn']
        member.name = reg['name']
        member.email = reg['email']
        merge_national_registry_info(member, reg['national'], timezone.now())
        member.temporary_web_id = random_string
        member.temporary_web_id_timing = timezone.now()

        # Save member to database
        stdout.write('* Registering member...')
        stdout.flush()
        member.save()
        stdout.write(' done\n')

        self.process_groups(reg, member)

        # Send confirmation message
        message = InteractiveMessage.objects.get(interactive_type='registration_received', active=True)
        body = message.produce_links(member.temporary_web_id)

        # Save the start of the delivery attempt
        delivery = InteractiveMessageDelivery()
        delivery.interactive_message = message
        delivery.member = member
        delivery.email = member.email
        delivery.timing_start = timezone.now()
        delivery.save()

        # Actually send the message
        stdout.write('* Sending confirmation email...')
        stdout.flush()
        quick_mail(member.email, message.subject, body)
        stdout.write(' done\n')

        # Update the delivery
        delivery.timing_end = timezone.now()
        delivery.save()