python发送邮件

迈不过友情╰ 2021-12-04 07:59 468阅读 0赞

开启邮箱服务器

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTk4MDEx_size_16_color_FFFFFF_t_70

进入设置后选择账号

2019071810341017.png

获取授权码

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTk4MDEx_size_16_color_FFFFFF_t_70 1

代码

导入的依赖

  1. import smtplib
  2. from email.mime.text import MIMEText

给多人发送文本

  1. import smtplib
  2. from email.mime.text import MIMEText
  3. # 邮箱服务器地址
  4. mailserver = "smtp.qq.com"
  5. # 邮箱用户名
  6. username_send = 'XXXXX@QQ.com'
  7. # 邮箱密码:需要使用授权码
  8. password = 'bgqqjXXXXXXXX'
  9. # 收件人,多个收件人用逗号隔开
  10. username_recv = 'XXXX@qq.com,XXXX@QQ.com'
  11. def send_email(message):
  12. mail = MIMEText(message)
  13. mail['Subject'] = '测试aaaa'
  14. # 发件人
  15. mail['From'] = username_send
  16. # 收件人
  17. mail['To'] = username_recv
  18. # 连接邮箱服务器,smtp的端口号是25
  19. smtp = smtplib.SMTP(mailserver, port=25)
  20. # smtp=smtplib.SMTP_SSL('smtp.qq.com',port=465)
  21. # #QQ邮箱的服务器和端口号
  22. # 登录邮箱
  23. smtp.login(username_send, password)
  24. # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
  25. smtp.sendmail(username_send, username_recv.split(','), mail.as_string())
  26. # 发送完毕后退出smtp
  27. smtp.quit()
  28. list = ""
  29. list += "测试"
  30. send_email(list)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTk4MDEx_size_16_color_FFFFFF_t_70 2

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTk4MDEx_size_16_color_FFFFFF_t_70 3

OK~两个人都收到了!!!!

发送文本+邮件

  1. import base64
  2. import os
  3. import smtplib
  4. from email.mime.multipart import MIMEMultipart
  5. from email.mime.text import MIMEText
  6. import base64
  7. import os
  8. import smtplib
  9. from email.mime.multipart import MIMEMultipart
  10. from email.mime.text import MIMEText
  11. # 发送短信
  12. class SendMail(object):
  13. def __init__(self, username, passwd, recv, title, content,
  14. file=None, ssl=False,
  15. email_host='smtp.qq.com', port=25, ssl_port=465, html=False):
  16. '''
  17. :param username: 用户名
  18. :param passwd: 密码
  19. :param recv: 收件人,多个要传list ['a@qq.com','b@qq.com]
  20. :param title: 邮件标题
  21. :param content: 邮件正文
  22. :param file: 附件路径,如果不在当前目录下,要写绝对路径,默认没有附件
  23. :param ssl: 是否安全链接,默认为普通
  24. :param email_host: smtp服务器地址,默认为163服务器
  25. :param port: 非安全链接端口,默认为25
  26. :param ssl_port: 安全链接端口,默认为465
  27. '''
  28. self.username = username # 用户名
  29. self.passwd = passwd # 密码
  30. self.recv = recv # 收件人,多个要传list ['a@qq.com','b@qq.com]
  31. self.title = title # 邮件标题
  32. self.content = content # 邮件正文
  33. self.file = file # 附件路径,如果不在当前目录下,要写绝对路径
  34. self.email_host = email_host # smtp服务器地址
  35. self.port = port # 普通端口
  36. self.ssl = ssl # 是否安全链接
  37. self.ssl_port = ssl_port # 安全链接端口
  38. self.html = html # 是否html
  39. def send_mail(self):
  40. msg = MIMEMultipart()
  41. # 发送内容的对象
  42. if self.file: # 处理附件的
  43. file_name = os.path.split(self.file)[-1] # 只取文件名,不取路径
  44. try:
  45. f = open(self.file, 'rb').read()
  46. except Exception as e:
  47. raise Exception('附件打不开!!!!')
  48. else:
  49. att = MIMEText(f, "base64", "utf-8")
  50. att["Content-Type"] = 'application/octet-stream'
  51. # base64.b64encode(file_name.encode()).decode()
  52. new_file_name = '=?utf-8?b?' + base64.b64encode(file_name.encode()).decode() + '?='
  53. # 这里是处理文件名为中文名的,必须这么写
  54. att["Content-Disposition"] = 'attachment; filename="%s"' % (new_file_name)
  55. msg.attach(att)
  56. if self.html:
  57. msg.attach(MIMEText('{}'.format(self.content), 'html', 'utf-8'))
  58. else:
  59. msg.attach(MIMEText(self.content)) # 邮件正文的内容
  60. msg['Subject'] = self.title # 邮件主题
  61. msg['From'] = self.username # 发送者账号
  62. msg['To'] = ','.join(self.recv) # 接收者账号列表
  63. if self.ssl:
  64. self.smtp = smtplib.SMTP_SSL(self.email_host, port=self.ssl_port)
  65. else:
  66. self.smtp = smtplib.SMTP(self.email_host, port=self.port)
  67. # 发送邮件服务器的对象
  68. self.smtp.login(self.username, self.passwd)
  69. try:
  70. self.smtp.sendmail(self.username, self.recv, msg.as_string())
  71. pass
  72. except Exception as e:
  73. print('发送失败', e)
  74. else:
  75. print('发送成功!')
  76. self.smtp.quit()
  77. if __name__ == '__main__':
  78. m = SendMail(
  79. username='XXXXX@qq.com',
  80. passwd='bgqqXXXXX',
  81. recv=['XXXXX@qq.com', 'XXXXX@QQ.com'],
  82. title='测试发送邮件',
  83. content='测试发送邮件',
  84. file=r'yingshi.txt',
  85. ssl=True,
  86. # html=True, 发送html页面
  87. )
  88. m.send_mail()

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTk4MDEx_size_16_color_FFFFFF_t_70 4

OK~

发表评论

表情:
评论列表 (有 0 条评论,468人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python发送邮件

    python的smtplib库和email库,可以方便地实现发送邮件。使用远程smtp客户端,并采用授权码登录,《Python网络数据采集》书中给出的例子是这样的:

    相关 Python发送邮件

    一、启用邮箱的SMTP访问 Python发邮件需要有SMTP服务,可以在本地搭建SMTP服务,也可以使用第三方的SMTP服务(比如网易邮箱或QQ邮箱)。 这里我使用了

    相关 python发送邮件

    这篇文章主要讲用怎么用python来发送邮件 一、准备工作 1.python3环境 2.163邮箱和qq邮箱 二、获取授权码 在学习怎么使用python发送邮