Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions extensions/qq-mail/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules

# Raycast specific files
raycast-env.d.ts
.raycast-swift-build
.swiftpm
compiled_raycast_swift
compiled_raycast_rust

# misc
.DS_Store
4 changes: 4 additions & 0 deletions extensions/qq-mail/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"printWidth": 120,
"singleQuote": false
}
3 changes: 3 additions & 0 deletions extensions/qq-mail/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# QQ Mail Changelog

## [Initial Release] - {PR_MERGE_DATE}
85 changes: 85 additions & 0 deletions extensions/qq-mail/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# QQ Mail

View and manage your QQ Mail inbox directly in Raycast.

## Features

- **Email List View** - Browse emails with subject, sender, date, and read/unread status
- **Email Detail View** - Read full email content in a detail pane
- **Folder Navigation** - Switch between Inbox, Sent, Drafts, Archive, Trash, and custom folders
- **Filtering** - Filter emails by All, Unread, Read, or Has Attachment
- **Compose Email** - Write new emails or Reply, Reply All, and Forward
- **Pagination** - Load more emails as needed with configurable page size
- **Attachments** - Download individual attachments or all at once
- **Expanded Email View** - Read emails in full-screen with metadata sidebar
- **Email Actions**:
- Reply / Reply All / Forward
- Mark as Read / Unread
- Archive
- Delete
- Download Attachments
- Copy subject, sender, or email body (plain text or Markdown)

## Requirements

- A QQ Mail account (`@qq.com`)
- IMAP/SMTP service enabled in QQ Mail settings
- An **authorization code** (not your QQ password)

> **Note:** This extension currently supports one account at a time.

## Setup

1. Log in to [QQ Mail](https://mail.qq.com) in your browser
2. Go to **Settings → Account → POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV**
3. Enable **IMAP/SMTP Service** and generate an **authorization code**
4. Open the extension preferences in Raycast and fill in:
- **QQ Email Address**: e.g. `123456@qq.com`
- **Authorization Code**: the code generated in step 3 (NOT your QQ password)
- **Emails to Load**: number of emails per page (20, 50, 100, or 200)
- - ![code](./get-auth-code.png)

The extension connects to QQ Mail servers automatically:

- IMAP: `imap.qq.com:993` (SSL)
- SMTP: `smtp.qq.com:465` (SSL)

## Filtering

The extension provides a single dropdown that combines:

- **Folder selection** (Inbox, Sent, Drafts, etc.)
- **Status filters** (All, Unread, Read, Has Attachment)

Select a folder first, then use the filter section to narrow down emails.

## Pagination

The extension loads emails in pages based on your "Emails to Load" preference. Press ⌘L or select "Load More Emails" from the action menu to fetch older emails.

## Attachments

When viewing an email with attachments:

1. Select "Download Attachments" from the action menu
2. Choose to download a single attachment or all at once
3. Single files are saved to `~/Downloads/`
4. Multiple files are saved to a timestamped folder: `~/Downloads/qq-mail-attachments-YYYYMMDDTHHMMSS/`

## Keyboard Shortcuts

| Action | Shortcut |
| -------------------- | -------- |
| Expand Email | ⌘↩ |
| Reply | ⌘R |
| Reply All | ⇧⌘R |
| Forward | ⌘F |
| Mark Read/Unread | ⇧⌘U |
| Archive | ⌘E |
| Delete | ⌘⌫ |
| Download Attachments | ⌘D |
| Compose New Email | ⌘N |
| Copy Subject | ⌘C |
| Copy Sender | ⇧⌘C |
| Copy as Markdown | ⇧⌘M |
| Load More Emails | ⌘L |
Binary file added extensions/qq-mail/assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions extensions/qq-mail/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const { defineConfig } = require("eslint/config");
const raycastConfig = require("@raycast/eslint-config");

module.exports = defineConfig([
...raycastConfig,
]);
Binary file added extensions/qq-mail/metadata/qq-mail-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extensions/qq-mail/metadata/qq-mail-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extensions/qq-mail/metadata/qq-mail-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extensions/qq-mail/metadata/qq-mail-4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extensions/qq-mail/metadata/qq-mail-5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading