Repository files navigation

📥 GMailReceiver Service

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.


🛠️ Technology Stack

  • Java 17+
  • Spring Boot 3.x
  • Spring Web, Spring MVC
  • Thymeleaf (UI templates)
  • RestTemplate (for calling GMailSender service)
  • Bootstrap 5 (frontend styling)
  • Maven

🔹 Features

  • Display received emails in Inbox, Starred, Sent, Spam, and Bin folders.
  • Compose and send emails via GMailSender REST API.
  • Show success/error messages after sending emails.
  • Back to Inbox button after sending emails.
  • Responsive UI with table and modal forms for email operations.

📸 Screenshots

Compose Mail

Compose Page

⚙️ Configuration

Update src/main/resources/application.properties with your settings:

spring.application.name=GEmailReceiver
# Gmail IMAP settings (for reading emails)spring.mail.host=imap.gmail.com
spring.mail.port=993
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password
# GMailSender service URLgmailsender.url=http://localhost:8081

📧 How Email Works Internally — SMTP, IMAP & POP3 Explained

Emails may look simple on the surface, but under the hood, there’s a robust system of protocols that move messages reliably across the internet.
This document explains how sending and receiving emails actually works — from the sender’s outbox to the receiver’s inbox.


🧭 Overview

When you send or receive an email, several servers and protocols come into play:

  • SMTP (Simple Mail Transfer Protocol) → handles sending emails.
  • IMAP (Internet Message Access Protocol) → handles retrieving emails (keeps mail synced across devices).
  • POP3 (Post Office Protocol v3) → also retrieves emails, but downloads and usually removes them from the server.

These protocols are layered on top of TCP/IP, and they use well-defined ports and security standards (like SSL/TLS).


🚀 Sending an Email (SMTP)

SMTP is the workhorse for sending emails.
It’s used by your mail client (like Gmail, Outlook, or Thunderbird) to deliver messages to the mail server — and by mail servers themselves to relay messages between domains.

SMTP Flow:

  1. User writes an email in a client (MUA — Mail User Agent).
  2. The MUA connects to an SMTP server (MSA — Mail Submission Agent) using:
    • Port 587 (with STARTTLS) or 465 (with SSL/TLS).
  3. The MSA validates the user and forwards the email to the Mail Transfer Agent (MTA).
  4. The MTA looks up the recipient’s domain via DNS MX (Mail Exchange) records.
  5. The email is routed across the internet, possibly hopping through multiple MTAs.
  6. Finally, the recipient’s Mail Delivery Agent (MDA) stores the email in their mailbox on the destination mail server.

In short:

Sender (MUA) → MSA → MTA → MDA → Recipient’s Mailbox


📥 Receiving Emails (IMAP vs POP3)

Once the email reaches the recipient’s mail server, the user can fetch it using either IMAP or POP3.

🔄 IMAP (Internet Message Access Protocol)

IMAP keeps your emails on the server and synchronizes changes (read/unread, folders, flags) across multiple devices.

  • Default ports:
    • 143 (IMAP)
    • 993 (IMAPS - IMAP over SSL)
  • Best for multi-device users — mobile, laptop, webmail, etc.

Flow:

Mail Server → IMAP Server → Client (syncs messages)

When you open an email on your phone, it’s not downloaded — you’re viewing it remotely.
Delete or move it, and the change reflects everywhere.


⬇️ POP3 (Post Office Protocol v3)

POP3 is older and simpler — it downloads emails from the server and (by default) removes them afterward.

  • Default ports:
    • 110 (POP3)
    • 995 (POP3S - over SSL)
  • Great for single-device setups, less ideal for modern multi-device use.

Flow:

Mail Server → POP3 Server → Client (downloads and optionally deletes)

Some clients can be configured to “leave a copy on the server,” but that’s a workaround — IMAP handles this natively.


🔐 Security and Authentication

Modern email systems always wrap these protocols in encryption:

ProtocolDefault PortSecure Port (SSL/TLS)
SMTP25 / 587465
IMAP143993
POP3110995

Authentication uses either:

  • LOGIN / PLAIN (basic, often over TLS)
  • OAuth 2.0 (modern, token-based — used by Gmail, Outlook, etc.)

📡 Real-World Example

Let’s say Alice sends an email to Bob:

  1. Alice’s mail client connects to smtp.gmail.com:587.
  2. Gmail’s MTA looks up Bob’s domain’s MX record — say mx.outlook.com.
  3. Gmail’s server sends the message to Outlook’s mail server.
  4. Outlook stores it in Bob’s mailbox.
  5. Bob’s phone connects to imap.outlook.com:993 and retrieves/syncs the email.

“Email’s been around since the ‘70s — the tech is old, but it’s rock-solid once you understand the moving parts.”


📜 License

This project is licensed under the MIT License.

About

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

📥 GMailReceiver Service

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.


🛠️ Technology Stack

  • Java 17+
  • Spring Boot 3.x
  • Spring Web, Spring MVC
  • Thymeleaf (UI templates)
  • RestTemplate (for calling GMailSender service)
  • Bootstrap 5 (frontend styling)
  • Maven

🔹 Features

  • Display received emails in Inbox, Starred, Sent, Spam, and Bin folders.
  • Compose and send emails via GMailSender REST API.
  • Show success/error messages after sending emails.
  • Back to Inbox button after sending emails.
  • Responsive UI with table and modal forms for email operations.

📸 Screenshots

Compose Mail

Compose Page

⚙️ Configuration

Update src/main/resources/application.properties with your settings:

spring.application.name=GEmailReceiver
# Gmail IMAP settings (for reading emails)spring.mail.host=imap.gmail.com
spring.mail.port=993
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password
# GMailSender service URLgmailsender.url=http://localhost:8081

📧 How Email Works Internally — SMTP, IMAP & POP3 Explained

Emails may look simple on the surface, but under the hood, there’s a robust system of protocols that move messages reliably across the internet.
This document explains how sending and receiving emails actually works — from the sender’s outbox to the receiver’s inbox.


🧭 Overview

When you send or receive an email, several servers and protocols come into play:

  • SMTP (Simple Mail Transfer Protocol) → handles sending emails.
  • IMAP (Internet Message Access Protocol) → handles retrieving emails (keeps mail synced across devices).
  • POP3 (Post Office Protocol v3) → also retrieves emails, but downloads and usually removes them from the server.

These protocols are layered on top of TCP/IP, and they use well-defined ports and security standards (like SSL/TLS).


🚀 Sending an Email (SMTP)

SMTP is the workhorse for sending emails.
It’s used by your mail client (like Gmail, Outlook, or Thunderbird) to deliver messages to the mail server — and by mail servers themselves to relay messages between domains.

SMTP Flow:

  1. User writes an email in a client (MUA — Mail User Agent).
  2. The MUA connects to an SMTP server (MSA — Mail Submission Agent) using:
    • Port 587 (with STARTTLS) or 465 (with SSL/TLS).
  3. The MSA validates the user and forwards the email to the Mail Transfer Agent (MTA).
  4. The MTA looks up the recipient’s domain via DNS MX (Mail Exchange) records.
  5. The email is routed across the internet, possibly hopping through multiple MTAs.
  6. Finally, the recipient’s Mail Delivery Agent (MDA) stores the email in their mailbox on the destination mail server.

In short:

Sender (MUA) → MSA → MTA → MDA → Recipient’s Mailbox


📥 Receiving Emails (IMAP vs POP3)

Once the email reaches the recipient’s mail server, the user can fetch it using either IMAP or POP3.

🔄 IMAP (Internet Message Access Protocol)

IMAP keeps your emails on the server and synchronizes changes (read/unread, folders, flags) across multiple devices.

  • Default ports:
    • 143 (IMAP)
    • 993 (IMAPS - IMAP over SSL)
  • Best for multi-device users — mobile, laptop, webmail, etc.

Flow:

Mail Server → IMAP Server → Client (syncs messages)

When you open an email on your phone, it’s not downloaded — you’re viewing it remotely.
Delete or move it, and the change reflects everywhere.


⬇️ POP3 (Post Office Protocol v3)

POP3 is older and simpler — it downloads emails from the server and (by default) removes them afterward.

  • Default ports:
    • 110 (POP3)
    • 995 (POP3S - over SSL)
  • Great for single-device setups, less ideal for modern multi-device use.

Flow:

Mail Server → POP3 Server → Client (downloads and optionally deletes)

Some clients can be configured to “leave a copy on the server,” but that’s a workaround — IMAP handles this natively.


🔐 Security and Authentication

Modern email systems always wrap these protocols in encryption:

ProtocolDefault PortSecure Port (SSL/TLS)
SMTP25 / 587465
IMAP143993
POP3110995

Authentication uses either:

  • LOGIN / PLAIN (basic, often over TLS)
  • OAuth 2.0 (modern, token-based — used by Gmail, Outlook, etc.)

📡 Real-World Example

Let’s say Alice sends an email to Bob:

  1. Alice’s mail client connects to smtp.gmail.com:587.
  2. Gmail’s MTA looks up Bob’s domain’s MX record — say mx.outlook.com.
  3. Gmail’s server sends the message to Outlook’s mail server.
  4. Outlook stores it in Bob’s mailbox.
  5. Bob’s phone connects to imap.outlook.com:993 and retrieves/syncs the email.

“Email’s been around since the ‘70s — the tech is old, but it’s rock-solid once you understand the moving parts.”


📜 License

This project is licensed under the MIT License.

About

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

📥 GMailReceiver Service

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.


