用python发邮件实例
发QQ邮件
首先确认发件方是否打开了SMTP服务,去QQ邮箱的设置中查看,如果没有请自行开启。
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
import smtplib
from app01 import models def _format_addr(s):
name,addr = parseaddr(s)
return formataddr((Header(name,'utf-8').encode(),addr)) def send_mail():
four_hour_pro, eight_hour_pro = read()
print(four_hour_pro)
print(eight_hour_pro)
print("Start sending")
#发件人地址
from_addr = 'xxx@qq.com' #密码邮箱的授权码,不是你的QQ密码,是要向腾讯申请的
password = 'fghjkjhgfdghj' #收件人地址
to_addr = ['yyy@qq.com','mmm@gmail.com']#多个收件人放在列表中 #邮箱服务器地址
smtp_server = 'smtp.qq.com' #设置邮件信息
data = "Hello World" msg = MIMEText(data,'plain','utf-8')
msg['From'] = _format_addr(from_addr)
msg['To'] = _format_addr(to_addr)
msg['Subject'] = Header(u'邮件标题','utf-8').encode() #发送邮件 server = smtplib.SMTP_SSL(smtp_server,465) #打印出和SMTP服务器交互的所有信息 server.set_debuglevel(1) #登录SMTP服务器 server.login(from_addr,password) #sendmail():发送邮件,由于可以一次发给多个人,所以传入一个list邮件正文是一个str,as_string()把MIMEText对象变成str。 server.sendmail(from_addr,to_addr,msg.as_string())
server.quit()
print('Mail sended succeed!') if __name__ == '__main__':
send_mail()
发Google邮件
网段很重要,国内由于GREAT WALL的存在是发不了Google邮件的,VPN的选择最好也是在美国,日本的VPN会出现no route host的报错
import smtplib
import base64
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import COMMASPACE SENDER = 'xxx@gmail.com'#发件人
SMTP_SERVER = 'smtp.gmail.com'#谷歌的邮件服务器,不要改
USER_ACCOUNT = {'username':'xxx@gmail.com', 'password':'发件人密码'}#用于登陆的账户信息
SUBJECT = u"邮件标题"
RECEVIVERS = ['xxx@qq.com']#收件人 def send_mail(receivers=RECEVIVERS, sender=SENDER, user_account=USER_ACCOUNT, subject=SUBJECT):
print("Start sending...") #设置邮件正文
data = "邮件正文内容" #下面都不用改
msg_root = MIMEMultipart() # 创建一个带附件的实例
msg_root['Subject'] = subject # 邮件主题
msg_root['To'] = COMMASPACE.join(receivers) # 接收者
msg_text = MIMEText(data, 'html', 'utf-8') # 邮件正文
msg_root.attach(msg_text) # attach邮件正文内容 smtp = smtplib.SMTP('smtp.gmail.com:587', timeout=10)
smtp.ehlo()
smtp.starttls()
smtp.login(user_account['username'], user_account['password'])
smtp.sendmail(sender, receivers, msg_root.as_string())
print("Email sended succeed!") if __name__ == '__main__':
send_mail()
发Google邮件遇到的问题:邮件报错smtplib.smtpauthentic
出现这个错误的原因有两个:
- Google阻止用户使用不符合他们安全标准的应用或设备登陆gmail
https://support.google.com/accounts/answer/6010255?hl=zh-Hans - Gmail没有解除验证码认证
解决方法:
- 允许不够安全的应用使用您的账号:点击如下链接,开启“允许不够安全的应用”功能 https://myaccount.google.com/lesssecureapps
- 解除gmail验证码认证:
点击如下链接,然后点击继续即可
https://accounts.google.com/b/0/displayunlockcaptcha
发新浪邮件
记得先去你的设置中将SMTP权限开启(有可能会出现发送后被系统退回的情况,还没撸明白是为什么)
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartfrom email.header import Header user = 'xxx@sina.com'#发件人
pwd = ''#发件人邮箱密码
to = ['yyy@gmail.com',"mmm@gmail.com"]#收件人 def send_mail():
print("Start sending...")
msg = MIMEMultipart()
msg['Subject'] = Header('成交信息', 'utf-8')
msg['From'] = Header(user) data = "邮件正文内容"
content1 = MIMEText(data, 'plain', 'utf-8')
msg.attach(content1) s = smtplib.SMTP('smtp.sina.com')
s.set_debuglevel(1) # 调试使用
# s.starttls() # 建议使用
s.login(user, pwd)
s.sendmail(user, to, msg.as_string())
s.close()
print("Sended succeed") if __name__ == '__main__': send_mail()
用python发邮件实例的更多相关文章
- 如何用python发邮件
python发送各类邮件的主要方法 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 1.smtplib模块 smtplib.SM ...
- python发邮件遇到的端口号问题
在学习使用python发邮件的过程中, 遇到了一个问题:由于测试的时候使用的是QQ邮箱,要求必须使用SSL/TLS加密,所以有了下面的代码, from email.mime.text import M ...
- 使用python发邮件
使用python发邮件 网上有很多发邮件的例子,本人在网上找了一份,稍加修改后使用 上源码 # encoding=utf-8 from email.mime.image import MIMEImag ...
- Python 发邮件例子
Python 发邮件例子 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-04-23 16:12:33 # @Autho ...
- [转]简单三步,用 Python 发邮件
https://zhuanlan.zhihu.com/p/24180606 0. 前言 发送电子邮件是个很常见的开发需求.比如你写了个监控天气的脚本,发现第二天要下雨,或者网站上关注的某个商品降价了, ...
- Python—发邮件总结
来自: http://my.oschina.net/jhao104/blog/613774 1.登录SMTP服务器 首先使用网上的方法(这里使用163邮箱,smtp.163.com是smtp服务器地址 ...
- python 发邮件-带附件-文本-html
#!/usr/bin/python # encoding=utf-8 # Filename: send_email.py from email.mime.image import MIMEImage ...
- 人生苦短之Python发邮件
#coding=utf-8 import smtplib from email.mime.base import MIMEBase from email.mime.image import MIMEI ...
- python 发邮件 utf-8
import smtplib from operator import itemgetter, attrgetter from email.mime.text import MIMEText from ...
随机推荐
- 使用UWA GOT优化Unity性能和内存
优化百科: https://blog.uwa4d.com/archives/Index.html https://blog.uwa4d.com/archives/Introduction_UWAGOT ...
- 【消灭代办】第2周 - 数组判断、开发工具、transform:matrix、Grid
2018.11.19代办一:[数组判断] 代办描述: 怎么判断一个数组是数组呢?其实这个也是一个常考的题目 关键考点: 1.js中对象类型判断的几种方法 2.数组的知识和灵活运用 解决方案s: 篇幅过 ...
- 轮滑基础(一)(前摔,葫芦步,推步,A字转弯,弓步转弯)
轮滑新手入门推荐? [柚子陪你学轮滑轮滑教学]第一集 轮滑安全 1,站: 站立:脚可以成v字,或者平行,手放膝盖或者前伸.平行站立 膝盖相距一拳头左右,两腿间距略小于肩宽.膝盖略弯,腰下压,抬头挺胸 ...
- 使用python删除一个文件或文件夹
使用python删除一个文件或文件夹,需要使用os模块. import osos.remove(path) # path是文件的路径,如果这个路径是一个文件夹,则会抛出OSError的错误,这时需用用 ...
- 一名前端Web架构师的成长之路(转载)
本人也是coding很多年,虽然很失败,但也总算有点失败的心得,不过我在中国,大多数程序员都是像我一样,在一直走着弯路.如果想成为一个架构师,就必须走正确的路,否则离目标越来越远,正在辛苦工作的程序员 ...
- IT资源关东煮第一期【来源于网络】
IT资源关东煮第一期[来源于网络] 地址:http://geek.csdn.net/news/detail/128222
- 如何将MP3录音转文字
相信很多人都有电话录音的习惯,因为这样可以记录下很多重要的信息.那么当我们通过录音将一些重要的信息记录下来后,我们应该怎样将这些录音文件转换成文字进行记录呢?下面我们就一起来看一下吧. 操作步骤: 步 ...
- NYOJ16|嵌套矩形|DP|DAG模型|记忆化搜索
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...
- 异常详细信息: System.ArgumentException: 不支持关键字: “metadata”。
ASP.NET MVC中报的一个错误... 异常详细信息: System.ArgumentException: 不支持关键字: “metadata”. 其实这个是我修改web.config文件造成的, ...
- 进程池和线程池 concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
import time#线程池可以用shutdown submit from threading import current_thread from concurrent.futures impor ...