python邮件管理

邮件发送

SMTP

  • 打开邮箱的smtp和pop3服务生成授权码(第三方登陆时使用)

  • 简单文本文件邮箱发送

#需要用到内置smtplib模块
from email.mime.text import MIMEText
import smtplib
#邮件对象
def message():
    msg = MIMEText('content','plain','utf-8')
    msg['From'] = '[email protected]'
    msg['To'] = '[email protected]'
    msg['Subject'] = 'subject'
    return msg

#发送邮件函数
def sendmail():
    try:
        smtpObj = smtplib.SMTP('smtp.qq.com')
        smtpObj.login('[email protected]','授权码')
        msg = message()
        smtpObj.sendmail('[email protected]','[email protected]',msg.as_string())
    except smtplib.SMTPException as e:
        print('邮件发送失败...',e)
    else:
        print('邮件发送成功...')
sendmail()
  • html文本文件只需将message=MIMEText('content','plain','utf-8‘)中的plain改为html
  • 发送带附件的邮件
    导入from email.mime.multipart import MIMEMultipart
    用attach方法给message对象里添加对象
  • 发送带图片的邮件
    导入from email.mime.image import MIMEImage

邮件管理

imap

  • 安装IMAPClient 库
import email

import imapclient

#在登陆时遇到LOGIN error问题
# 在http://config.mail.163.com/settings/imap/login.jsp?uid=自己的账户@163.com  里进行安全设置



#建立连接
conn= imapclient.IMAPClient(host='imap.163.com',ssl='True')
print('连接服务器成功..')

#登陆用户
conn.login('[email protected]','redhat111')
print('用户登陆成功...')

#连接收件箱 参数INBOX   第二个参数为提取方式为只读
conn.select_folder('INBOX',readonly=False)

#在收件箱中查找未读的邮件   参数为邮件的状态   返回值为所有未读邮件的编号
result=conn.search("Recent")

#通过fetch()函数 查看邮件的信息  返回值为一个多重嵌套字典   包含邮件id和邮件的所有信息
msgdict=conn.fetch(result,['BODY.PEEK[]'])
#conn.set_flags(msgdict,b'SEEN',silent=False)
# print(msgdict)


#解析邮件内容

#遍历提取邮件内容主题和发送人
for message_id, message in msgdict.items():


    e = email.message_from_string(str(message[b'BODY[]'],encoding='utf8'))
    print(e)
    #subject = email.header.make_header(email.header.decode_header(e['SUBJECT']))
    mail_from = email.header.make_header(email.header.decode_header(e['From']))

    print(mail_from)

你可能感兴趣的:(Python)