🛠️ Technology Stack

  • Java 17+
  • Spring Boot 3.x
  • Spring Web, Spring MVC
  • Thymeleaf (UI templates)
  • RestTemplate (for calling GMailSender service)
  • Bootstrap 5 (frontend styling)
  • Maven

🔹 Features

  • Display received emails in Inbox, Starred, Sent, Spam, and Bin folders.
  • Compose and send emails via GMailSender REST API.
  • Show success/error messages after sending emails.
  • Back to Inbox button after sending emails.
  • Responsive UI with table and modal forms for email operations.

📸 Screenshots

Compose Mail

Compose Page

⚙️ Configuration

Update src/main/resources/application.properties with your settings:

spring.application.name=GEmailReceiver
# Gmail IMAP settings (for reading emails)spring.mail.host=imap.gmail.com
spring.mail.port=993
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password
# GMailSender service URLgmailsender.url=http://localhost:8081

📧 How Email Works Internally — SMTP, IMAP & POP3 Explained

Emails may look simple on the surface, but under the hood, there’s a robust system of protocols that move messages reliably across the internet.
This document explains how sending and receiving emails actually works — from the sender’s outbox to the receiver’s inbox.


🧭 Overview

When you send or receive an email, several servers and protocols come into play:

  • SMTP (Simple Mail Transfer Protocol) → handles sending emails.
  • IMAP (Internet Message Access Protocol) → handles retrieving emails (keeps mail synced across devices).
  • POP3 (Post Office Protocol v3) → also retrieves emails, but downloads and usually removes them from the server.

These protocols are layered on top of TCP/IP, and they use well-defined ports and security standards (like SSL/TLS).


🚀 Sending an Email (SMTP)

SMTP is the workhorse for sending emails.
It’s used by your mail client (like Gmail, Outlook, or Thunderbird) to deliver messages to the mail server — and by mail servers themselves to relay messages between domains.

SMTP Flow:

  1. User writes an email in a client (MUA — Mail User Agent).
  2. The MUA connects to an SMTP server (MSA — Mail Submission Agent) using:
    • Port 587 (with STARTTLS) or 465 (with SSL/TLS).
  3. The MSA validates the user and forwards the email to the Mail Transfer Agent (MTA).
  4. The MTA looks up the recipient’s domain via DNS MX (Mail Exchange) records.
  5. The email is routed across the internet, possibly hopping through multiple MTAs.
  6. Finally, the recipient’s Mail Delivery Agent (MDA) stores the email in their mailbox on the destination mail server.

In short:

Sender (MUA) → MSA → MTA → MDA → Recipient’s Mailbox


📥 Receiving Emails (IMAP vs POP3)

Once the email reaches the recipient’s mail server, the user can fetch it using either IMAP or POP3.

🔄 IMAP (Internet Message Access Protocol)

IMAP keeps your emails on the server and synchronizes changes (read/unread, folders, flags) across multiple devices.

  • Default ports:
    • 143 (IMAP)
    • 993 (IMAPS - IMAP over SSL)
  • Best for multi-device users — mobile, laptop, webmail, etc.

Flow:

Mail Server → IMAP Server → Client (syncs messages)

When you open an email on your phone, it’s not downloaded — you’re viewing it remotely.
Delete or move it, and the change reflects everywhere.


⬇️ POP3 (Post Office Protocol v3)

POP3 is older and simpler — it downloads emails from the server and (by default) removes them afterward.

  • Default ports:
    • 110 (POP3)
    • 995 (POP3S - over SSL)
  • Great for single-device setups, less ideal for modern multi-device use.

Flow:

Mail Server → POP3 Server → Client (downloads and optionally deletes)

Some clients can be configured to “leave a copy on the server,” but that’s a workaround — IMAP handles this natively.


🔐 Security and Authentication

Modern email systems always wrap these protocols in encryption:

ProtocolDefault PortSecure Port (SSL/TLS)
SMTP25 / 587465
IMAP143993
POP3110995

Authentication uses either:

  • LOGIN / PLAIN (basic, often over TLS)
  • OAuth 2.0 (modern, token-based — used by Gmail, Outlook, etc.)

📡 Real-World Example

Let’s say Alice sends an email to Bob:

  1. Alice’s mail client connects to smtp.gmail.com:587.
  2. Gmail’s MTA looks up Bob’s domain’s MX record — say mx.outlook.com.
  3. Gmail’s server sends the message to Outlook’s mail server.
  4. Outlook stores it in Bob’s mailbox.
  5. Bob’s phone connects to imap.outlook.com:993 and retrieves/syncs the email.

“Email’s been around since the ‘70s — the tech is old, but it’s rock-solid once you understand the moving parts.”


📜 License

This project is licensed under the MIT License.

About

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

📥 GMailReceiver Service

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.


