Python 简单发送邮件 / 发送带各种附件邮件

写个自动发送邮件的python脚本。

用脚本发送邮件思路是:登陆邮箱-->写邮件-->发送邮件


发送邮箱设置:

得开通自己邮箱的 SMTP 功能,具体可百度。

以163网易邮箱为例: 设置 -->  POP3/SMTP/IMAP  -->  设置POP3/SMTP/IMAP 勾选保存



一、发送简单邮件:

用STMP库

import smtplib
#发送字符串的邮件
from email.mime.text import MIMEText
#处理多种形态的邮件主体我们需要 MIMEMultipart 类
from email.mime.multipart import MIMEMultipart
#处理图片需要 MIMEImage 类
from email.mime.image import MIMEImage

#设置服务器所需信息
fromaddr = '[email protected]'#邮件发送方邮箱地址
password = 'zzz'#密码(部分邮箱为授权码) 
toaddrs = ['[email protected]', '[email protected]']#邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发


#设置email信息
#---------------------------发送字符串的邮件-----------------------------
#邮件内容设置
message = MIMEText('hello,ziqiiii','plain','utf-8')
#邮件主题       
message['Subject'] = 'ziqiiii test email' 
#发送方信息
message['From'] = sender 
#接受方信息     
message['To'] = receivers[0]  
#---------------------------------------------------------------------


#登录并发送邮件
try:
    server = smtplib.SMTP('smtp.163.com')#163邮箱服务器地址,端口默认为25
    server.login(fromaddr,password)
    server.sendmail(fromaddr, toaddrs, message.as_string())
    print('success')
    server.quit()

except smtplib.SMTPException as e:
    print('error',e) #打印错误


二、发送各种带附件的邮件

使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分。如果是附件,则add_header加入附件的声明。

MIME有很多种类型,这个略麻烦,如果附件是图片格式,我要用MIMEImage,如果是音频,要用MIMEAudio,如果是word、excel,我都不知道该用哪种MIME类型了,得上google去查。

最懒的方法就是,不管什么类型的附件,都用MIMEApplication,MIMEApplication默认子类型是application/octet-stream。

import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication 

if __name__ == '__main__':
        fromaddr = '[email protected]'
        password = 'password'
        toaddrs = ['[email protected]', '[email protected]']

        content = 'hello, this is email content.'
        textApart = MIMEText(content)

        imageFile = '1.png'
        imageApart = MIMEImage(open(imageFile, 'rb').read(), imageFile.split('.')[-1])
        imageApart.add_header('Content-Disposition', 'attachment', filename=imageFile)

        pdfFile = '算法设计与分析基础第3版PDF.pdf'
        pdfApart = MIMEApplication(open(pdfFile, 'rb').read())
        pdfApart.add_header('Content-Disposition', 'attachment', filename=pdfFile)
    

        zipFile = '算法设计与分析基础第3版PDF.zip'
        zipApart = MIMEApplication(open(zipFile, 'rb').read())
        zipApart.add_header('Content-Disposition', 'attachment', filename=zipFile)

        m = MIMEMultipart()
        m.attach(textApart)
        m.attach(imageApart)
        m.attach(pdfApart)
        m.attach(zipApart)
        m['Subject'] = 'title'

        try:
            server = smtplib.SMTP('smtp.163.com')
            server.login(fromaddr,password)
            server.sendmail(fromaddr, toaddrs, m.as_string())
            print('success')
            server.quit()
        except smtplib.SMTPException as e:
            print('error:',e) #打印错误




参考自:

1.简单三步,用python发邮件

2.飘逸的python - 发送带各种类型附件的邮件

3.python收发邮件(demo)--smtplib--poplib

猜你喜欢

转载自blog.csdn.net/qq_20417499/article/details/80566265