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

#-*-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. sklearn_k邻近分类

    # K邻近分类#--------------------------------# coding:utf-8 import pandas as pd from sklearn.neighbors im ...

  2. 动态SQL中变量赋值

    在动态SQL语句中进行变量的值绑定比较麻烦,这儿做个记录 declare @COUNT int,@sql nvarchar(max) set @sql = 'select @COUNT = count ...

  3. Oracle Certified Java Programmer 经典题目分析(二)

    ...接上篇 what is reserved(保留) words in java? A. run B. default C. implement D. import Java 关键字列表 (依字母排 ...

  4. Count of Smaller Number before itself

    Give you an integer array (index from 0 to n-1, where n is the size of this array, value from 0 to 1 ...

  5. Shell-判断条件总结

    -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目录,则为真 -e file 若文件存在,则为真 -f ...

  6. nginx 实现mysql的负载均衡【转】

    默认Nginx只支持http的反向代理,要想nginx支持tcp的反向代理,还需要在编译时增加tcp代理模块支持,即nginx_tcp_proxy_module 下面操作步骤只让nginx支持tcp_ ...

  7. Golang实现mysql读库映射成Map【Easy】

    这个类库灵感来源于.net的dbHelper类,因为其简单易用,现在go的driver必须使用对象映射,这让人火大不爽,不能实现灵活的Map,在Key经常变动的业务场景里面非常不爽,我还是喜欢直接写s ...

  8. Nagios Openstack Plugin

    Some simple example for checking Openstack services check nova service list #!/bin/sh export OS_PROJ ...

  9. Oracle JDeveloper 10g 卡顿、花屏的解决方法

    1.JDeveloper 10g花屏的解决办法: 在Win7或WinXP环境下,JDeveloper10g可能产生花屏现象,给开发者造成困扰,解决方法如下: 打开{JDEV_HOME}\jdev\bi ...

  10. SQL Server数据库存在判断语句及系统表简介

    Transact-SQL Exists Sentences--判断数据库是否存在IF EXISTS(SELECT * FROM master.sysdatabases WHERE name=N'库名' ...