🛠️ Technology Stack

  • Java 17+
  • Spring Boot 3.x
  • Spring Web, Spring MVC
  • Thymeleaf (UI templates)
  • RestTemplate (for calling GMailSender service)
  • Bootstrap 5 (frontend styling)
  • Maven

🔹 Features

  • Display received emails in Inbox, Starred, Sent, Spam, and Bin folders.
  • Compose and send emails via GMailSender REST API.
  • Show success/error messages after sending emails.
  • Back to Inbox button after sending emails.
  • Responsive UI with table and modal forms for email operations.

📸 Screenshots

Compose Mail

Compose Page

⚙️ Configuration

Update src/main/resources/application.properties with your settings:

spring.application.name=GEmailReceiver
# Gmail IMAP settings (for reading emails)spring.mail.host=imap.gmail.com
spring.mail.port=993
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password
# GMailSender service URLgmailsender.url=http://localhost:8081

📧 How Email Works Internally — SMTP, IMAP & POP3 Explained

Emails may look simple on the surface, but under the hood, there’s a robust system of protocols that move messages reliably across the internet.
This document explains how sending and receiving emails actually works — from the sender’s outbox to the receiver’s inbox.


🧭 Overview

When you send or receive an email, several servers and protocols come into play:

  • SMTP (Simple Mail Transfer Protocol) → handles sending emails.
  • IMAP (Internet Message Access Protocol) → handles retrieving emails (keeps mail synced across devices).
  • POP3 (Post Office Protocol v3) → also retrieves emails, but downloads and usually removes them from the server.

These protocols are layered on top of TCP/IP, and they use well-defined ports and security standards (like SSL/TLS).


🚀 Sending an Email (SMTP)

SMTP is the workhorse for sending emails.
It’s used by your mail client (like Gmail, Outlook, or Thunderbird) to deliver messages to the mail server — and by mail servers themselves to relay messages between domains.

SMTP Flow:

  1. User writes an email in a client (MUA — Mail User Agent).
  2. The MUA connects to an SMTP server (MSA — Mail Submission Agent) using:
    • Port 587 (with STARTTLS) or 465 (with SSL/TLS).
  3. The MSA validates the user and forwards the email to the Mail Transfer Agent (MTA).
  4. The MTA looks up the recipient’s domain via DNS MX (Mail Exchange) records.
  5. The email is routed across the internet, possibly hopping through multiple MTAs.
  6. Finally, the recipient’s Mail Delivery Agent (MDA) stores the email in their mailbox on the destination mail server.

In short:

Sender (MUA) → MSA → MTA → MDA → Recipient’s Mailbox


📥 Receiving Emails (IMAP vs POP3)

Once the email reaches the recipient’s mail server, the user can fetch it using either IMAP or POP3.

🔄 IMAP (Internet Message Access Protocol)

IMAP keeps your emails on the server and synchronizes changes (read/unread, folders, flags) across multiple devices.

  • Default ports:
    • 143 (IMAP)
    • 993 (IMAPS - IMAP over SSL)
  • Best for multi-device users — mobile, laptop, webmail, etc.

Flow:

Mail Server → IMAP Server → Client (syncs messages)

When you open an email on your phone, it’s not downloaded — you’re viewing it remotely.
Delete or move it, and the change reflects everywhere.


⬇️ POP3 (Post Office Protocol v3)

POP3 is older and simpler — it downloads emails from the server and (by default) removes them afterward.

  • Default ports:
    • 110 (POP3)
    • 995 (POP3S - over SSL)
  • Great for single-device setups, less ideal for modern multi-device use.

Flow:

Mail Server → POP3 Server → Client (downloads and optionally deletes)

Some clients can be configured to “leave a copy on the server,” but that’s a workaround — IMAP handles this natively.


🔐 Security and Authentication

Modern email systems always wrap these protocols in encryption:

ProtocolDefault PortSecure Port (SSL/TLS)
SMTP25 / 587465
IMAP143993
POP3110995

Authentication uses either:

  • LOGIN / PLAIN (basic, often over TLS)
  • OAuth 2.0 (modern, token-based — used by Gmail, Outlook, etc.)

📡 Real-World Example

Let’s say Alice sends an email to Bob:

  1. Alice’s mail client connects to smtp.gmail.com:587.
  2. Gmail’s MTA looks up Bob’s domain’s MX record — say mx.outlook.com.
  3. Gmail’s server sends the message to Outlook’s mail server.
  4. Outlook stores it in Bob’s mailbox.
  5. Bob’s phone connects to imap.outlook.com:993 and retrieves/syncs the email.

“Email’s been around since the ‘70s — the tech is old, but it’s rock-solid once you understand the moving parts.”


📜 License

This project is licensed under the MIT License.

About

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

📥 GMailReceiver Service

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.


