How to write and send an email?
Writing and Sending an Email
Prerequisites
- An email account (e.g., Gmail, Outlook, Yahoo, ProtonMail) with an address in the format
[email protected] - Access via webmail (browser) or an email client/app (Gmail app, Outlook, Thunderbird, Apple Mail)
Anatomy of an Email
- To — primary recipient(s); comma-separate multiple addresses
- Cc — secondary recipients (visible to all)
- Bcc — hidden recipients (invisible to others; use for mass mailings)
- Subject — concise summary of the message (e.g., “Invoice #1042 – Payment Confirmation”)
- Body — the message content
- Attachments — files sent with the message
Step-by-Step Process
- Log in to your email provider or open your email client.
- Click Compose / New / New Message.
- Enter the recipient’s address in the To field — it must be exact (e.g.,
[email protected]). - Write a clear, short Subject line.
- Write the Body:
- Greeting (“Hello Sarah,”)
- Purpose/context in the first sentence
- Details in short paragraphs or bullet points
- Closing (“Best regards,” / “Thank you,”) followed by your name
- Attach files if needed (paperclip icon); most providers limit attachments to 20–25 MB — use cloud links for larger files.
- Review: check recipient addresses, spelling, tone, and that intended attachments are included.
- Click Send. The message typically arrives within seconds.
Key Conventions
- Use Reply for the sender only, Reply All only when all thread participants need the response.
- Use Bcc when emailing large groups to protect recipient privacy.
- Avoid all caps (reads as shouting); use plain, professional language.
- Do not put sensitive information in the Subject line.
Programmatic Sending (Python + SMTP)
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
msg = MIMEMultipart()
msg["From"] = "[email protected]"
msg["To"] = "[email protected]"
msg["Subject"] = "Automated Report"
msg.attach(MIMEText("Report body text here.", "plain"))
with smtplib.SMTP_SSL("smtp.example.com", 465) as server:
server.login("[email protected]", "app_password")
server.send_message(msg)
Note: Major providers (e.g., Gmail) require an app-specific password or OAuth2 instead of the account password.