pythonsmtp服务
1. 如何通过python使用SMTP发送邮件的代码
https://www.douban.com/note/354362421/
这种方式 邮件里如果有图片的话 只能以外链的形式。缺点是:有的邮件服务器默认禁用图片。
https://www.douban.com/note/605625422/
这个是把图片写到邮件内容里。
2. 请各位高手指点一下,看看为什么我按照书中的例子在python下运行交互式smtp,却提示错误,总是
smtp.python.is.cool 这是邮件服务器的地址
s = smtp('smtp.126.com') #你搞个正常的邮件服务器地址试试
3. python怎么安装sendmail
Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。
您需要下载适用于您使用平台的二进制代码,然后安装Python。
如果您平台的二进制代码是不可用的,你需要使用C编译器手动编译源代码。
编译的源代码,功能上有更多的选择性, 为python安装提供了更多的灵活性。。。
4. python smtp邮件发送失败怎么办
以下代码调试通过:
#coding:utf-8
importsmtplib
fromemail.mime.textimportMIMEText
fromemail.headerimportHeader
sender='[email protected]'
receiver='[email protected]'
subject='pythonemailtest'
smtpserver='smtp.139.com'
username='[email protected]'
password='xxxxxx'
msg=MIMEText('你好','text','utf-8')#中文需参数‘utf-8',单字节字符不需要
msg['Subject']=Header(subject,'utf-8')
smtp=smtplib.SMTP()
smtp.connect('smtp.139.com')
smtp.login(username,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
运行效果:
5. python中怎么实现一次性发多个邮件
首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。
本文主要介绍利用'smtplib','email'两个模块来实现邮件的发送,可以如下查看两个模块的函数和方法:
smtplib模块简介:
smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])
此为SMTP类构造函数,表示与SMTP服务器之间的连接,并根据这个连接向smtp服务器发送指令,执行相关操作(如:登陆、发送邮件),且每个参数都是可选的。
其中最重要的参数:
host:smtp服务器主机名
port:smtp服务的端口,默认是25;
如果在创建SMTP对象的时候提供了这两个参数,在初始化的时候会自动调用connect方法去连接服务器。
smtplib.SMTP还提供了如下方法:
SMTP.set_debuglevel(level):设置是否为调试模式
SMTP.connect([host[, port]]):连接到指定的smtp服务器。参数分别表示 smpt主机和端口。
SMTP.docmd(cmd[, argstring]):向smtp服务器发送指令。
SMTP.helo([hostname]) :使用"helo"指令向服务器确认身份。
SMTP.login(user, password):登陆到smtp服务器。现在几乎所有smtp服务器,都必须在验证用户信息合法之后才允许发送邮件。(重要!)
SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options]):发送邮件。这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是smtp协议中定义的格式。SMTP.quit() :断开与smtp服务器的连接,相当于发送"quit"指令。(重要!)
常用的函数方法:
email模块
1.class email.message.Message
__getitem__,__setitem__实现obj[key]形式的访问。
Msg.attach(playload): 向当前Msg添加playload。
Msg.set_playload(playload):
Msg.add_header(_name, _value, **_params): 添加邮件头字段。
2.class email.mime.base.MIMEBase(_maintype, _subtype, **_params)
所有MIME类的基类,是email.message.Message类的子类。
3.class email.mime.multipart.MIMEMultipart()
在3.0版本的email模块 (Python 2.3-Python 2.5) 中,这个类位于email.MIMEMultipart.MIMEMult ipart。这个类是MIMEBase的直接子类,用来生成包含多个部分的邮件体的MIME对象。
4.class email.mime.text.MIMEText(_text)
使用字符串_text来生成MIME对象的主体文本。
获得所需要使用的邮箱的host地址和port端口号,(本文使用的是163邮箱,对应的smtp服务器地址:mail.163.com,端口号25)
常用邮箱的smtp服务器地址和端口号如图:
编写程序如下:
#! /usr/bin/env python
import smtpli
from email.mime.text import MIMEText
mailto_list=['[email protected]'] #收件人(列表)
mail_host="smtp.163.com" #使用的邮箱的smtp服务器地址
mail_user="name" #用户名
mail_pass="pwd" #密码
mail_postfix="postfix" #邮箱的后缀
def send_mail(to_list,sub,content):
me="hello"+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content,_subtype='plain')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list) #将收件人列表以‘;’分隔
try:
server = smtplib.SMTP()
server.connect(mail_host) #连接服务器
server.login(mail_user,mail_pass) #登录操作
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False
for i in range(5): #发送五封,不过会被拦截的。。。
if send_mail(mailto_list,"hello","haha!"): #邮件主题和邮件内容
print "done!"
else:
print "failed!"
最后,可以运行编写的py文件,可以得到如图所是的结果,代表邮件发送成功。
这样,就能成功实现用Python发送邮件啦!
6. Python smtp发送邮件
就是向数据中添加了一个值,类似字典映射
7. 如何在python程序中发邮件
提供以下两种方式:
利用smtplib,email库
coding:utf-8
importsmtplib
fromemail.mime.textimportMIMEText
fromemail.mime.multipartimportMIMEMultipart
importsys
reload(sys)
sys.setdefaultencoding("utf8")
#配置收发件人
recvaddress=['[email protected]','[email protected]']
#163的用户名和密码
sendaddr_name='[email protected]'
sendaddr_pswd='your_password'
classSendMail:
def__init__(self,recver=None):
"""接收邮件的人:listortuple"""
ifrecverisNone:
self.sendTo=recvaddress
else:
self.sendTo=recver
defsend(self,sub,content,attachcontent):
"""发送邮件"""
self.msg=MIMEMultipart()
#设置发送邮件
self.msg['from']=sendaddr_name
try:
#设置邮箱服务器
smtp=smtplib.SMTP('smtp.163.com',25)
#登录
smtp.login(sendaddr_name,sendaddr_pswd)
#设置发送主题
self.msg['Subject']=sub
#设置邮件内容
self.msg.attach(MIMEText(content))
#设置邮件附件,将附件的内容attachcontent,写到filename的文件中,作为附件发送
att1=MIMEText(attachcontent,'base64','gb2312')
att1["Content-Type"]='application/octet-stream'
att1["Content-Disposition"]='attachment;filename="testattach.txt"'#这里的filename可以任意写,写什么名字,邮件中显示什么名字
self.msg.attach(att1)
#发送邮件
smtp.sendmail(self.msg['from'],self.sendTo,self.msg.as_string())
smtp.close()
print(u"发送邮件成功")
exceptException,e:
print(u'发送邮件失败:'+str(e))
raise
#调用
s=SendMail()
subject="主题"
content="这里是邮件内容"
attachcontent="这里是附件哦"
s.send(subject,content,attachcontent)
2.利用webpy自带的email模块
首先要安装web.py的依赖库
pip install web.py
#coding:utf-8
importweb
#####email服务器配置#####
web.config.smtp_server='smtp.sina.com'
web.config.smtp_port=25
web.config.smtp_username='你的email前缀,@前的字符串'
web.config.smtp_password='你的密码'
web.config.smtp_starttls=True
send_from="[email protected]"
receiveemailaddr=["[email protected]","[email protected]"]
subject=u'这里是主题'
message=u'这里是邮件的内容'
defsendemail(sendfrom,sendto,subject,message,cc=None,bcc=None,headers=({'User-Agent':'webpy.sendmail','X-Mailer':'webpy.sendmail',})):
try:
web.sendmail(send_from,sendto,subject,message,cc=cc,bcc=bcc)
print"邮件发送成功"
exceptException,e:
print(str(e))
#调用
sendemail(send_from,receiveemailaddr,subject,message)
8. python模块smtplib怎么安装
python模块smtplib安装方法如下,根据你的需要选择执行:
[root@localhost ~]# pip search smtplib
PyEmail (0.0.1) - Python library to send emails using SMTPLIB library
micropython-smtplib (0.0.0) - Dummy smtplib mole for MicroPython
personal (0.1.1) - Easy, secure self notification via email and sms, using smtplib and twilio
aiosmtplib (0.1.4) - asyncio version of smtplib
secure-smtplib (0.1.1) - Secure SMTP subclasses for Python 2
mailclient (0.2.0) - Simplified use of smtplib for Python. Easy email sending.
smtplio (1.0.3) - An async version of smtplib
easyemail (0.4.0) - Simple lib abstracting email sending with smtplib.
9. 如何用python自动发送邮件
注意如果使用qq的smtp转发功能的话,需要在设置页面中将该功能打开,然后设定密码,改密码就是赋值给下文password中的。
开启smtp转发功能文档
[python]view plain
#fromemail.MIMETextimportMIMEText#
fromemail.MIMETextimportMIMEText
fromemail.HeaderimportHeader
msg=MIMEText('hello,sendbypython','plain','utf-8');
from_addr="*****@qq.com"#
password="******"#password
to_addr="****@qq.com"#targetemailaddress
smtp_server="smtp.qq.com"#smtpseverdomainforqqissmtp.qq.com
importsmtplib
server=smtplib.SMTP(smtp_server,25);
server.set_debuglevel(1)
server.login(from_addr,password);
server.sendmail(from_addr,[to_addr],msg.as_string())
server.quit()
上面这个是没有主题的,有主题的话建议采用下面这个代码
下面是连续发送有主题的文件10封
[python]view plain
fromemail.HeaderimportHeader
fromemail.MIMETextimportMIMEText
fromemailimportencoders
fromemail.utilsimportparseaddr,formataddr
importsmtplib
def_format_addr(s):
name,addr=parseaddr(s)
returnformataddr((Header(name,'utf-8').encode(),addr))
from_addr="*****@qq.com"#
password="******"#password
to_addr="****@qq.com"#targetemailaddress
smtp_server="smtp.qq.com"#smtpseverdomainforqqissmtp.qq.com
fornuminrange(1,11):
msg=MIMEText('hello,sendbyTom','plain','utf-8');
msg['From']=_format_addr('Tom<%s>'%from_addr)
msg['To']=_format_addr('addministrator<%s>'%to_addr)
msg['Subject']=Header('ThegreetingfromTom','utf-8').encode()
server=smtplib.SMTP(smtp_server,25)
server.set_debuglevel(1)
server.login(from_addr,password)
#server.sendmail(from_addr,[to_addr],msg.as_string())
server.sendmail(from_addr,[to_addr],msg.as_string())
server.quit()
10. python 实现邮件合并
用Python的smtplib就可以简单的实现邮件功能。什么是SMTP?邮件功能怎么实现?
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
Python创建 SMTP 对象语法如下:
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数说明:
host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。
port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。
local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。
Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])