🛠️ Technology Stack

  • Java 17+
  • Spring Boot 3.x
  • Spring Web, Spring MVC
  • Thymeleaf (UI templates)
  • RestTemplate (for calling GMailSender service)
  • Bootstrap 5 (frontend styling)
  • Maven

🔹 Features

  • Display received emails in Inbox, Starred, Sent, Spam, and Bin folders.
  • Compose and send emails via GMailSender REST API.
  • Show success/error messages after sending emails.
  • Back to Inbox button after sending emails.
  • Responsive UI with table and modal forms for email operations.

📸 Screenshots

Compose Mail

Compose Page

⚙️ Configuration

Update src/main/resources/application.properties with your settings:

spring.application.name=GEmailReceiver
# Gmail IMAP settings (for reading emails)spring.mail.host=imap.gmail.com
spring.mail.port=993
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password
# GMailSender service URLgmailsender.url=http://localhost:8081

📧 How Email Works Internally — SMTP, IMAP & POP3 Explained

Emails may look simple on the surface, but under the hood, there’s a robust system of protocols that move messages reliably across the internet.
This document explains how sending and receiving emails actually works — from the sender’s outbox to the receiver’s inbox.


🧭 Overview

When you send or receive an email, several servers and protocols come into play:

  • SMTP (Simple Mail Transfer Protocol) → handles sending emails.
  • IMAP (Internet Message Access Protocol) → handles retrieving emails (keeps mail synced across devices).
  • POP3 (Post Office Protocol v3) → also retrieves emails, but downloads and usually removes them from the server.

These protocols are layered on top of TCP/IP, and they use well-defined ports and security standards (like SSL/TLS).


🚀 Sending an Email (SMTP)

SMTP is the workhorse for sending emails.
It’s used by your mail client (like Gmail, Outlook, or Thunderbird) to deliver messages to the mail server — and by mail servers themselves to relay messages between domains.

SMTP Flow:

  1. User writes an email in a client (MUA — Mail User Agent).
  2. The MUA connects to an SMTP server (MSA — Mail Submission Agent) using:
    • Port 587 (with STARTTLS) or 465 (with SSL/TLS).
  3. The MSA validates the user and forwards the email to the Mail Transfer Agent (MTA).
  4. The MTA looks up the recipient’s domain via DNS MX (Mail Exchange) records.
  5. The email is routed across the internet, possibly hopping through multiple MTAs.
  6. Finally, the recipient’s Mail Delivery Agent (MDA) stores the email in their mailbox on the destination mail server.

In short:

Sender (MUA) → MSA → MTA → MDA → Recipient’s Mailbox


📥 Receiving Emails (IMAP vs POP3)

Once the email reaches the recipient’s mail server, the user can fetch it using either IMAP or POP3.

🔄 IMAP (Internet Message Access Protocol)

IMAP keeps your emails on the server and synchronizes changes (read/unread, folders, flags) across multiple devices.

  • Default ports:
    • 143 (IMAP)
    • 993 (IMAPS - IMAP over SSL)
  • Best for multi-device users — mobile, laptop, webmail, etc.

Flow:

Mail Server → IMAP Server → Client (syncs messages)

When you open an email on your phone, it’s not downloaded — you’re viewing it remotely.
Delete or move it, and the change reflects everywhere.


⬇️ POP3 (Post Office Protocol v3)

POP3 is older and simpler — it downloads emails from the server and (by default) removes them afterward.

  • Default ports:
    • 110 (POP3)
    • 995 (POP3S - over SSL)
  • Great for single-device setups, less ideal for modern multi-device use.

Flow:

Mail Server → POP3 Server → Client (downloads and optionally deletes)

Some clients can be configured to “leave a copy on the server,” but that’s a workaround — IMAP handles this natively.


🔐 Security and Authentication

Modern email systems always wrap these protocols in encryption:

ProtocolDefault PortSecure Port (SSL/TLS)
SMTP25 / 587465
IMAP143993
POP3110995

Authentication uses either:

  • LOGIN / PLAIN (basic, often over TLS)
  • OAuth 2.0 (modern, token-based — used by Gmail, Outlook, etc.)

📡 Real-World Example

Let’s say Alice sends an email to Bob:

  1. Alice’s mail client connects to smtp.gmail.com:587.
  2. Gmail’s MTA looks up Bob’s domain’s MX record — say mx.outlook.com.
  3. Gmail’s server sends the message to Outlook’s mail server.
  4. Outlook stores it in Bob’s mailbox.
  5. Bob’s phone connects to imap.outlook.com:993 and retrieves/syncs the email.

“Email’s been around since the ‘70s — the tech is old, but it’s rock-solid once you understand the moving parts.”


📜 License

This project is licensed under the MIT License.

About

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

📥 GMailReceiver Service

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.


🛠️ Technology Stack

  • Java 17+
  • Spring Boot 3.x
  • Spring Web, Spring MVC
  • Thymeleaf (UI templates)
  • RestTemplate (for calling GMailSender service)
  • Bootstrap 5 (frontend styling)
  • Maven

🔹 Features

  • Display received emails in Inbox, Starred, Sent, Spam, and Bin folders.
  • Compose and send emails via GMailSender REST API.
  • Show success/error messages after sending emails.
  • Back to Inbox button after sending emails.
  • Responsive UI with table and modal forms for email operations.

📸 Screenshots

Compose Mail

Compose Page

⚙️ Configuration

Update src/main/resources/application.properties with your settings:

spring.application.name=GEmailReceiver
# Gmail IMAP settings (for reading emails)spring.mail.host=imap.gmail.com
spring.mail.port=993
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password
# GMailSender service URLgmailsender.url=http://localhost:8081

📧 How Email Works Internally — SMTP, IMAP & POP3 Explained

Emails may look simple on the surface, but under the hood, there’s a robust system of protocols that move messages reliably across the internet.
This document explains how sending and receiving emails actually works — from the sender’s outbox to the receiver’s inbox.


🧭 Overview

When you send or receive an email, several servers and protocols come into play:

  • SMTP (Simple Mail Transfer Protocol) → handles sending emails.
  • IMAP (Internet Message Access Protocol) → handles retrieving emails (keeps mail synced across devices).
  • POP3 (Post Office Protocol v3) → also retrieves emails, but downloads and usually removes them from the server.

These protocols are layered on top of TCP/IP, and they use well-defined ports and security standards (like SSL/TLS).


🚀 Sending an Email (SMTP)

SMTP is the workhorse for sending emails.
It’s used by your mail client (like Gmail, Outlook, or Thunderbird) to deliver messages to the mail server — and by mail servers themselves to relay messages between domains.

SMTP Flow:

  1. User writes an email in a client (MUA — Mail User Agent).
  2. The MUA connects to an SMTP server (MSA — Mail Submission Agent) using:
    • Port 587 (with STARTTLS) or 465 (with SSL/TLS).
  3. The MSA validates the user and forwards the email to the Mail Transfer Agent (MTA).
  4. The MTA looks up the recipient’s domain via DNS MX (Mail Exchange) records.
  5. The email is routed across the internet, possibly hopping through multiple MTAs.
  6. Finally, the recipient’s Mail Delivery Agent (MDA) stores the email in their mailbox on the destination mail server.

In short:

Sender (MUA) → MSA → MTA → MDA → Recipient’s Mailbox


📥 Receiving Emails (IMAP vs POP3)

Once the email reaches the recipient’s mail server, the user can fetch it using either IMAP or POP3.

🔄 IMAP (Internet Message Access Protocol)

IMAP keeps your emails on the server and synchronizes changes (read/unread, folders, flags) across multiple devices.

  • Default ports:
    • 143 (IMAP)
    • 993 (IMAPS - IMAP over SSL)
  • Best for multi-device users — mobile, laptop, webmail, etc.

Flow:

Mail Server → IMAP Server → Client (syncs messages)

When you open an email on your phone, it’s not downloaded — you’re viewing it remotely.
Delete or move it, and the change reflects everywhere.


⬇️ POP3 (Post Office Protocol v3)

POP3 is older and simpler — it downloads emails from the server and (by default) removes them afterward.

  • Default ports:
    • 110 (POP3)
    • 995 (POP3S - over SSL)
  • Great for single-device setups, less ideal for modern multi-device use.

Flow:

Mail Server → POP3 Server → Client (downloads and optionally deletes)

Some clients can be configured to “leave a copy on the server,” but that’s a workaround — IMAP handles this natively.


🔐 Security and Authentication

Modern email systems always wrap these protocols in encryption:

ProtocolDefault PortSecure Port (SSL/TLS)
SMTP25 / 587465
IMAP143993
POP3110995

Authentication uses either:

  • LOGIN / PLAIN (basic, often over TLS)
  • OAuth 2.0 (modern, token-based — used by Gmail, Outlook, etc.)

📡 Real-World Example

Let’s say Alice sends an email to Bob:

  1. Alice’s mail client connects to smtp.gmail.com:587.
  2. Gmail’s MTA looks up Bob’s domain’s MX record — say mx.outlook.com.
  3. Gmail’s server sends the message to Outlook’s mail server.
  4. Outlook stores it in Bob’s mailbox.
  5. Bob’s phone connects to imap.outlook.com:993 and retrieves/syncs the email.

“Email’s been around since the ‘70s — the tech is old, but it’s rock-solid once you understand the moving parts.”


📜 License

This project is licensed under the MIT License.

About

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

📥 GMailReceiver Service

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.


