# 带附件的邮件
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)

更多相关文章

  1. python 发送带附件的邮件
  2. python获取外网IP并发邮件
  3. Linux SendMail 使用外部SMTP服务发送邮件
  4. Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
  5. TextView在单击时发送电子邮件
  6. 从Wordpress API JSON响应反序列化嵌套的JSON标记和附件
  7. JavaMail学习五 创建邮件内容
  8. 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate
  9. Java Mail发送邮件

随机推荐

  1. Android抓包方法
  2. Android 在指定 LinearLayout 中动态添加
  3. SQLite一次性读取过多记录会造成内存溢出
  4. Android(安卓)Widget开发
  5. Material Design主题
  6. 前端 js 判断设备类型是手机还是PC 并打
  7. Android2.2 API 中文文档系列(2) —— Edit
  8. Android 开发网站网址
  9. Android:CountDownTimer 实现倒计时功能
  10. Android的Audio系统详解