Skip to content

Commit e70ec73

Browse files
committed
Update README
1 parent 8116ce1 commit e70ec73

File tree

7 files changed

+164
-28
lines changed

7 files changed

+164
-28
lines changed

README.md

Lines changed: 89 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,91 @@
1-
# KnowEmail
2-
An Open Source Email Verifier & Validator
1+
<div align="center">
32

4-
### Maintainer - [@Deadpool2000](https://github.com/Deadpool2000)
3+
<picture>
4+
<img alt="knowemaill logo" src="src/logo.png" width="100%">
5+
</picture>
56

6-
![Image](https://github.com/user-attachments/assets/41dbb5cc-809e-4b7c-970d-f19a1fa938f1)
7+
An Open Source Email Verifier &amp; Validator.
8+
<h3>
9+
By [OpenInitia](https://github.com/OpenInitia)
10+
</h3>
11+
12+
Maintainer - [@Deadpool2000](https://github.com/Deadpool2000)
13+
14+
[![GitHub language](https://img.shields.io/github/languages/top/OpenInitia/KnowEmail)](https://github.com/OpenInitia/KnowEmail)
15+
[![GitHub Repo stars](https://img.shields.io/github/stars/OpenInitia/KnowEmail)](https://img.shields.io/github/stars/OpenInitia/KnowEmail)
16+
[![GitHub issues](https://img.shields.io/github/issues/OpenInitia/KnowEmail)](https://github.com/OpenInitia/KnowEmail/issues)
17+
[![GitHub contributors](https://img.shields.io/github/contributors/OpenInitia/KnowEmail)](https://github.com/OpenInitia/KnowEmail/graphs/contributors)
18+
[![GitHub license](https://img.shields.io/github/license/OpenInitia/KnowEmail)](https://github.com/OpenInitia/KnowEmail/blob/main/LICENSE)
19+
20+
21+
<picture>
22+
<img alt="knowemaill logo" src="src/knowemail.png" width="100%">
23+
</picture>
24+
</div>
25+
26+
KnowEmail is a robust, open-source email verification and validation tool designed to ensure that email addresses in their applications are valid, safe, and properly formatted. Whether you're looking to reduce spam, improve data quality, or simply verify user input, KnowEmail offers a reliable solution for your email verification needs.
27+
28+
## Table of Contents
29+
30+
- [Features](#features)
31+
- [Installation](#installation)
32+
- [Usage](#usage)
33+
- [Contributing](#contributing)
34+
- [License](#license)
35+
- [Contact](#contact)
36+
37+
## Features
38+
39+
- **Email Syntax Validation:** Ensures the email address adheres to proper format.
40+
- **Domain Verification:** Checks for the existence of the email's domain and associated DNS records.
41+
- **MX Record Check:** Confirms that the email domain is configured to receive emails.
42+
- **Real-time Verification:** Provides quick and accurate results.
43+
- **Extensible Architecture:** Easily integrated and extended to meet custom requirements.
44+
45+
## Installation
46+
47+
### Clone the Repository
48+
49+
Clone the repository to your local machine:
50+
51+
```bash
52+
git clone https://github.com/OpenInitia/KnowEmail.git
53+
cd KnowEmail
54+
```
55+
56+
### Setup Environment
57+
58+
If using Python, install the required dependencies:
59+
60+
```bash
61+
pip install -r requirements.txt
62+
```
63+
64+
*Note:* If you’re integrating KnowEmail into another project or using a different language, please refer to the appropriate setup instructions in the project documentation.
65+
66+
## Usage
67+
68+
You can run KnowEmail either from the command line or integrate it directly into your projects.
69+
70+
71+
```bash
72+
python3 main.py
73+
```
74+
75+
76+
*Tip:* Customize the script or integrate additional checks as needed for your specific application.
77+
78+
## Contributing
79+
80+
Contributions are welcome! If you have any ideas, please contribute!
81+
82+
## License
83+
84+
This project is licensed under the [GNU GPL 3.0 License](LICENSE). See the LICENSE file for details.
85+
86+
## Contact
87+
88+
For any questions, suggestions, or support, please reach out:
89+
90+
- **Maintainer:** [@Deadpool2000](https://github.com/Deadpool2000)
91+
- **Open an Issue:** [GitHub Issues](https://github.com/OpenInitia/KnowEmail/issues)

main.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import sys
2-
from PyQt5 import QtWidgets
32
from src.gui import EmailValidatorApp
43
from PyQt5 import QtWidgets, QtCore
54
from PyQt5.QtWidgets import *
2.9 KB
Binary file not shown.

src/gui.py

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ def __init__(self, parent=None):
1919
self.layout.addWidget(self.table)
2020
self.setLayout(self.layout)
2121

22+
23+
# Enable the "?" help button
24+
self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowContextHelpButtonHint)
25+
26+
27+
2228
def add_row(self, email, status):
2329
row_position = self.table.rowCount()
2430
self.table.insertRow(row_position)
@@ -35,6 +41,53 @@ def add_row(self, email, status):
3541

3642
self.table.setItem(row_position, 0, email_item)
3743
self.table.setItem(row_position, 1, status_item)
44+
45+
def showEvent(self, event):
46+
"""Override showEvent to ensure the help button is available."""
47+
super().showEvent(event)
48+
49+
# Find the help button after the dialog is shown
50+
help_button = self.findChild(QtWidgets.QAbstractButton, "qt_help_button")
51+
if help_button:
52+
help_button.clicked.connect(self.show_status_help)
53+
54+
def show_status_help(self):
55+
help_text = """
56+
<b>Verification Status Explanations:</b><br><br>
57+
58+
<span style='color:#27ae60; font-weight:bold'>Valid</span>:
59+
- Email address is valid and reachable<br>
60+
- Domain has proper MX records<br>
61+
- SMTP server confirmed the mailbox exists<br><br>
62+
63+
<span style='color:#e74c3c; font-weight:bold'>Invalid (Syntax)</span>:
64+
- Email format is incorrect<br>
65+
- Missing @ symbol or invalid domain structure<br>
66+
- Example: <i>user@domain</i> (missing .com)<br><br>
67+
68+
<span style='color:#e74c3c; font-weight:bold'>Invalid (No MX)</span>:
69+
- Domain does not have mail exchange records<br>
70+
- Domain might not exist or is not configured for email<br>
71+
- Example: <i>[email protected]</i><br><br>
72+
73+
<span style='color:#e74c3c; font-weight:bold'>Invalid (SMTP)</span>:
74+
- Domain exists, but the mailbox does not<br>
75+
- SMTP server rejected the recipient address<br>
76+
- Example: <i>[email protected]</i><br><br>
77+
78+
<span style='color:#f1c40f; font-weight:bold'>Error</span>:
79+
- Temporary network issues<br>
80+
- SMTP server timeout or connection error<br>
81+
- Unexpected verification errors<br><br>
82+
83+
<i>Note: Some email servers may block verification attempts for privacy reasons.</i>
84+
"""
85+
help_dialog = QtWidgets.QMessageBox(self)
86+
help_dialog.setWindowTitle("Verification Status Help")
87+
help_dialog.setTextFormat(QtCore.Qt.RichText) # Enable HTML formatting
88+
help_dialog.setText(help_text)
89+
help_dialog.setStandardButtons(QtWidgets.QMessageBox.Ok)
90+
help_dialog.exec_()
3891

3992
class BulkVerificationThread(QtCore.QThread):
4093
result_signal = QtCore.pyqtSignal(str, str)
@@ -62,7 +115,6 @@ def run(self):
62115
status = f"Error: {str(e)}"
63116

64117
self.result_signal.emit(email, status)
65-
66118
self.all_done.emit() # Signal completion after all emails
67119

68120
class EmailValidatorApp(QtWidgets.QWidget):
@@ -82,7 +134,7 @@ def init_ui(self):
82134
# Main layout
83135
main_layout = QtWidgets.QVBoxLayout()
84136
main_layout.setContentsMargins(40, 30, 40, 30)
85-
main_layout.setSpacing(20)
137+
main_layout.setSpacing(15)
86138

87139
# Header Section
88140
header_layout = QtWidgets.QVBoxLayout()
@@ -96,9 +148,8 @@ def init_ui(self):
96148
header_layout.addWidget(subtitle, 0, QtCore.Qt.AlignHCenter)
97149
main_layout.addLayout(header_layout)
98150

99-
# Description
100151
description = QtWidgets.QLabel(
101-
"Tired of dealing with invalid email addresses? Free Email Verifier tool helps you "
152+
"Tired of dealing with invalid email addresses? KnowEmail helps you "
102153
"clean your email lists by ensuring every address is valid before you send that "
103154
"important campaign."
104155
)
@@ -159,7 +210,7 @@ def bulk_verify(self):
159210
self,
160211
"Select Email List",
161212
"",
162-
"Text Files (*.txt);;Excel Files (*.xlsx)"
213+
"Text File (*.txt);; Excel File (*.xlsx)"
163214
)
164215

165216
if not file_path:

src/knowemail.png

19.2 KB
Loading

src/logo.png

44.1 KB
Loading

src/styles.qss

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,31 @@ QLabel, QLineEdit, QPushButton, QMessageBox {
1515
font-size: 28px;
1616
font-weight: bold;
1717
color: #2c3e50;
18-
margin-bottom: 5px;
18+
margin-bottom: 3px; /* Reduced margin-bottom */
1919
}
2020

2121
/* Subtitle styling */
2222
#subtitle {
2323
font-size: 16px;
2424
color: #7f8c8d;
25-
margin-bottom: 20px;
25+
margin-bottom: 15px; /* Reduced margin-bottom */
2626
}
2727

2828
/* Description text styling */
2929
#description {
3030
font-size: 14px;
3131
color: #34495e;
3232
line-height: 1.4;
33-
margin-bottom: 30px;
33+
margin-bottom: 20px; /* Reduced margin-bottom */
3434
}
3535

3636
/* Email input field styling */
3737
#emailInput {
38-
padding: 12px;
38+
padding: 8px; /* Reduced padding */
3939
border: 2px solid #bdc3c7;
4040
border-radius: 6px;
4141
font-size: 14px;
42-
min-width: 300px;
42+
min-width: 280px; /* Reduced min-width */
4343
color: #2c3e50;
4444
background-color: #f8f9fa;
4545
}
@@ -59,12 +59,12 @@ QLineEdit {
5959
#checkButton {
6060
background-color: #3498db;
6161
color: white;
62-
padding: 12px 30px;
62+
padding: 8px 20px; /* Reduced padding */
6363
border: none;
6464
border-radius: 6px;
6565
font-size: 14px;
6666
font-weight: bold;
67-
min-width: 120px;
67+
min-width: 100px; /* Reduced min-width */
6868
}
6969

7070
#checkButton:hover {
@@ -75,23 +75,23 @@ QLineEdit {
7575
#resultLabel {
7676
color: #e74c3c;
7777
font-size: 14px;
78-
margin-top: 10px;
78+
margin-top: 8px; /* Reduced margin-top */
7979
text-align: center;
8080
}
8181

8282
/* Support section styling */
8383
#supportLabel {
8484
color: #7f8c8d;
8585
font-size: 13px;
86-
margin: 10px 0 15px 0;
86+
margin: 8px 0 10px 0; /* Reduced margins */
8787
text-align: center;
8888
}
8989

9090
/* Donate button styling */
9191
#donateButton {
9292
background-color: #27ae60;
9393
color: white;
94-
padding: 10px 25px;
94+
padding: 8px 20px; /* Reduced padding */
9595
border: none;
9696
border-radius: 5px;
9797
font-size: 13px;
@@ -116,11 +116,11 @@ QMessageBox QLabel {
116116
QMessageBox QPushButton {
117117
background-color: #3498db;
118118
color: white !important;
119-
padding: 8px 20px;
119+
padding: 6px 15px; /* Reduced padding */
120120
border: none;
121121
border-radius: 4px;
122122
font-size: 13px;
123-
min-width: 80px;
123+
min-width: 70px; /* Reduced min-width */
124124
}
125125

126126
QMessageBox QPushButton:hover {
@@ -144,13 +144,13 @@ QPushButton {
144144
#bulkButton {
145145
background-color: #9b59b6;
146146
color: white;
147-
padding: 12px 30px;
147+
padding: 8px 20px; /* Reduced padding */
148148
border: none;
149149
border-radius: 6px;
150150
font-size: 14px;
151151
font-weight: bold;
152-
min-width: 120px;
153-
margin-top: 10px;
152+
min-width: 100px; /* Reduced min-width */
153+
margin-top: 8px; /* Reduced margin-top */
154154
}
155155

156156
#bulkButton:hover {
@@ -167,10 +167,11 @@ QTableWidget {
167167
QHeaderView::section {
168168
background-color: #3498db;
169169
color: white;
170-
padding: 8px;
170+
padding: 6px; /* Reduced padding */
171171
border: none;
172172
}
173173

174174
QTableWidget::item {
175-
padding: 8px;
176-
}
175+
padding: 4px; /* Reduced padding */
176+
}
177+

0 commit comments

Comments
 (0)