知行编程网知行编程网  2022-01-06 19:23 知行编程网 隐藏边栏 |   抢沙发  4 
文章评分 0 次,平均分 0.0

SMTP

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。这里我们就需要用到这个库。其中SMTP支持smtplib和Email两个模块,其中smtplib负责发送邮件,email负责构建邮件,SMTP支持发送纯文本,携带附件和携带图片等功能。

1、首先导入smtplib模块和email模块中MIMEText(表示文本)

2、准备发送邮件所需要的参数(服务器,发送者账号,密码,和收件人账号)

  1. # 服务器地址
  2. smtpserver ='smtp.163.com'# 发送账号
  3. user ='XXXXXXXX@163.com'# 发送密码
  4. password ='xxxxxxx'# 收件人
  5. receivers ='821006052@qq.com'

3、根据源码内容完成对参数对应填写

  1. # 邮件标题
  2. subject ='python 发送邮件'# 发送内容 (文本内容,发送格式,编码格式)
  3. message =MIMEText('Python 通过smtplib发送邮件。。。','html','utf-8')
  4. # 发送地址
  5. message['From']= user
  6. # 接受地址
  7. message['To']= receivers
  8. # 邮件标题
  9. message['subject']=subject

4、通过对smtplib模块对邮件进行发送

  1. smtp = smtplib.SMTP()
  2. # 连接服务器
  3. smtp.connect(smtpserver)
  4. # 登录邮箱账号
  5. smtp.login(user,password)
  6. # 发送账号信息
  7. smtp.sendmail(user,receivers,message.as_string())
  8. # 关闭
  9. smtp.quit()

携带附件

我们正常发送邮件的时候可能会携带一些附件,当然这个功能python也可以帮助我们完成,SMTP中自带的有携带附件的模块。

1、导入email中的MIMEMultipart模块

2、准备发送邮件的配置和参数

3、邮件携带的附件

  1. # coding:utf-8 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart
  2.  
  3. # 服务器地址
  4. smtpserver ='smtp.163.com'# 发送账号
  5. user ='xxxxxx@163.com'# 发送密码
  6. password ='xxxxx'# 收件人
  7. receivers ='821006052@qq.com'# 邮件标题
  8. subject ='python 发送携带附件邮件'# 获取附件信息
  9. with open('name.txt','rb',)as f:
  10. body = f.read().decode()
  11. message =MIMEMultipart()
  12. # 发送地址
  13. message['From']= user
  14. # 接受地址
  15. message['To']= receivers
  16. # 邮件标题
  17. message['subject']=subject
  18. # 正文内容
  19. body =MIMEText(body,'html','utf-8')
  20. message.attach(body)
  21. # 传当前目录中的name.txt文件
  22. att =MIMEText(open('name.txt','rb').read(),'base64','utf-8')
  23. att["Content-Type"]='application/octet-stream'# 死格式
  24. # filename 表示附件的名称
  25. att["Content-Disposition"]='attachment; filename="name.txt"' message.attach(att)
  26. smtp = smtplib.SMTP()
  27. # 连接服务器
  28. smtp.connect(smtpserver)
  29. # 登录邮箱账号
  30. smtp.login(user,password)
  31. # 发送账号信息
  32. smtp.sendmail(user,receivers,message.as_string())
  33. # 关闭
  34. smtp.quit()

如果想要添加多个附件的话继续重新传取附件内容,只需要更改不同的附件名称即可

  1. # 传当前目录中的name.txt文件
  2. att =MIMEText(open('name.txt','rb').read(),'base64','utf-8')
  3. att["Content-Type"]='application/octet-stream'# 死格式
  4. # filename 表示附件的名称
  5. att["Content-Disposition"]='attachment; filename="name.txt"'

邮件中添加图片

我们正常发送邮件的时候可以添加图片,当然python发送一样可以帮助我们完成这个需求

1、添加图片,需要用到email中的MIMEImage模块

2、准备发送邮件的配置和参数

3、邮件携带的附件

