zoukankan      html  css  js  c++  java
  • Python发送邮件

    python发送邮件,各邮件服务商都有smtp服务器,但是注册完邮箱后呢,需要去开启pop3/smtp服务。国内的邮箱基本上都需要第三方登录授权码,在python代码中,登录密码就要替换成授权码。国人的东西,什么都是管控的,因为咱中国人,都太聪明而且无节制。我这里用的是qq邮箱。

    1,纯文本格式:

     1 '''
     2     #利用python发送普通的文字邮件
     3     #内建库
     4     smtplib,发送邮件的
     5     email处理文字的
     6 '''
     7 import smtplib
     8 from smtplib import SMTP_SSL
     9 from email.mime.text import MIMEText #处理邮件文本
    10 from email.mime.multipart import MIMEMultipart #构造构建主体
    11 from email.header import Header #处理邮件头
    12 
    13 #定义登录信息
    14 server = 'smtp.qq.com' #smtp服务器地址
    15 user = 'xxxx@qq.com' #登录smtp服务器的用户名
    16 pwd = '授权码字符串' #这里不要用邮箱登录密码,会出现验证错误,要用授权码
    17 
    18 #定义发件人和收件人
    19 sender = 'xxx@qq.com' #发件人
    20 receiver = 'xxx@outlook.com' #收件人
    21 
    22 #定义邮件主题和内容
    23 title = 'Python测试邮件'
    24 content = '这是一封来自python的测试邮件,详情访问https://www.python.org'
    25 
    26 #开始构造邮件
    27 msg = MIMEMultipart() #构造邮件
    28 msg['Subject'] = Header(title, 'utf-8') #邮件主题
    29 msg['From'] = sender #发件人
    30 msg['To'] = receiver #收件人
    31 msg.attach(MIMEText(content, 'plain', 'utf-8')) #邮件正文,以plain格式发送,我习惯叫打包内容
    32 
    33 #开始登录邮箱
    34 smtp = SMTP_SSL(server) #以ssl的方式登录邮箱
    35 smtp.login(user, pwd) #开始登录
    36 smtp.sendmail(sender, receiver, msg.as_string()) #开始发送邮件
    37 smtp.quit() #退出邮件服务器

     2,HTML格式:

     1 '''
     2     #利用python发送html格式的邮件
     3     #内建库
     4     smtplib,发送邮件的
     5     email处理文字的
     6 '''
     7 import smtplib
     8 from smtplib import SMTP_SSL
     9 from email.mime.text import MIMEText #处理邮件文本
    10 from email.mime.multipart import MIMEMultipart #构造构建主体
    11 from email.header import Header #处理邮件头
    12 
    13 #定义登录信息
    14 server = 'smtp.qq.com'
    15 user = '958316676@qq.com'
    16 pwd = '授权码字符串'
    17 
    18 #定义发件人和收件人
    19 sender = '958316676@qq.com'
    20 receiver = 'vipdentfy@outlook.com'
    21 
    22 #定义邮件标题和内容
    23 title = '来自Python的测试邮件'
    24 content = '你好,<p>这是来自python的测试邮件.</p>详情请访问:<a href="https://www.python.org">Python官方</a>'
    25 
    26 #开始构造邮件
    27 msg = MIMEMultipart()
    28 msg['Subject'] = Header(title, 'utf-8')
    29 msg['From'] = sender
    30 msg['To'] = receiver
    31 
    32 #以html格式构造邮件内容
    33 msg.attach(MIMEText(content, 'html', 'utf-8'))
    34 
    35 #开始尝试发送
    36 try:
    37     smtp = SMTP_SSL(server) #以ssl的方式登录邮箱服务器
    38     smtp.set_debuglevel(1) #调试信息
    39     smtp.ehlo(server) #向服务器打招呼,类似gmail就要用到这个
    40     smtp.login(user, pwd) #登录邮箱
    41     smtp.sendmail(sender, receiver, msg.as_string()) #发送邮件
    42     smtp.quit()
    43     print('发送邮件成功')
    44 #开始捕获异常
    45 except smtplib.SMTPException:
    46     print('邮件发送不成功,请调试程序后再试。')

    3,发送带附件的邮件:

     1 '''
     2     #利用python发送带附件的邮件
     3     #内建库
     4     smtplib,发送邮件的
     5     email处理文字的
     6 '''
     7 import smtplib
     8 from smtplib import SMTP_SSL
     9 from email.mime.text import MIMEText #处理邮件文本
    10 from email.mime.multipart import MIMEMultipart #构造构建主体
    11 from email.header import Header #处理邮件头
    12 from email.mime.application import MIMEApplication #处理附件的库
    13 
    14 #定义smtp服务器信息
    15 server = 'smtp.qq.com'
    16 user = '958316676@qq.com'
    17 pwd = '授权码字符串'
    18 
    19 #定义收件人和发件人
    20 sender = '958316676@qq.com'
    21 receiver = 'vipdentfy@outlook.com'
    22 
    23 #定义邮件标题和内容
    24 title = '来自Python的测试邮件 - 带附件'
    25 content = '你好,<p>这是一封来自python带附件的测试邮件.</p><p>详情请登录官网查看:<a href="https://www.python.org">Python官网</a></p>'
    26 
    27 #构造邮件开始
    28 msg = MIMEMultipart() #邮件主体
    29 msg['Subject'] = Header(title, 'utf-8') #主题
    30 msg['From'] = sender #收件人
    31 msg['To'] = receiver #发件人
    32 msg.attach(MIMEText(content, 'html', 'utf-8'))
    33 
    34 #找到附件位置以二进制只读方式打开附件
    35 attachment = MIMEApplication(open('test.xlsx','rb').read()) #以二进制只读方式打开对应位置的福建
    36 #给附件重命名,三个参数,content-dispostion是内容设置,attachment表示附件,filename表示要重新命名的文件名
    37 attachment.add_header('Content-Disposition', 'attchament', filename='我是附件.xlsx')
    38 #添加到邮件主体
    39 msg.attach(attachment)
    40 
    41 #开始尝试登录邮箱并发送
    42 try:
    43     smtp = SMTP_SSL(server) #以ssl方式登录
    44     smtp.set_debuglevel(0) #关闭调试信息
    45     smtp.ehlo(server) #向服务器打招呼
    46     smtp.login(user,pwd) #登录
    47     smtp.sendmail(sender, receiver, msg.as_string()) #发送
    48     smtp.quit() #退出邮箱
    49     print('恭喜你,邮件发送成功。')
    50 #开始捕获异常
    51 except smtplib.SMTPException:
    52     print('邮件发送失败,请调试程序后再试。')
  • 相关阅读:
    [TimLinux] CSS 纯CSS实现动画展开/收起功能
    [TimLinux] CSS pre超长自动换行
    j2ee之struts2表单细节处理
    j2ee之struts2的国际化数据方式
    j2ee之struts2拦截器()
    j2ee之struts2文件下载
    j2ee之struts2文件上传
    j2ee国际化数据方式
    j2ee监听器的实现及配置方法
    j2ee过滤器实现的主要代码
  • 原文地址:https://www.cnblogs.com/mafu/p/14046573.html
Copyright © 2011-2022 走看看