看别人的博客就不要在往别人的邮箱里发东西了行不行, 有点素质可以吗!!! 写出来分享还不知道珍惜!!!!!

#-*-encoding:utf-8 -*-
import os
import smtplib
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.utils import parseaddr, formataddr mail_host="smtp.163.com"#使用的邮箱的smtp服务器地址,这里是163的smtp地址
mail_user=raw_input("你的163邮箱: ")#发送方邮箱
mail_pass=raw_input("邮箱授权码: ") #授权码
mail_postfix="163.com"#邮箱的后缀,网易就是163.com
mail_from = raw_input("来自: ") #发送方昵称
mail_sub = raw_input("邮件主题: ") #邮件主题
mail_content = raw_input("邮件主体内容: ") me=mail_from+"<"+mail_user+">" msg_attach = MIMEMultipart() msg_attach['Subject'] = mail_sub
msg_attach['From'] = me
to_list = map(None,raw_input("mail_to: ").split(" "))#可以群发
msg_attach['To'] = ",".join(to_list)#将收件人列表以‘,’分隔 # 邮件正文是MIMEText(content,'plain','utf-8')
msg_attach.attach(MIMEText(mail_content,'plain','utf-8')) #print "---1---",os.getcwd() #打印出当前工作目录 #pic_source = '/home/xushukui/图片/123.jpg' #输入图片的目录的时候千万不要带引号,不然会报错, 图片名字之间不能有间隔(比如空格), 不然切割的时候会报错
pic_source = raw_input("请输入图片的目录,千万不要带引号, 不然会报错: ") #先对pic_source进行切割, pwd是列表, 然后用"/".join(pwd) 把列表里面的内容连起来, 则cwd即为图片的目录, 然后进行目录切换,但是图片名字是中文接收的时候乱码问题还没解决, 已经解决的网友可以在博客下面告诉我一下方法吗,十分感谢
pwd = pic_source.split("/")[:-1]
cwd = "/".join(pwd) os.chdir(cwd)
#print "---2---",os.getcwd() pic_name = pic_source.split('/')[-1] #图片名
pic_suffix = pic_name.split('.')[-1] #图片后缀 # 添加附件就是加上一个MIMEBase,从本地读取一个图片:
with open(pic_source, 'rb') as f:
# 设置附件的MIME和文件名,这里是gif类型:
mime = MIMEBase('image', pic_suffix, filename=pic_name)
# 加上必要的头信息:
mime.add_header('Content-Disposition', 'attachment', filename=pic_name)
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
# 把附件的内容读进来:
mime.set_payload(f.read())
# 用Base64编码:
encoders.encode_base64(mime) # 添加到MIMEMultipart:
msg_attach.attach(mime) def main():
try:
server = smtplib.SMTP()
server.connect(mail_host)#连接服务器
server.login(mail_user,mail_pass)#登录操作
server.sendmail(me, to_list, msg_attach.as_string())
server.close()
return True
except Exception, e:#捕捉异常,并将异常对象输出
print str(e)
return False if main():
print "done!"
else:
print "failed!"
本文转自:http://blog.csdn.net/zm2714/article/details/7993732

可采用email模块发送电子邮件附件。发送一个未知MIME类型的文件附件其基本思路如下:

构造MIMEMultipart对象做为根容器
构造MIMEText对象做为邮件显示内容并附加到根容器
构造MIMEBase对象做为文件附件内容并附加到根容器
  a. 读入文件内容并格式化
  b. 设置附件头
设置根容器属性
得到格式化后的完整文本
用smtp发送邮件
# -*- coding: utf-8 -*-
import smtplib
import os.path
import mimetypes
import email.MIMEText
import email.MIMEBase
import email.MIMEImage
import email.MIMEMultipart From = "你的163邮箱"
To = "你的qq邮箱"
file_name = "/home/xushukui/xsk/xsk123.png.jpeg"#附件名 server = smtplib.SMTP("smtp.163.com") server.login("你的163邮箱","xxxx") #仅smtp服务器需要验证时(账号,密码)
# 构造MIMEMultipart对象做为根容器
main_msg = email.MIMEMultipart.MIMEMultipart() # 构造MIMEText对象做为邮件显示内容并附加到根容器
text_msg = email.MIMEText.MIMEText("this is a test text to text mime",_charset="utf-8")
main_msg.attach(text_msg) # 构造MIMEBase对象做为文件附件内容并附加到根容器
ctype,encoding = mimetypes.guess_type(file_name)
if ctype is None or encoding is not None:
ctype='application/octet-stream'
maintype,subtype = ctype.split('/',1)#分割返回两个值
#print maintype,subtype (可以输出看看)
file_msg=email.MIMEImage.MIMEImage(open(file_name,'rb').read(),subtype)
print ctype,encoding #火狐会将jpg、jpeg翻译成image/jpeg,png翻译成image/png ## 设置附件头
basename = os.path.basename(file_name)#os.path.basename(path) #返回文件名
#Content-disposition就是当用户想把请求所得内容存为一个文件的提供一个默认的文件名
file_msg.add_header('Content-Disposition','attachment', filename = basename)#修改邮件头
main_msg.attach(file_msg) # 设置根容器属性
main_msg['From'] = From
main_msg['To'] = To
main_msg['Subject'] = "attach test "
main_msg['Date'] = email.Utils.formatdate( ) # 得到格式化后的完整文本
fullText = main_msg.as_string( ) # 用smtp发送邮件
try:
server.sendmail(From, To, fullText)
finally:
server.quit() #application/octet-stream
#1.只能提交二进制,而且只能提交一个二进制,
#如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组) #2.属于HTTP规范中Content-Type的一种 #3.很少使用
第二种方法
#!usr/bin/python
#-*- coding:utf-8 -*-
import smtplib
import os.path
import mimetypes
import email.MIMEText
import email.MIMEBase
import email.MIMEImage
import email.MIMEMultipart mailer_name=raw_input("name: ")
From = raw_input("163 mail address: ")
password = raw_input("password: ")
to_list = map(None,raw_input("to: ").split(" "))
file_name = "/home/xushukui/图片/nonexistent.jpg" server = smtplib.SMTP("smtp.163.com")
server.login(From,password) main_msg = email.MIMEMultipart.MIMEMultipart() text_msg = email.MIMEText.MIMEText("不存在的",_charset = "utf-8")
main_msg.attach(text_msg) ctype,encoding = mimetypes.guess_type(file_name)
if ctype is None or encoding is not None:
ctype='application/octet-stream'
maintype,subtype = ctype.split('/',1) file_msg = email.MIMEImage.MIMEImage(open(file_name,'rb').read(),subtype)
#print ctype,encoding basename=os.path.basename(file_name) file_msg.add_header('Content-Disposition','attachment',filename=basename)
main_msg.attach(file_msg) main_msg['From']= mailer_name+"<"+From+">"
main_msg['To'] = ",".join(to_list)
main_msg['Subject'] = "附带一张图片" main_msg['Date'] = email.Utils.formatdate() fullText = main_msg.as_string() try:
server.sendmail(From , to_list,fullText)
print "done!"
finally:
server.quit() #运行结果:

Python发送带附件的邮件的更多相关文章

  1. python 发送带附件的邮件

    特别注意的地方:filespart.add_header("Content-Disposition","attachment",filename=file_na ...

  2. python 发送带附件的 邮件

    from email.MIMETextimportMIMETextfrom email.MIMEMultipartimportMIMEMultipartimport smtplib mail_host ...

  3. 利用Python+163邮箱授权码发送带附件的邮件

    背景 前段时间写了个自动爬虫的脚本,定时在阿里云服务器上执行,会从某个网站上爬取链接保存到txt文本中,但是脚本不够完善,我需要爬虫完毕之后通过邮件把附件给我发送过来,之前写过一个<利用Pyth ...

  4. java发送带附件的邮件

    /** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...

  5. C#发送带附件的邮件的代码

    如下的代码是关于C#发送带附件的邮件的代码. MailMessage m = new MailMessage();m.Subject = "File attachment!";m. ...

  6. [SpringBoot] - 发送带附件的邮件

    <!--发送email依赖--> <dependency> <groupId>org.springframework.boot</groupId> &l ...

  7. 接口测试基础——第2篇smtplib发送带附件的邮件

    我先给大家补充一个用QQ发送纯文本电子邮件的代码,用QQ的朋友可以参考一下: # coding=utf-8 import smtplib from email.mime.text import MIM ...

  8. 使用JavaMail发送带附件的邮件

    所需jar包 链接:http://pan.baidu.com/s/1dFo4cDz 密码:akap 工具类: package com.javamail.utils; import java.util. ...

  9. spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)

    一,网站哪些情况下需要发送电子邮件? 作为一个电商网站,以下情况需要发邮件通知用户: 注册成功的信息 用邮箱接收验证码 找回密码时发链接 发送推广邮件 下单成功后的订单通知 给商户的对账单邮件 说明: ...

随机推荐

  1. JavaScript基本运算

    JavaScript基本运算 JavaScript:其实它的基本运算和我们数学的基本运算类似的. --------------------------------------------------- ...

  2. JavaScript的基本介绍

    JavaScript入门介绍 输出语句:document.write()   1.执行顺序:从上到下,每一天语句是要加分号的,如果不加的话,浏览器会默认帮你自动添加,分号.   2.注释:一行注释就是 ...

  3. layui table表格字段过长,展示不完整时,鼠标放到上面展示完整信息

    亲测可以直接用 1.首先每个列都有一个title,里面放入完整信息,然后写一个如下的function, function tdTitle(){ $('th').each(function(index, ...

  4. Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化

    ---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1.  初始化Framebuffer: FrameBuffer驱动是以模块的形式注册到系统 ...

  5. 11 The Go Memory Model go语言内置模型

    The Go Memory Model go语言内置模型 Version of May 31, 2014 Introduction 介绍 Advice 建议 Happens Before 在发生之前 ...

  6. 使用os模块实现展示目录下的文件和文件夹

    Windows 10家庭中文版,Python 3.6.4 今天学习了os模块,下面是使用它开发的一个展示目录下的文件和文件夹的函数,代码如下: import os # deep大于等于1的整数,默认为 ...

  7. caffe卷积操作

  8. 80端口被System占用 造成Apache不能启动的解方案

    运行netstat -aon | findstr :80 ,发现pid是4的进程占用着80端口,这还是一个系统进程,kill不掉.所以只能另想办法: 1.打开注册表:regedit 2.找到:HKEY ...

  9. HDU 3613 Best Reward(扩展KMP求前后缀回文串)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3613 题目大意: 大意就是将字符串s分成两部分子串,若子串是回文串则需计算价值,否则价值为0,求分割 ...

  10. 【Sequel Pro】下载查询结果乱码问题处理方式

    1.下载查询结果已CSV格式保存 2.出现乱码问题样式如下截图: 3. 右键下载的CSV文件,选择用文本编辑打开 4.全选打开的页面内容,重新新建“文本编辑”并进行“储存” 5.打开 1.CSV,则看 ...