🛠️ Technology Stack

  • Java 17+
  • Spring Boot 3.x
  • Spring Web, Spring MVC
  • Thymeleaf (UI templates)
  • RestTemplate (for calling GMailSender service)
  • Bootstrap 5 (frontend styling)
  • Maven

🔹 Features

  • Display received emails in Inbox, Starred, Sent, Spam, and Bin folders.
  • Compose and send emails via GMailSender REST API.
  • Show success/error messages after sending emails.
  • Back to Inbox button after sending emails.
  • Responsive UI with table and modal forms for email operations.

📸 Screenshots

Compose Mail

Compose Page

⚙️ Configuration

Update src/main/resources/application.properties with your settings:

spring.application.name=GEmailReceiver
# Gmail IMAP settings (for reading emails)spring.mail.host=imap.gmail.com
spring.mail.port=993
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password
# GMailSender service URLgmailsender.url=http://localhost:8081

📧 How Email Works Internally — SMTP, IMAP & POP3 Explained

Emails may look simple on the surface, but under the hood, there’s a robust system of protocols that move messages reliably across the internet.
This document explains how sending and receiving emails actually works — from the sender’s outbox to the receiver’s inbox.


🧭 Overview

When you send or receive an email, several servers and protocols come into play:

  • SMTP (Simple Mail Transfer Protocol) → handles sending emails.
  • IMAP (Internet Message Access Protocol) → handles retrieving emails (keeps mail synced across devices).
  • POP3 (Post Office Protocol v3) → also retrieves emails, but downloads and usually removes them from the server.

These protocols are layered on top of TCP/IP, and they use well-defined ports and security standards (like SSL/TLS).


🚀 Sending an Email (SMTP)

SMTP is the workhorse for sending emails.
It’s used by your mail client (like Gmail, Outlook, or Thunderbird) to deliver messages to the mail server — and by mail servers themselves to relay messages between domains.

SMTP Flow:

  1. User writes an email in a client (MUA — Mail User Agent).
  2. The MUA connects to an SMTP server (MSA — Mail Submission Agent) using:
    • Port 587 (with STARTTLS) or 465 (with SSL/TLS).
  3. The MSA validates the user and forwards the email to the Mail Transfer Agent (MTA).
  4. The MTA looks up the recipient’s domain via DNS MX (Mail Exchange) records.
  5. The email is routed across the internet, possibly hopping through multiple MTAs.
  6. Finally, the recipient’s Mail Delivery Agent (MDA) stores the email in their mailbox on the destination mail server.

In short:

Sender (MUA) → MSA → MTA → MDA → Recipient’s Mailbox


📥 Receiving Emails (IMAP vs POP3)

Once the email reaches the recipient’s mail server, the user can fetch it using either IMAP or POP3.

🔄 IMAP (Internet Message Access Protocol)

IMAP keeps your emails on the server and synchronizes changes (read/unread, folders, flags) across multiple devices.

  • Default ports:
    • 143 (IMAP)
    • 993 (IMAPS - IMAP over SSL)
  • Best for multi-device users — mobile, laptop, webmail, etc.

Flow:

Mail Server → IMAP Server → Client (syncs messages)

When you open an email on your phone, it’s not downloaded — you’re viewing it remotely.
Delete or move it, and the change reflects everywhere.


⬇️ POP3 (Post Office Protocol v3)

POP3 is older and simpler — it downloads emails from the server and (by default) removes them afterward.

  • Default ports:
    • 110 (POP3)
    • 995 (POP3S - over SSL)
  • Great for single-device setups, less ideal for modern multi-device use.

Flow:

Mail Server → POP3 Server → Client (downloads and optionally deletes)

Some clients can be configured to “leave a copy on the server,” but that’s a workaround — IMAP handles this natively.


🔐 Security and Authentication

Modern email systems always wrap these protocols in encryption:

ProtocolDefault PortSecure Port (SSL/TLS)
SMTP25 / 587465
IMAP143993
POP3110995

Authentication uses either:

  • LOGIN / PLAIN (basic, often over TLS)
  • OAuth 2.0 (modern, token-based — used by Gmail, Outlook, etc.)

📡 Real-World Example

Let’s say Alice sends an email to Bob:

  1. Alice’s mail client connects to smtp.gmail.com:587.
  2. Gmail’s MTA looks up Bob’s domain’s MX record — say mx.outlook.com.
  3. Gmail’s server sends the message to Outlook’s mail server.
  4. Outlook stores it in Bob’s mailbox.
  5. Bob’s phone connects to imap.outlook.com:993 and retrieves/syncs the email.

“Email’s been around since the ‘70s — the tech is old, but it’s rock-solid once you understand the moving parts.”


📜 License

This project is licensed under the MIT License.

About

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

📥 GMailReceiver Service

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.


🛠️ Technology Stack

  • Java 17+
  • Spring Boot 3.x
  • Spring Web, Spring MVC
  • Thymeleaf (UI templates)
  • RestTemplate (for calling GMailSender service)
  • Bootstrap 5 (frontend styling)
  • Maven

