用python发邮件_手把手教你用python发邮件

简介

当你有个on-the-fly的线上程序,需要定期获取结果或进程记录时,使用Python创建一个邮件发送程序难道不是一件非常有意思的事情吗?发送email就跟我们去邮局寄信是相似的。我们去寄信,当地必须要有一个邮局,同样,电子邮局需要给每个发email的人一个独立的邮箱,并配有账号和密码。通过电子邮局的中转将发件人的信息转达给收件人。

实现过程

import smtplib

from email.header import Header

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

sender = '734513xx7@qq.com' # 发件人账号

senderPSW = 'cjvabvrtlxxxxx' # 发件人账号的授权码

receivers = ['119871xxx1@qq.com'] # 收件人

msg = MIMEMultipart()

msg['From'] = Header(sender)

msg['To'] = Header('杰克', 'utf-8') # 收件人昵称

msg['Subject'] = Header('你有一份邮件等待查收', 'utf-8') # email主题

# 正文

mail_body = MIMEText('亲爱的XX,您好!恭喜您中了一等奖', 'plain', 'utf-8')

msg.attach(mail_body)

# 附件

# 文本

att1 = MIMEText(open('sample.txt', 'rb').read(), 'base64', 'utf-8')

att1["Content-Type"] = 'application/octet-stream'

att1["Content-Disposition"] = 'attachment; filename="sample.txt"'

msg.attach(att1)

# 图片

att2 = MIMEText(open('sample.png', 'rb').read(), 'base64', 'utf-8')

att2["Content-Type"] = 'application/octet-stream'

att2["Content-Disposition"] = 'attachment; filename="sample.png"'

msg.attach(att2)

try:

smtpObj = smtplib.SMTP_SSL('smtp.qq.com', 465) # 465

smtpObj.login(sender, senderPSW)

smtpObj.sendmail(sender, receivers, msg.as_string())

smtpObj.quit()

print('邮件发送成功!')

except smtplib.SMTPException:

print("Error: 邮件发送失败!")

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

importsmtplib

fromemail.headerimportHeader

fromemail.mime.textimportMIMEText

fromemail.mime.multipartimportMIMEMultipart

sender='734513xx7@qq.com'# 发件人账号

senderPSW='cjvabvrtlxxxxx'# 发件人账号的授权码

receivers=['119871xxx1@qq.com']# 收件人

msg=MIMEMultipart()

msg['From']=Header(sender)

msg['To']=Header('杰克','utf-8')# 收件人昵称

msg['Subject']=Header('你有一份邮件等待查收','utf-8')# email主题

# 正文

mail_body=MIMEText('亲爱的XX,您好!恭喜您中了一等奖','plain','utf-8')

msg.attach(mail_body)

# 附件

# 文本

att1=MIMEText(open('sample.txt','rb').read(),'base64','utf-8')

att1["Content-Type"]='application/octet-stream'

att1["Content-Disposition"]='attachment; filename="sample.txt"'

msg.attach(att1)

# 图片

att2=MIMEText(open('sample.png','rb').read(),'base64','utf-8')

att2["Content-Type"]='application/octet-stream'

att2["Content-Disposition"]='attachment; filename="sample.png"'

msg.attach(att2)

try:

smtpObj=smtplib.SMTP_SSL('smtp.qq.com',465)# 465

smtpObj.login(sender,senderPSW)

smtpObj.sendmail(sender,receivers,msg.as_string())

smtpObj.quit()

print('邮件发送成功!')

exceptsmtplib.SMTPException:

print("Error: 邮件发送失败!")

首先,需要导入smtplib模块,专门负责发送邮件。MIMEText用于构建正文和附件内容,MIMEMultipart用于构建带附件的邮件对象,Header用于构建邮件的头部,包括发件人、收件人和主题。

senderPSW变量是发件人账号的授权码,而不是邮箱密码,对于qq邮箱,请看这里申请。

实例化一个MIMEMultipart邮件对象msg。使用Header()函数传入发件人、收件人和主题。

下一步,使用msg的attach()方法将正文mail_body附加上去。

接着构造两个附件att1和att2。其中使用MIMEText()函数将sample.txt和sample.png以base64的编码格式包装好。

MIMEText(open('sample.txt', 'rb').read(), 'base64', 'utf-8')

1

MIMEText(open('sample.txt','rb').read(),'base64','utf-8')

这三个参数的含义:

打开文件并读取得到的字节

字节编码格式为base64

显示时的编码格式:utf-8

需要注意的是:

att1["Content-Disposition"] = 'attachment; filename="sample.txt"'

1

att1["Content-Disposition"]='attachment; filename="sample.txt"'

filename为附件的名称,构造完成后,需要使用attach()方法将附件添加进msg中。

准备工作做好后,就可以向电子邮局投邮件了。

这里使用的是qq邮箱,它的电子邮局是

smtp.qq.com ,端口号为465。

运行程序,如果不出错误的话,几秒钟后就能收到反馈信息,提示“邮件发送成功!”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
统计套利是一种利用不同市场或不同证券之间的价格差异进行交易的策略。在实践中,统计套利经常涉及到多个证券之间的关系,并且需要进行复杂的计算和统计分析。Python是一种强大的编程语言,可以用于实现这种策略。 以下是一个简单的使用Python实现统计套利的步骤: 1. 选择需要进行统计套利的证券。这些证券通常具有相关性,例如同一行业的股票、跨国公司的股票等。 2. 收集所选证券的历史价格数据。这可以通过从金融数据提供商如雅虎财经或谷歌财经获取数据,或者使用Python库(如pandas-datareader)来获取数据。 3. 计算每个证券的收益率。根据所选证券的历史价格数据,计算每个证券的收益率。这可以通过计算每个证券的价格变化率来实现。 4. 计算每对证券之间的协方差。使用pandas库中的corr()函数计算每对证券之间的协方差。这可以帮助确定证券之间的相关性。 5. 构建线性回归模型。使用StatsModels库中的OLS()函数构建线性回归模型。该模型可以帮助确定每个证券的权重。 6. 计算每个证券的标准化收益率。根据每个证券的收益率和其权重,计算每个证券的标准化收益率。 7. 计算套利指数。根据每个证券的标准化收益率,计算套利指数。套利指数表示所有选定证券的加权平均值。 8. 制定交易策略。根据套利指数和选定证券的价格变化,制定交易策略。 虽然以上步骤是一个简单的指南,但实际实现统计套利需要更多的计算和分析。但是,使用Python可以让这个过程更加高效和自动化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值