python自动发送163邮箱,带附件与不带附件

需要用163邮箱向办公邮箱发送数据,搜索大量代码发现两个亲测可用的代码,转载过来。
其中添加附件的我做了修改,不然发送不成功,不带附件的代码如下:

import smtplib
from email.mime.text import MIMEText

mailserver = "smtp.163.com"  # 邮箱服务器地址
username_send = 'ahtgyy@163.com'  # 邮箱用户名
password = 'WMTXRMGGIEURQNTL'  # 邮箱密码:需要使用授权码--填写自己独有的
username_recv = ['395827040@qq.com']  # 收件人,多个收件人用逗号隔开
mail = MIMEText('这是自动发送的信托净值\n不要回复')
mail['Subject'] = '上海信托现金丰利净值'
mail['From'] = username_send  # 发件人
mail['To'] = ",".join(username_recv)  # 收件人;[]里的三个是固定写法,别问为什么,我只是代码的搬运工
#join 函数的应用,前面按照常理来说是";"分号,但是我试过,分号没有用,只能用","才能顺利发送。这个可能跟163邮箱自身有关
smtp = smtplib.SMTP(mailserver, port=25)  # 连接邮箱服务器,smtp的端口号是25
# smtp=smtplib.SMTP_SSL('smtp.qq.com',port=465) #QQ邮箱的服务器和端口号

smtp.login(username_send, password)  # 登录邮箱
smtp.sendmail(username_send, username_recv, mail.as_string())  # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
smtp.quit()  # 发送完毕后退出smtp
print('success')

博文原地址:
原地址
带附件的代码:

# -*- coding: utf-8 -*-
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
mail_host ='smtp.163.com' #mail_host = 'smtp.qq.com'
port=25 #QQ邮箱是465
send_by = 'aht@163.com'
password = 'WMTXRMGGI'
username_recv = ['3958@qq.com']# 收件人,多个收件人用逗号隔开

msg = MIMEMultipart() # 创建一个带附件的实例
msg["Subject"] = "托管自动发邮件测试"
msg["From"] = send_by

# ---文字部分---
part = MIMEText("这是自动发送的信托净值,请查收,谢谢!")
msg.attach(part)

# ---附件部分---
part = MIMEApplication(open('丰利净值.xlsx', 'rb').read())
part.add_header('Content-Disposition', 'attachment', filename="丰利净值.xlsx")
msg.attach(part)

# 要注意位置参数和关键字参数啊啊
smtp = smtplib.SMTP(mail_host, port, 'utf-8')#原博主使用的是smpt = smtplib.SMTP_SSL(mail_host, port, 'utf-8'),163邮箱会报错
smtp.login(send_by, password)
smtp.sendmail(send_by, username_recv, msg.as_string())
smtp.quit()
print("发送成功")

其中最后一段我标记了原博主写的和我写的不一样我用原博主的无法发送,改成我这样的成功了,打开可以试试

原博文地址:
原地址

### 批量下载网易163邮箱中的邮件附件 为了实现批量下载网易163邮箱中的邮件及其附件,可以采用基于IMAP协议的方式。这种方式允许更灵活的操作,包括但限于选择特定文件夹内的邮件、筛选条件以及处理大容量数据。 #### 使用Python库`imaplib`和`smtplib` 通过Python标准库中的`imaplib`模块来访问电子邮件账户并检索消息;而`smtplib`则用于发送命令至服务器端完成身份验证过程[^2]。对于具体实施细节如下: - **安装必要的第三方包** 安装额外的支持库如`email`, `pandas`等有助于解析复杂的MIME结构化文档,并能更好地管理所提取的信息。 ```bash pip install pandas email ``` - **编写核心逻辑代码** 下面是一个简单的例子展示怎样连接到指定的电子信箱账号,遍历收件箱内每封信件,最后保存所有发现的附加文件到本地磁盘上。 ```python import imaplib import os from email import policy from email.parser import BytesParser def fetch_attachments(email_user, password, folder='INBOX', output_dir='./attachments'): mail = imaplib.IMAP4_SSL('imap.163.com') mail.login(email_user, password) status, messages = mail.select(folder) if not os.path.exists(output_dir): os.makedirs(output_dir) _, data = mail.search(None, 'ALL') mail_ids = data[0].split() for num in reversed(mail_ids): typ, msg_data = mail.fetch(num, '(RFC822)') for response_part in msg_data: if isinstance(response_part, tuple): msg = BytesParser(policy=policy.default).parsebytes(response_part[1]) for part in msg.walk(): content_disposition = str(part.get("Content-Disposition")) if "attachment" in content_disposition.lower(): filename = part.get_filename() filepath = os.path.join(output_dir, filename) with open(filepath, 'wb') as f: f.write(part.get_payload(decode=True)) mail.logout() if __name__ == '__main__': user_email = input("Enter your 163 Email:") pwd = input("Enter the app-specific password:") try: fetch_attachments(user_email, pwd) print(f'Attachments have been successfully downloaded.') except Exception as e: print(str(e)) ``` 上述脚本实现了基本的功能需求——登录用户的163邮箱账户,进入默认的收件箱(`INBOX`),逐条读取消息直至找到附件的部分为止,随后将其存储于预先设定好的目录之下[^4]。 需要注意的是,在实际部署前应当确保已开启相应的IMAP服务权限,并且考虑到安全因素建议使用应用程序专用密码而非直接输入主帐户凭证信息来进行认证操作。 另外,当面对较大规模的数据集时可能会触发服务商施加的各种限流措施,因此合理规划请求频率同样重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值