发送邮件
smtp是直接调用163邮箱的smtp服务器,需要在163邮箱中设置一下。outlook发送就是Python直接调用win32方式。调用程序outlook直接发送邮件。
outlook直接发送邮件 给多人返送邮件
# -*- coding:utf-8 -*- import win32com.client as win32 import warnings import sys reload(sys) sys.setdefaultencoding('utf8') warnings.filterwarnings('ignore') def sendemail(sub,body): outlook = win32.Dispatch('outlook.application') receivers = ['xxxx@pingan.com.cn;xxxx@pingan.com.cn;xxxx@pingan.com.cn'] mail = outlook.CreateItem(0) mail.To = receivers[0] mail.Subject = sub.decode('utf-8') mail.Body = body.decode('utf-8') # 添加附件 # mail.Attachments.Add('D:\Users\xxx\Desktop\email.log') mail.Send() sendemail('xxx,xx','xxx')
如果报错:com_error: (-2147221008, '\xc9\xd0\xce\xb4\xb5\xf7\xd3\xc3 CoInitialize\xa1\xa3', None, None)
只需导入pythoncom包,import pythoncom
并在方法内加入pythoncom.CoInitialize()即可。
使用163发送邮件
import smtplib from email.mime.text import MIMEText mail_host = 'smtp.163.com' mail_user = '18298268658' mail_pass = 'cat123' sender = '18298268658@163.com' receivers = ['619538553@qq.com'] message = MIMEText('content','plain','utf-8') message['Subject'] = 'title' message['From'] = sender message['To'] = receivers[0] try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host,25) smtpObj.login(mail_user,mail_pass) smtpObj.sendmail( sender,receivers,message.as_string()) smtpObj.quit() print('success') except smtplib.SMTPException as e: print('error',e)
使用qq发送
# 带附件的邮件 import smtplib from email.mime.multipart import MIMEMultipart # python2.4及之前版本该模块不是这样调用的,而是email.MIMEMultipart.MIMEMultipart(),下同 from email.mime.text import MIMEText from email.utils import parseaddr,formataddr from email.header import Header sender = '123@qq.com'#发件人地址 receiver = ['xx@dd.com','123@qq.com']#收件人地址 smtpserver = 'smtp.qq.com'#邮件服务器 username = '123'#用户名 password = 'xxx'#密码 # qq邮箱打开,点击账户,中间偏下位置打开smtp服务器时会自动生成 smtp = smtplib.SMTP() def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr.encode('utf-8') if isinstance(addr, unicode) else addr)) def send_email(msg,file_name): msgRoot = MIMEMultipart('related') # msgRoot['To'] = _format_addr(u'%s' % receiver) msgRoot['to'] = '%s' % receiver msgRoot['Subject'] = '反欺诈数据报' #邮件标题,这里我把标题设成了你所发的附件名 msgText = MIMEText('%s'%msg,'html','utf-8')#你所发的文字信息将以html形式呈现 msgRoot.attach(msgText) for fs in file_name.split(','): att = MIMEText(open(r'E:\%s'%fs, 'rb').read(), 'base64', 'utf-8')#添加附件 att["Content-Type"] = 'application/octet-stream' att["Content-Disposition"] = 'attachment; filename="%s"'%fs msgRoot.attach(att) while 1:#持续尝试发送,直到发送成功 try: smtp.sendmail(sender, receiver, msgRoot.as_string())#发送邮件 break except: try: smtp.connect(smtpserver)#连接至邮件服务器 smtp.login(username, password)#登录邮件服务器 except: print "failed to login to smtp server"#登录失败 if __name__ == "__main__": MSG="hello python "#要发送的文字 FILE="cust_id.csv,test.csv"#要发送的文件 send_email(MSG,FILE)
#encoding=utf-8 import smtplib from email.mime.multipart import MIMEMultipart # python2.4及之前版本该模块不是这样调用的,而是email.MIMEMultipart.MIMEMultipart(),下同 from email.mime.text import MIMEText from email.utils import parseaddr,formataddr from email.header import Header sender = '512022123@qq.com'#发件人地址 receiver = ['1457850135@dd.com','403722062@qq.com']#收件人地址 smtpserver = 'smtp.qq.com'#邮件服务器 username = '512022123'#用户名 password = ''#密码 # qq邮箱打开,点击账户,中间偏下位置打开smtp服务器时会自动生成,需要验证,发送到手机上 smtp = smtplib.SMTP() def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr.encode('utf-8') )) def send_email(msg,file_name): msgRoot = MIMEMultipart('related') # msgRoot['To'] = _format_addr(u'%s' % receiver) msgRoot['to'] = '%s' % receiver msgRoot['Subject'] = '反欺诈数据报' #邮件标题,这里我把标题设成了你所发的附件名 msgText = MIMEText('%s'%msg,'html','utf-8')#你所发的文字信息将以html形式呈现 msgRoot.attach(msgText) for fs in file_name.split(','): att = MIMEText(open(r'%s'%fs, 'rb').read(), 'base64', 'utf-8')#添加附件 att["Content-Type"] = 'application/octet-stream' att["Content-Disposition"] = 'attachment; filename="%s"'%fs msgRoot.attach(att) while 1:#持续尝试发送,直到发送成功 try: smtp.sendmail(sender, receiver, msgRoot.as_string())#发送邮件 break except: try: smtp.connect(smtpserver)#连接至邮件服务器 smtp.login(username, password)#登录邮件服务器 except: print("failed to login to smtp server")#登录失败 if __name__ == "__main__": MSG="hello python "#要发送的文字 FILE="cust_id.csv,test.csv"#要发送的文件 send_email(MSG,'D:\py\视频\day87\day87.txt')
使用qq
浙公网安备 33010602011771号