发送邮件

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

 

posted on 2018-06-11 15:31  王大拿  阅读(267)  评论(0)    收藏  举报

导航