由于html中不能添加图片链接,因为会被认为是恶意链接,我们可以通过在html写入图片ID,通过ID进行匹配图片内容

  1. # 添加图片
  2. img_body ='''
  3. <span style="font-size: 16px;"><html></span>
    <span style="font-size: 16px;"><head>Python 发送携带图片信息</head></span>
    <span style="font-size: 16px;"><body></span>
    <span style="font-size: 16px;"><p></span>
    <span style="font-size: 16px;"><p><img src=<span style="color: #800000; line-height: 1.5 !important;">"</span><span style="color: #800000; line-height: 1.5 !important;">cid:imageid</span><span style="color: #800000; line-height: 1.5 !important;">"</span>></p></span>
    <span style="font-size: 16px;"><p></span>
    <span style="font-size: 16px;"></body></span>
    <span style="font-size: 16px;"></html></span>
    <span style="color: #800000; font-size: 16px; line-height: 1.5 !important;">'''</span>

     

  4. '''# 正文内容

  5. body =MIMEText(img_body,'html','utf-8')

  6. f = open('123.jpg','rb')

  7. mag =MIMEImage(f.read())

  8. f.close()

  9. # 定义图片ID在HTML中展示

  10. mag.add_header('Content-ID','imageid')

  11. # 添加图片图片

  12. message.attach(mag)

  13. # 添加body内容

  14. message.attach(body)

完整代码:

  1. # coding:utf-8 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage
  2.  
  3. # 服务器地址
  4. smtpserver ='smtp.163.com'# 发送账号
  5. user ='xxxxx@163.com'# 发送密码
  6. password ='xxxxxxx'# 收件人
  7. receivers ='821006052@qq.com'# 邮件标题
  8. subject ='python 发送图片邮件' message =MIMEMultipart()
  9.  
  10. img_body ='''
  11. <span style="font-size: 16px;"><html></span>
    <span style="font-size: 16px;"><head>Python 发送携带图片信息</head></span>
    <span style="font-size: 16px;"><body></span>
    <span style="font-size: 16px;"><p></span>
    <span style="font-size: 16px;"><p><img src=<span style="color: #800000; line-height: 1.5 !important;">"</span><span style="color: #800000; line-height: 1.5 !important;">cid:imageid</span><span style="color: #800000; line-height: 1.5 !important;">"</span>></p></span>
    <span style="font-size: 16px;"><p></span>
    <span style="font-size: 16px;"></body></span>
    <span style="font-size: 16px;"></html></span>
    <span style="color: #800000; line-height: 1.5 !important; font-size: 16px;">'''</span>
  12. '''# 正文内容

  13. body =MIMEText(img_body,'html','utf-8')

  14. f = open('123.jpg','rb')

  15. mag =MIMEImage(f.read())

  16. f.close()

  17. # 定义图片ID在HTML中展示

  18. mag.add_header('Content-ID','imageid')

  19. # 添加图片信息

  20. message.attach(mag)

  21. # 添加正文

  22. message.attach(body)

  23. # 发送地址

  24. message['From']= user

  25. # 接受地址

  26. message['To']= receivers

  27. # 邮件标题

  28. message['subject']=subject

  29. # 非SSL邮箱

  30. smtp = smtplib.SMTP()

  31. # 连接服务器

  32. smtp.connect(smtpserver)

  33. # 登录邮箱账号

  34. smtp.login(user,password)

  35. # 发送账号信息

  36. smtp.sendmail(user,receivers,message.as_string())

  37. # 关闭

  38. smtp.quit()

注意:上面的使用一些常规的邮箱,如果你的发件邮箱有SSL认证的需要打开认证信息,比如QQ邮箱需要配置一些信息

QQ邮箱举例:

1、进入-设置--账户--POP3服务内容,打开POP3/SMTP服务

2、开启后会给一个密码,这个密码就是我们需要登录的密码,复制保存下来

3、上面的代码中需要更改服务器内容

  1. # SSL邮箱(QQ邮箱)
  2. smtp = smtplib.SMTP_SSL(smtpserver,465)
  3. # 登录邮箱账号
  4. smtp.login(user,password)
  5. # 发送账号信息
  6. smtp.sendmail(user,receivers,message.as_string())
  7. # 关闭
  8. smtp.quit()

 

 

Python模块学习系列:
Python模块学习 ---- re正则表达式
Python模块学习 ---- hashlib模块
Python模块学习 ---- random模块

Python模块学习 ---- glob模块

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享