# Connect iCloud Mail with IMAP and SMTP

Canonical: https://figment.so/blog/icloud-mail-imap-smtp

iCloud Mail works with any IMAP and SMTP client. The two things that trip up almost every setup are the username format — it differs between the incoming and outgoing servers — and the requirement for an app-specific password rather than your Apple Account password. Get those right and the connection is straightforward.

## Quick-reference: iCloud Mail protocol settings

Use this table as your single reference point. Settings come from Apple's official iCloud Mail setup guide ([support.apple.com/102525](https://support.apple.com/en-us/102525)).

| | IMAP (incoming) | SMTP (outgoing) |
|---|---|---|
| **Server** | imap.mail.me.com | smtp.mail.me.com |
| **Port** | 993 | 587 |
| **Security** | SSL / TLS | SSL / TLS (STARTTLS on port 587) |
| **Username** | Bare mail name, no domain&nbsp;(e.g. `johnappleseed`) | Full email address&nbsp;(e.g. `johnappleseed@icloud.com`) |
| **Password** | App-specific password | Same app-specific password |
| **Authentication** | Required | Required |

**POP is not supported.** iCloud Mail only exposes IMAP for incoming mail.

### Setup checklist

Work through this before opening your client settings.

- [ ] Two-factor authentication is enabled on your Apple Account
- [ ] iCloud Mail is active (enabled in iCloud settings on any Apple device)
- [ ] App-specific password generated and copied from account.apple.com
- [ ] IMAP: server `imap.mail.me.com`, port `993`, SSL/TLS on, username = bare name
- [ ] SMTP: server `smtp.mail.me.com`, port `587`, SSL/TLS on (STARTTLS mechanism), username = full address
- [ ] Authentication enabled on the SMTP connection
- [ ] Test send and receive after saving

## Prerequisites

**Two-factor authentication.** Apple requires 2FA to be active on your Apple Account before you can generate an app-specific password. If 2FA is off, enable it at [account.apple.com](https://account.apple.com) under Sign-In and Security.

**An active iCloud Mail address.** iCloud Mail is not on by default for every Apple Account. If you have never used it, enable iCloud Mail in System Settings (macOS) or Settings → iCloud (iOS/iPadOS). Apple assigns an @icloud.com address at activation.

**App-specific password.** iCloud Mail does not accept your Apple Account password directly in third-party clients. You need an app-specific password — a separate reusable token generated at account.apple.com. The next section shows how.

## Generate an app-specific password

App-specific passwords are created and managed at [account.apple.com](https://account.apple.com). The steps below follow Apple's documentation ([support.apple.com/102654](https://support.apple.com/en-us/102654)).

1. Go to [account.apple.com](https://account.apple.com) and sign in with your Apple Account.
2. Select **Sign-In and Security**, then **App-Specific Passwords**.
3. Click the **+** button (or **Generate an App-Specific Password**).
4. Enter a label — for example, `Thunderbird` or `My mail app` — and click **Create**.
5. Apple displays a 16-character password. Copy it immediately; it will not be shown again.
6. Paste the password into your email client's password field for both IMAP and SMTP.

An Apple Account can hold up to 25 active app-specific passwords. App-specific passwords are reusable credentials — the same password continues to work until you revoke it or change your Apple Account password. Revoke unused passwords from the same App-Specific Passwords screen at account.apple.com.

## Configure the IMAP connection

Open your email client's account or server settings and enter the following for incoming mail.

- **Server:** `imap.mail.me.com`
- **Port:** `993`
- **Connection security:** SSL/TLS (sometimes labelled "Use SSL")
- **Username:** your iCloud Mail name **without** the domain — for example `johnappleseed`, not `johnappleseed@icloud.com`
- **Password:** the app-specific password you generated

The username format is the most common source of IMAP authentication errors. Some clients pre-fill the username from the email address you enter; if yours does, delete the `@icloud.com` part before saving. If the bare name fails to authenticate in a particular client, try the full email address (e.g. `johnappleseed@icloud.com`) as a fallback, as Apple's documentation notes both forms.

After saving, your client should fetch the IMAP folder list. iCloud Mail exposes standard folders — Inbox, Sent, Drafts, Trash, Archive — plus any mailboxes you have created.

## Configure the SMTP connection

For outgoing mail the username format flips: use the **full email address**, not the bare name.

- **Server:** `smtp.mail.me.com`
- **Port:** `587`
- **Connection security:** SSL / TLS required — Apple labels this "SSL Required"; the encryption mechanism on port 587 is STARTTLS, which clients may list as "TLS", "STARTTLS", or "SSL"
- **Authentication:** required — select "Normal password" or equivalent
- **Username:** full iCloud Mail address, for example `johnappleseed@icloud.com`
- **Password:** the same app-specific password used for IMAP

If your client asks whether to authenticate the SMTP server, say yes. iCloud's outgoing server requires authentication and rejects unauthenticated submissions.

Send a test message after saving SMTP settings to confirm delivery before relying on the connection.

## Apple Account authorization: the alternative to app-specific passwords

Apple offers a newer authorization flow for supported third-party apps accessing iCloud Mail, Calendar, and Contacts ([support.apple.com/121539](https://support.apple.com/en-us/121539)). Instead of generating a static app-specific password, the user approves the app through a consent screen and Apple manages a revocable authorization for that app. The app never sees the Apple Account password.

This is similar in concept to OAuth: the authorization is visible and revocable at account.apple.com. Removing it immediately cuts off that app's access without affecting other connected apps. To revoke, go to account.apple.com → **Sign-In and Security** → **Account Data Sharing**, then remove the app.

**When to use each option:**

- **App-specific password:** Works with any standards-compliant IMAP/SMTP client today. Use it for desktop mail clients, scripts, or tooling that you control.
- **Apple Account authorization:** Use it when building a user-facing app that requests iCloud access on behalf of end users, and when the app qualifies for Apple's authorization program. Developer enrollment contact: [developer.apple.com/contact/request/icloud-oauth2](https://developer.apple.com/contact/request/icloud-oauth2/).

## Connect Apple data to your app with Figment

IMAP and SMTP are Apple-supported protocols that your application can use directly with the settings above. For applications that need programmatic access to other Apple services — iMessage, or read access to Contacts, Calendar, and Reminders — Figment Apple Connect provides a user-approved OAuth-style consent layer. Your app receives a scoped access token; the developer application never receives the Apple Account password.

For a full overview of available scopes and the authorization flow, see [OAuth for iCloud: Connect Apple Data to Your App](/oauth-for-icloud).

**Ready to build?** Visit [Connect Apple Account](/apple-connect/developers) to register your app and explore the developer sandbox.
