Python操作邮箱发送邮件(网易邮箱)

以网易邮箱为例:

准备工作:

1)首先进入网页版网易邮箱,点击设置

2)点击,POP3/SMTP/IMAP

3)开启  IMAP/SMTP服务 和 POP3/SMTP服务  并且记住授权码(一定要记住只会出现一次)

1.发送纯文本邮件

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage

EMAIL_ADDRESS = "自己的邮箱账号"     # 邮箱的地址
EMAIL_PASSWORD = "自己的授权码"     # 授权码

# 连接到smtp服务器
# smtp = smtplib.SMTP('smtp.163.com', 25)     # 未加密

# 也可以使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()


'''
# 为了防止信息在网络传输中泄漏,最好对信息进行加密
smtp = smtplib.SMTP_SSL("smtp.163.com", 465, context=context)       # 完成加密通讯

# 连接成功后使用login方法登录自己的邮箱
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)

# 一、使用 sendmail 方法实现发送邮件信息
sender = EMAIL_ADDRESS      # 用来发送的邮箱地址
receive = ""        # 目标邮箱地址
subject = "邮件标题内容"
body = "邮件主体内容"
msg = f"Subject: {subject}\n\n{body}"
smtp.sendmail(sender, receive, msg)


# 发送完毕后使用 quit 方法关闭连接
smtp.quit()
'''

subject = "邮件标题内容"
body = "邮件主体内容"

msg = EmailMessage()
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = "目标邮箱账号"                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容

# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯

    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)

    '''
    # 方式一:
    # 使用 sendmail 方法实现发送邮件信息
    sender = EMAIL_ADDRESS      # 邮件发件人
    receive = EMAIL_ADDRESS       # 邮件收件人
    subject = "subject"
    body = "body"
    msg = f"Subject: {subject}\n\n{body}"
    print("正在发送。。。。。。。。。。。。。。。。。。")
    smtp.sendmail(sender, receive, msg)
    print("发送成功。。。。。。。。。。。。。。。。。。")
    '''

    # 方式二:使用send_message方法发送邮件信息
    smtp.send_message(msg)



2.发送带有HTML的邮件

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage

EMAIL_ADDRESS = "自己的邮箱账号"     # 邮箱的地址
EMAIL_PASSWORD = "自己的授权吗"     # 授权码

# 使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()


subject = "邮件标题内容"
body = "邮件主体内容"
msg = EmailMessage()
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = "目标邮箱账号"                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容

# 要想为邮件添加HTML内容,使用add_alternative()方法实现,注意要放在set_context之后
HTML = """\
<!doctype html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <title>消失在宇宙星空中的404页面</title>
    <link href="{{ url_for('static',filename='404/404.css') }}" rel="stylesheet" type="text/css">
</head>
<body>
<p>HTML</p>
</div>
</body>
</html>
"""
msg.add_alternative(HTML, subtype='html')

# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯

    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    # 使用send_message方法发送邮件信息
    smtp.send_message(msg)

3.发送带有附件的邮件

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage

EMAIL_ADDRESS = "自己的邮箱账号"     # 邮箱的地址
EMAIL_PASSWORD = "自己的授权码"     # 授权码

# 使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()


subject = "邮件标题内容"
body = "邮件主体内容"
msg = EmailMessage()
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = "目标邮箱账号"                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容

# 要想为邮件添加附件内容首先要读入文件的二进制内容
filename = '要附带的文件地址'
with open(filename,'rb') as f:
    filedata = f.read()

# 使用add_attachment方法添加附件的数据
msg.add_attachment(filedata, maintype='', subtype='', filename=filename)    # filedata:文件数据;maintype文件类型;subtype文件后缀名;filename:文件名

# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯

    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    # 使用send_message方法发送邮件信息
    smtp.send_message(msg)

4.向多人发送邮件

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage

EMAIL_ADDRESS = "自己的邮箱地址"     # 邮箱的地址
EMAIL_PASSWORD = "自己的授权码"     # 授权码

# 使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()

'''
# 方法一:在msg的To部分设置多个email目标地址,使用列表存储这多个email地址,这会向多个用户发送相同的内容
subject = "邮件标题内容"
body = "邮件主体内容"
msg = EmailMessage()
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = ['a.@qq.com', 'b@qq.com', 'c@qq.com']                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容

# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯

    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    # 使用send_message方法发送邮件信息
    smtp.send_message(msg)
'''

# 方法二:向不同的用户发送不同的内容
# 建立一个列表来存储目标邮箱地址
contacts = ['a.@qq.com', 'b@qq.com', 'c@qq.com']
# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯
    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    for contact in contacts:
        subject = "邮件标题内容"
        body = f"{contact}邮件主体内容"
        msg = EmailMessage()
        msg['subject'] = subject  # 邮件标题
        msg['From'] = EMAIL_ADDRESS  # 邮件发件人
        msg['To'] = contact  # 邮件的收件人
        msg.set_content(body)  # 使用set_content()方法设置邮件的主体内容
        # 使用send_message方法发送邮件信息
        smtp.send_message(msg)
  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值