Skip to content

Indira-kumar/pixelpulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PixelPulse - An email tracker

πŸ“— Table of Contents

About the Project

1. Abstract:

The goal of this project is to develop an email tracking and resend system that detects whether the recipient has read a sent email and takes appropriate actions based on their response. The system addresses the common issue of unanswered emails by automatically resending the email if it remains unseen, or if a reply has not been received within a week.

2. Problem Statement:

The current email communication process lacks a reliable mechanism to determine whether recipients have read sent emails, leading to uncertainties and delays in receiving responses. This poses a challenge for individuals and organizations who depend on timely communication for efficient workflow and effective collaboration. Furthermore, there is no automated system in place to resend emails that have not been seen or to prompt responses in case of prolonged silence.

3. Proposed Solution:

This project is in line with the Rethink theme.

Email Tracking: The system will utilize tracking technologies to monitor whether recipients have read sent emails. It will provide real-time notifications to senders, indicating when an email has been opened and read. Resend Automation: If an email remains unseen after a specified period or if a reply has not been received within a week, the system will automatically initiate a resend action. This proactive approach ensures that important emails are not missed or overlooked by recipients.

Clear Status Notifications: The system will provide clear and informative status notifications to senders, indicating the current read status and the actions taken for each email. This transparency empowers users with a comprehensive overview of their email communications.

πŸ‘₯ Authors

πŸ‘€ Indira Kumar A K

πŸ‘€ Gayathri Sthanusubramonian

πŸ‘€ Keshav Rathinavel

πŸ‘€ Anshuman Sahoo

🀝 Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

⭐️ Show your support

Give a ⭐️ if you like this project!

Setup & Usage

Basic Requirements

  • Python3 and Pip

  • Git

  • Heroku Account & Heroku CLI (or suitable platform)
    If you're willing to use Heroku, here they have explained all the steps for getting started with python apps.

  • Code Editor (such as VS Code)

Installation

  1. First clone or download this repository as a Zip file to your local machine.

  2. Navigate to the directory.

    cd pixelpulse
  3. Create a virtual environment.

    python3 -m venv venv
  4. Activate virtual environment.

    Linux:

     source venv/bin/activate

    Windows:

    venv\Scripts\activate
  5. Install dependencies.

    pip install -r requirements.txt
  6. Change the time zone used in routes.py: (Default value is Asia/Colombo)

    # Line 38
    TIMEZONE = "Your-Timezone"

    To choose the correct time zone, you can query all the supported time zones like this; open a separate python shell and run the following code.

    import pytz
    pytz.all_timezones
  7. As we use Firebase Realtime Database and Firebase Authentication, you have to create a Firebase project and obtain the credentials. Visit Firebase Console and create a new project.
    Then go to the project settings and click on the Service Accounts tab. Then click on the Generate New Private Key button. This will download a JSON file containing the credentials. Rename the file to credentials.json and place it in the root directory of the project.

  8. Now you have to create a new Firebase Authentication user. To do that, you have to go to the Authentication tab in the Firebase Console. Then click on the Set up sign-in method button. Then click on the Email/Password tab and enable it. Then click on the Users tab and click on the Add User button. Enter the email and password of the user account you want to create. Then click on the Add User button.

  9. Now you have to create a new Firebase Realtime Database. To do that, you have to go to the Database tab in the Firebase Console. Then click on the Create Database button. Then select the database location and click on the Next button. Then change the rules as follows and click on the Enable button:

    {
      "rules": {
        "MailTrackData": {
          "Users": {
            "$uid": {
              ".read": "auth !== null && auth.uid === $uid",
              ".write": "auth !== null && auth.uid === $uid"
            }
          },
    
          "LinkHits": {
            ".read": false,
            ".write": true
          }
        }
      }
    }
  10. Now go to project settings again and under the General tab you can find the Web API Key. And also,you are able to find the Database URL under the SDK setup and configuration tab there.
    (Ex: databaseURL: "https://your-app-default-rtdb.asia-southeast1.firebasedatabase.app")
    Take a note of both of them since we will need them on the next step.

After that you can either test the application in your local machine or setup your selected platform, as you wish.

Testing/Using on your Local Machine | Network

Before running the application, you have to set the following environment variables: (Just replace the values with your own and run the commands inside the activated virtual environment - No commas on Windows)

Linux & macOS:

 export FLASK_ENV="development"
 export FIREBASE_API_KEY="Your-Firebase-API-Key"
 export FIREBASE_DB_URL="Your-Firebase-Database-URL"
 export SECRET_KEY="replace-this-text-with-a-suitable-key"

Windows:

 set FLASK_ENV=development
 set FIREBASE_API_KEY=Your-Firebase-API-Key
 set FIREBASE_DB_URL=Your-Firebase-Database-URL
 set SECRET_KEY=replace-this-text-with-a-suitable-key

Then run the application using the following command:

flask run

Navigate to localhost:5000 in your browser.
If another program is already utilizing port 5000, Address already in use error will be displayed. If that happens you can specify a different port like this:

flask run --port 5001

A login page will be displayed.
Input your newly created account's email & password and that's it!

Steps to create a tracking link for your email.

  1. Visit the homepage of the app and sign into your account.
Login Screen
  1. First add a suitable title for your message. You can add the subject of the specific email which will make it easier to identified at later times.
Create Entry
  1. Then click 'Generate'

  2. Then, you can drag & drop the tracking image to the end of your message body. (DO NOT copy & paste the image since it will insert your image as a base64 image to the email body) Otherwise, you can manipulate the content of the email body using Developer Tools in browser.

  3. Everything's done! Now send your email and wait for the results to appear. (you need to refresh your browser to load new entries)

How to use a Geo Location API

Using a Geo Location API, you can collect additional information about the recipient such as;

  • Approximate location
  • Country
  • ISP ( Internet Service Provider)
  • VPN/Tor Usage ...

In routes.py line 70 to 75 contains a simple API usage that can be altered according to your opinions. Please note that ipwhois service has certain limitations (like amount of requests) which may eventually cause errors. So, you can choose a better API which fit into your needs.

Special note about G-Mail

Since Google uses a special technique, "Image Proxies" to deliver images; this pixel based tracking method is not suitable to gather additional information about the recipients who use G-Mail. Instead of recipient's IP address and User-Agent, you will receive Google Image Proxy’s UA (User-Agent) and IP address which looks like this:

Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)

But, on the bright side, you can still get the resource accessed date and time!

Why not using cookies for tracking?

Yes, you can set cookies for additional/accurate data collection. But they represent as third party cookies within devices. Most of the web browsers/platforms block such cookies by default. [maybe not Chrome yet πŸ˜‰] So, it's the death of 3rd party cookies.
Update: Since some browsers/platforms allow 3rd party cookies, we are going to implement a cookie based tracking method in the future.

License & Copyrights

The MIT License

This program is free software: you can redistribute it and/or modify it under the terms of the MIT License

Refer to the LICENSE file for more details.

Heroku, GMail, ipwhois, VS Code, Chrome are copyrights and/or trademarks of their respective owners.

Disclaimer

Tracking other users actions across any platform may considered as violation of their privacy. So, kindly use this in a responsible manner.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published