🔹 Features

  • Display received emails in Inbox, Starred, Sent, Spam, and Bin folders.
  • Compose and send emails via GMailSender REST API.
  • Show success/error messages after sending emails.
  • Back to Inbox button after sending emails.
  • Responsive UI with table and modal forms for email operations.

📸 Screenshots

Compose Mail

Compose Page

⚙️ Configuration

Update src/main/resources/application.properties with your settings:

spring.application.name=GEmailReceiver
# Gmail IMAP settings (for reading emails)spring.mail.host=imap.gmail.com
spring.mail.port=993
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password
# GMailSender service URLgmailsender.url=http://localhost:8081

📧 How Email Works Internally — SMTP, IMAP & POP3 Explained

Emails may look simple on the surface, but under the hood, there’s a robust system of protocols that move messages reliably across the internet.
This document explains how sending and receiving emails actually works — from the sender’s outbox to the receiver’s inbox.


🧭 Overview

When you send or receive an email, several servers and protocols come into play:

  • SMTP (Simple Mail Transfer Protocol) → handles sending emails.
  • IMAP (Internet Message Access Protocol) → handles retrieving emails (keeps mail synced across devices).
  • POP3 (Post Office Protocol v3) → also retrieves emails, but downloads and usually removes them from the server.

These protocols are layered on top of TCP/IP, and they use well-defined ports and security standards (like SSL/TLS).


🚀 Sending an Email (SMTP)

SMTP is the workhorse for sending emails.
It’s used by your mail client (like Gmail, Outlook, or Thunderbird) to deliver messages to the mail server — and by mail servers themselves to relay messages between domains.

SMTP Flow:

  1. User writes an email in a client (MUA — Mail User Agent).
  2. The MUA connects to an SMTP server (MSA — Mail Submission Agent) using:
    • Port 587 (with STARTTLS) or 465 (with SSL/TLS).
  3. The MSA validates the user and forwards the email to the Mail Transfer Agent (MTA).
  4. The MTA looks up the recipient’s domain via DNS MX (Mail Exchange) records.
  5. The email is routed across the internet, possibly hopping through multiple MTAs.
  6. Finally, the recipient’s Mail Delivery Agent (MDA) stores the email in their mailbox on the destination mail server.

In short:

Sender (MUA) → MSA → MTA → MDA → Recipient’s Mailbox


📥 Receiving Emails (IMAP vs POP3)

Once the email reaches the recipient’s mail server, the user can fetch it using either IMAP or POP3.

🔄 IMAP (Internet Message Access Protocol)

IMAP keeps your emails on the server and synchronizes changes (read/unread, folders, flags) across multiple devices.

  • Default ports:
    • 143 (IMAP)
    • 993 (IMAPS - IMAP over SSL)
  • Best for multi-device users — mobile, laptop, webmail, etc.

Flow:

Mail Server → IMAP Server → Client (syncs messages)

When you open an email on your phone, it’s not downloaded — you’re viewing it remotely.
Delete or move it, and the change reflects everywhere.


⬇️ POP3 (Post Office Protocol v3)

POP3 is older and simpler — it downloads emails from the server and (by default) removes them afterward.

  • Default ports:
    • 110 (POP3)
    • 995 (POP3S - over SSL)
  • Great for single-device setups, less ideal for modern multi-device use.

Flow:

Mail Server → POP3 Server → Client (downloads and optionally deletes)

Some clients can be configured to “leave a copy on the server,” but that’s a workaround — IMAP handles this natively.


🔐 Security and Authentication

Modern email systems always wrap these protocols in encryption:

ProtocolDefault PortSecure Port (SSL/TLS)
SMTP25 / 587465
IMAP143993
POP3110995

Authentication uses either:

  • LOGIN / PLAIN (basic, often over TLS)
  • OAuth 2.0 (modern, token-based — used by Gmail, Outlook, etc.)

📡 Real-World Example

Let’s say Alice sends an email to Bob:

  1. Alice’s mail client connects to smtp.gmail.com:587.
  2. Gmail’s MTA looks up Bob’s domain’s MX record — say mx.outlook.com.
  3. Gmail’s server sends the message to Outlook’s mail server.
  4. Outlook stores it in Bob’s mailbox.
  5. Bob’s phone connects to imap.outlook.com:993 and retrieves/syncs the email.

“Email’s been around since the ‘70s — the tech is old, but it’s rock-solid once you understand the moving parts.”


📜 License

This project is licensed under the MIT License.

About

GMailReceiver is a Spring Boot application that displays emails in a user-friendly inbox UI and integrates seamlessly with GMailSender to send emails. It allows users to view, compose, and manage emails with ease. The service provides a clean and responsive interface for email operations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages