欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python脚本发送邮件

程序员文章站 2022-04-07 15:49:36
...
#!/usr/bin/python
#_*_ coding:utf-8 _*_

from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import Utils, Encoders
from email.header import Header
import mimetypes
import sys
import smtplib


def SendMail(fromAddress, toAddress, usepassword,subject=None, content=None, attfile=None, \  
             subtype='plain', charset='utf-8'):  
    
    username = fromAddress  
      
    #创建一个带附件的实例  
    msg = MIMEMultipart()  
    msg['From'] = fromAddress    
    msg['To'] = toAddress    
  
    if subject:      
        #标题  
        msg['Subject'] = subject  
        msg['Date'] = Utils.formatdate(localtime=1)  
      
    if content:  
        #添加邮件内容  
        txt = MIMEText(content, subtype, charset)    
        msg.attach(txt)    
          
    if attfile:  
        #构造附件    
        #注意:传入的参数attfile为unicode,否则带中文的目录或名称的文件读不出来    
        #      basename 为文件名称,由于传入的参数attfile为unicode编码,此处的basename也为unicode编码    
        basename = os.path.basename(attfile)    
        print basename  
        #注意:指定att的编码方式为gb2312    
        att = MIMEText(open(attfile, 'rb').read(), 'base64', 'gb2312')    
        att["Content-Type"] = 'application/octet-stream'    
            
        #注意:此处basename要转换为gb2312编码,否则中文会有乱码。    
        #      特别,此处的basename为unicode编码,所以可以用basename.encode('gb2312')    
        #            如果basename为utf-8编码,要用basename.decode('utf-8').encode('gb2312')    
        att["Content-Disposition"] = 'attachment; filename=%s' % basename.encode('gb2312')    
        msg.attach(att)  
      
    try:    
    #smtp = smtplib    
        smtp = smtplib.SMTP()    
          
        #连接服务器  
        smtp.connect('smtp.163.com', '25')    
          
        #登录  
        smtp.login(username, usepassword)   
          
        #发送邮件      
        smtp.sendmail(fromAddress, toAddress, msg.as_string())    
        #退出  
        smtp.quit()    
        print('邮件发送成功email has send out !')    
          
  #调用        
if __name__ == "__main__":  
  
   #注意:附件的路径字符串应为unicode编码   
   #              发送者账号   接收者账号  密码         标题        内容                        附件            
    SendMail('xxxxxxx', 'xxxxxxxx', 'xxxxxxx','编译结果','编译log文件已发送,请查看!',u'编译结果.h')  

  


要实现发邮件的功能,必须通过网站登陆设置开启SMTP服务和授权码,比如以下是163邮箱的设置过程。

python脚本发送邮件

python脚本发送邮件

python脚本发送邮件

在脚本此处设置邮箱的相关内容:(注意:邮箱密码必须是你启用的授权码

 python脚本发送邮件

详情请访问以下网址:

 http://www.runoob.com/python/python-email.html