canofy 发表于 2013-2-7 20:36:32

python发送email

第一种方法:
# -*- coding: utf-8 -*-import emailimport mimetypesfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEText import MIMETextfrom email.MIMEImage import MIMEImageimport smtplibdef sendEmail(authInfo, fromAdd, toAdd, subject, plainText, htmlText):      strFrom = fromAdd      strTo = ', '.join(toAdd)      server = authInfo.get('server')      user = authInfo.get('user')      passwd = authInfo.get('password')      if not (server and user and passwd) :                print 'incomplete login info, exit now'                return      # 设定root信息      msgRoot = MIMEMultipart('related')      msgRoot['Subject'] = subject      msgRoot['From'] = strFrom      msgRoot['To'] = strTo      msgRoot.preamble = 'This is a multi-part message in MIME format.'      # Encapsulate the plain and HTML versions of the message body in an      # 'alternative' part, so message agents can decide which they want to display.      msgAlternative = MIMEMultipart('alternative')      msgRoot.attach(msgAlternative)      #设定纯文本信息#      msgText = MIMEText(plainText, 'plain', 'utf-8')#      msgAlternative.attach(msgText)      #设定HTML信息      msgText = MIMEText(htmlText, 'html', 'utf-8')      msgAlternative.attach(msgText)       #设定内置图片信息#      fp = open('test.jpg', 'rb')#      msgImage = MIMEImage(fp.read())#      fp.close()#      msgImage.add_header('Content-ID', '<image1>')#      msgRoot.attach(msgImage)       #发送邮件      smtp = smtplib.SMTP()       #设定调试级别,依情况而定      smtp.set_debuglevel(1)      smtp.connect(server)      smtp.login(user, passwd)      smtp.sendmail(strFrom, strTo, msgRoot.as_string())#      smtp.sendmail(strFrom, strTo, msgRoot.as_string())      smtp.quit()      returnif __name__ == '__main__' :      authInfo = {}      authInfo['server'] = 'smtp.***.cn'      authInfo['user'] = '***@***.cn'      authInfo['password'] = '***'      fromAdd = '***@***.cn'      toAdd = ['***@163.com', '***@gamil.com']      subject = 'title'      plainText = '这里是普通文本'      htmlText = '<B>HTML文本</B>'      sendEmail(authInfo, fromAdd, toAdd, subject, plainText, htmlText)
第二种方法:
#coding=utf-8import smtplib,email,sysfrom email.Message import Messagesmtpserver='smtp.***.cn'smtpuser='***@***.cn'smtppass='***'smtpport='25'def connect():    "connect to smtp server and return a smtplib.SMTP instance object"    server=smtplib.SMTP(smtpserver,smtpport)    server.ehlo()    server.login(smtpuser,smtppass)    return server    def sendmessage(server,to,subj,content):    "using server send a email"    msg = Message()    msg['Mime-Version']='1.0'    msg['From']    = smtpuser    msg['To']      = to    msg['Subject'] = subj    msg['Date']    = email.Utils.formatdate()          # curr datetime, rfc2822    msg.set_payload(content)    try:            failed = server.sendmail(smtpuser,to,str(msg))   # may also raise exc    except Exception ,ex:      print Exception,ex      print 'Error - send failed'    else:      print "send success!"if __name__=="__main__":    #frm=raw_input('From? ').strip()#    to=raw_input('To? ').strip()#    subj=raw_input('Subj? ').strip()   to='***@***.com'    subj='title1111'      print 'Type message text, end with line="."'    text = 'content'#    while True:#      line = sys.stdin.readline()#      if line == '. ': break#      text += line    server=connect()    sendmessage(server,to,subj,text)
页: [1]
查看完整版本: python发送email