Email is a method of asynchronous online communication.

Specification

Technically, email consists of three major components:

  • User agents — the reader application (like the Thunderbird client). They compose, edit, and read mail messages.
    • User agents use either SMTP (only to send) or HTTP (in the case of web-based clients like Gmail) to access the mail server. IMAP (Internet Mail Access Protoccol, in the case of Outlook) is another standard only for receiving.
  • Mail servers — which store messages. The mailbox stores incoming messages for the user. The message queue stores outgoing mail messages.
    • These remain always-on, so often mail servers are shared between users.
  • Simple mail transfer protocol (SMTP) — allows mail servers to send email messages between each other. The “client” is the sending server, and the “server” is the receiving server.
    • Email uses TCP over port 25 to reliably transfer email messages from the client to server. Like HTTP, it uses a command/response interaction scheme, where messages are in 7-bit ASCII. The response contains a status code and phrase.

The syntax for the email message is defined similar to HTML. Messages consist of a header (with sender, receiver addresses, and a subject). Then, a blank line, and a message body.

Miscellaneous

Obfuscation

Email obfuscation is a way to prevent malicious bots from scraping your email address (to combat spam and such) if you have it publicly available online, essentially by displaying it in a way that isn’t plain text.

A great resource on what constitutes an effective, accessible method of obfuscation is here. On my website, I use a CSS-based plaintext method (number 1.5 on the list linked above):

span.email b {
	display: none;
}
<span class="email">jasonrx.zhang@mail.<b>mail</b>utoronto<b>.utoronto</b>.ca</span>