## emailclient
一个简单易用的邮件客户端,支持发送和接收邮件,可以处理附件、设置过滤条件等功能。支持 QQ 邮箱、163邮箱等邮箱
## 支持的邮箱
- QQ邮箱
- 163邮箱(网易邮箱)
- 139邮箱
- iCloud
- Gmail
- Outlook/Hotmail
## 安装
```bash
pip install emlclient
```
## 使用示例
### 1. 读取未读邮件
```python
from emlclient import EmailClient
# 初始化邮件客户端
client = EmailClient(
username="your_email@example.com",
password="your_password"
)
# 读取最新的3封未读邮件
emails = client.read_emails(
criteria="UNSEEN",
limit=3,
seen=True # 设置为已读
)
# 打印邮件内容
for email in emails:
print(f"发件人: {email['sender']}")
print(f"主题: {email['subject']}")
print(f"内容: {email['body']}\n")
```
### 2. 发送带附件的邮件
```python
from emlclient import EmailClient
client = EmailClient(
username="your_email@example.com",
password="your_password"
)
# 发送带附件的邮件
result = client.send_email(
to="recipient@example.com",
subject="测试邮件",
content="这是一封测试邮件",
attachments=["document.pdf", "image.jpg"]
)
```
### 3. 按条件搜索邮件
```python
from emlclient import EmailClient
client = EmailClient(
username="your_email@example.com",
password="your_password"
)
# 搜索2024年1月1日之后的包含"发票"的邮件
emails = client.read_emails(
criteria='SINCE "01-Jan-2024" SUBJECT "发票"',
limit=5
)
# 打印搜索结果
for email in emails:
print(f"日期: {email['date']}")
print(f"主题: {email['subject']}")
```
## 搜索条件说明
支持的搜索条件包括:
- `ALL`: 所有邮件
- `UNSEEN`: 未读邮件
- `SEEN`: 已读邮件
- `FROM "someone@example.com"`: 来自特定发件人的邮件
- `TO "someone@example.com"`: 发送给特定收件人的邮件
- `SUBJECT "test"`: 主题包含特定文字的邮件
- `SINCE "01-Jan-2020"`: 某个日期之后的邮件
- `BEFORE "01-Jan-2020"`: 某个日期之前的邮件
- `LARGER 1000`: 大于1000字节的邮件
- `SMALLER 1000`: 小于1000字节的邮件
多个条件可以组合使用,如: `UNSEEN SUBJECT "test"`
## 注意事项
1. 部分邮箱服务商可能需要特殊配置,请参考各自的文档(比如一些邮箱密码需要使用授权码而不是登录密码)
## License
MIT
Raw data
{
"_id": null,
"home_page": "https://github.com/linsuiyuan/email-client",
"name": "emlclient",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "Linsuiyuan",
"author_email": "linsuiyuan@icloud.com",
"download_url": "https://files.pythonhosted.org/packages/f7/af/164876511353baee89ae3a3f31b58e8e0cf47f865526cfc6e26e88f3641b/emlclient-1.0.0.tar.gz",
"platform": null,
"description": "## emailclient\n\n\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684\u90ae\u4ef6\u5ba2\u6237\u7aef\uff0c\u652f\u6301\u53d1\u9001\u548c\u63a5\u6536\u90ae\u4ef6\uff0c\u53ef\u4ee5\u5904\u7406\u9644\u4ef6\u3001\u8bbe\u7f6e\u8fc7\u6ee4\u6761\u4ef6\u7b49\u529f\u80fd\u3002\u652f\u6301 QQ \u90ae\u7bb1\u3001163\u90ae\u7bb1\u7b49\u90ae\u7bb1\n\n## \u652f\u6301\u7684\u90ae\u7bb1\n\n- QQ\u90ae\u7bb1\n- 163\u90ae\u7bb1(\u7f51\u6613\u90ae\u7bb1)\n- 139\u90ae\u7bb1\n- iCloud\n- Gmail\n- Outlook/Hotmail\n\n## \u5b89\u88c5\n\n```bash\npip install emlclient\n```\n\n## \u4f7f\u7528\u793a\u4f8b\n\n### 1. \u8bfb\u53d6\u672a\u8bfb\u90ae\u4ef6\n\n```python\nfrom emlclient import EmailClient\n\n# \u521d\u59cb\u5316\u90ae\u4ef6\u5ba2\u6237\u7aef\nclient = EmailClient(\n username=\"your_email@example.com\",\n password=\"your_password\"\n)\n\n# \u8bfb\u53d6\u6700\u65b0\u76843\u5c01\u672a\u8bfb\u90ae\u4ef6\nemails = client.read_emails(\n criteria=\"UNSEEN\",\n limit=3,\n seen=True # \u8bbe\u7f6e\u4e3a\u5df2\u8bfb\n)\n\n# \u6253\u5370\u90ae\u4ef6\u5185\u5bb9\nfor email in emails:\n print(f\"\u53d1\u4ef6\u4eba: {email['sender']}\")\n print(f\"\u4e3b\u9898: {email['subject']}\")\n print(f\"\u5185\u5bb9: {email['body']}\\n\")\n```\n\n### 2. \u53d1\u9001\u5e26\u9644\u4ef6\u7684\u90ae\u4ef6\n\n```python\nfrom emlclient import EmailClient\n\nclient = EmailClient(\n username=\"your_email@example.com\",\n password=\"your_password\"\n)\n\n# \u53d1\u9001\u5e26\u9644\u4ef6\u7684\u90ae\u4ef6\nresult = client.send_email(\n to=\"recipient@example.com\",\n subject=\"\u6d4b\u8bd5\u90ae\u4ef6\",\n content=\"\u8fd9\u662f\u4e00\u5c01\u6d4b\u8bd5\u90ae\u4ef6\",\n attachments=[\"document.pdf\", \"image.jpg\"]\n)\n```\n\n### 3. \u6309\u6761\u4ef6\u641c\u7d22\u90ae\u4ef6\n\n```python\nfrom emlclient import EmailClient\n\nclient = EmailClient(\n username=\"your_email@example.com\",\n password=\"your_password\"\n)\n\n# \u641c\u7d222024\u5e741\u67081\u65e5\u4e4b\u540e\u7684\u5305\u542b\"\u53d1\u7968\"\u7684\u90ae\u4ef6\nemails = client.read_emails(\n criteria='SINCE \"01-Jan-2024\" SUBJECT \"\u53d1\u7968\"',\n limit=5\n)\n\n# \u6253\u5370\u641c\u7d22\u7ed3\u679c\nfor email in emails:\n print(f\"\u65e5\u671f: {email['date']}\")\n print(f\"\u4e3b\u9898: {email['subject']}\")\n```\n\n## \u641c\u7d22\u6761\u4ef6\u8bf4\u660e\n\n\u652f\u6301\u7684\u641c\u7d22\u6761\u4ef6\u5305\u62ec\uff1a\n- `ALL`: \u6240\u6709\u90ae\u4ef6\n- `UNSEEN`: \u672a\u8bfb\u90ae\u4ef6\n- `SEEN`: \u5df2\u8bfb\u90ae\u4ef6\n- `FROM \"someone@example.com\"`: \u6765\u81ea\u7279\u5b9a\u53d1\u4ef6\u4eba\u7684\u90ae\u4ef6\n- `TO \"someone@example.com\"`: \u53d1\u9001\u7ed9\u7279\u5b9a\u6536\u4ef6\u4eba\u7684\u90ae\u4ef6\n- `SUBJECT \"test\"`: \u4e3b\u9898\u5305\u542b\u7279\u5b9a\u6587\u5b57\u7684\u90ae\u4ef6\n- `SINCE \"01-Jan-2020\"`: \u67d0\u4e2a\u65e5\u671f\u4e4b\u540e\u7684\u90ae\u4ef6\n- `BEFORE \"01-Jan-2020\"`: \u67d0\u4e2a\u65e5\u671f\u4e4b\u524d\u7684\u90ae\u4ef6\n- `LARGER 1000`: \u5927\u4e8e1000\u5b57\u8282\u7684\u90ae\u4ef6\n- `SMALLER 1000`: \u5c0f\u4e8e1000\u5b57\u8282\u7684\u90ae\u4ef6\n\n\u591a\u4e2a\u6761\u4ef6\u53ef\u4ee5\u7ec4\u5408\u4f7f\u7528\uff0c\u5982: `UNSEEN SUBJECT \"test\"`\n\n## \u6ce8\u610f\u4e8b\u9879\n\n1. \u90e8\u5206\u90ae\u7bb1\u670d\u52a1\u5546\u53ef\u80fd\u9700\u8981\u7279\u6b8a\u914d\u7f6e\uff0c\u8bf7\u53c2\u8003\u5404\u81ea\u7684\u6587\u6863(\u6bd4\u5982\u4e00\u4e9b\u90ae\u7bb1\u5bc6\u7801\u9700\u8981\u4f7f\u7528\u6388\u6743\u7801\u800c\u4e0d\u662f\u767b\u5f55\u5bc6\u7801)\n\n## License\n\nMIT\n",
"bugtrack_url": null,
"license": null,
"summary": "\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684\u90ae\u4ef6\u5ba2\u6237\u7aef\uff0c\u652f\u6301\u53d1\u9001\u548c\u63a5\u6536\u90ae\u4ef6\uff0c\u652f\u6301 QQ \u90ae\u7bb1\u3001163\u90ae\u7bb1\u7b49\u90ae\u7bb1",
"version": "1.0.0",
"project_urls": {
"Homepage": "https://github.com/linsuiyuan/email-client"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e31e66a1f07f65d53caaf52eaba566128b874718e3275d3812cd147aadc539fc",
"md5": "20031d54767510eab45334412efc6cee",
"sha256": "a733b077dc4b3c4b256e370ae85843ebfe6d85ea303ca6a4cf97731f324a368b"
},
"downloads": -1,
"filename": "emlclient-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "20031d54767510eab45334412efc6cee",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 6017,
"upload_time": "2024-12-01T02:36:20",
"upload_time_iso_8601": "2024-12-01T02:36:20.024822Z",
"url": "https://files.pythonhosted.org/packages/e3/1e/66a1f07f65d53caaf52eaba566128b874718e3275d3812cd147aadc539fc/emlclient-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f7af164876511353baee89ae3a3f31b58e8e0cf47f865526cfc6e26e88f3641b",
"md5": "dd4bea3bf2bedff833a3978a804e31f5",
"sha256": "67fb18c3d877535885e76241c99fd0dce554bfd1c26429452a0c4565f101ed96"
},
"downloads": -1,
"filename": "emlclient-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "dd4bea3bf2bedff833a3978a804e31f5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 5149,
"upload_time": "2024-12-01T02:36:39",
"upload_time_iso_8601": "2024-12-01T02:36:39.112338Z",
"url": "https://files.pythonhosted.org/packages/f7/af/164876511353baee89ae3a3f31b58e8e0cf47f865526cfc6e26e88f3641b/emlclient-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-01 02:36:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "linsuiyuan",
"github_project": "email-client",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "emlclient"
}