python 电子邮件,python邮箱号码

hacker2年前黑客组织100

请问如何用python将某个邮箱未读邮件全部转发到另一个邮箱?

首先了解 *** TP(简单邮件传输协议),邮件传送 *** 程序使用 *** TP协议来发送电邮到接收者的邮件服务器。 *** TP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用 *** TP协议。 *** TP协议的默认TCP端口号是25。

本文主要介绍利用' *** tplib','email'两个模块来实现邮件的发送,可以如下查看两个模块的函数和 *** :

*** tplib模块简介:

*** tplib. *** TP([host[, port[, local_hostname[, timeout]]]])

  此为 *** TP类构造函数,表示与 *** TP服务器之间的连接,并根据这个连接向 *** tp服务器发送指令,执行相关操作(如:登陆、发送邮件),且每个参数都是可选的。

其中最重要的参数:

host: *** tp服务器主机名

port: *** tp服务的端口,默认是25;

如果在创建 *** TP对象的时候提供了这两个参数,在初始化的时候会自动调用connect *** 去连接服务器。

*** tplib. *** TP还提供了如下 *** :

*** TP.set_debuglevel(level):设置是否为调试模式

*** TP.connect([host[, port]]):连接到指定的 *** tp服务器。参数分别表示 *** pt主机和端口。

*** TP.docmd(cmd[, argstring]):向 *** tp服务器发送指令。

*** TP.helo([hostname]) :使用"helo"指令向服务器确认身份。

*** TP.login(user, password):登陆到 *** tp服务器。现在几乎所有 *** tp服务器,都必须在验证用户信息合法之后才允许发送邮件。(重要!)

*** TP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options]):发送邮件。这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是 *** tp协议中定义的格式。 *** TP.quit() :断开与 *** tp服务器的连接,相当于发送"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邮箱,对应的 *** tp服务器地址:mail.163.com,端口号25)

常用邮箱的 *** tp服务器地址和端口号如图:

编写程序如下:

#! /usr/bin/env python

import *** tpli

from email.mime.text import MIMEText

mailto_list=['xxxx@xxx.com'] #收件人(列表)

mail_host=" *** tp.163.com" #使用的邮箱的 *** tp服务器地址

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 = *** tplib. *** TP()

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发送邮件啦!

我用python发邮件。出现以下问题,求解答

1、准备两个邮箱帐号,一个是常用的(接收端),另一个可以注册网易163邮箱或者foxmail邮箱也可(发送端),本次我使用两个 *** 邮箱进行演示。

2、在邮箱的设置

3、账户中开启 *** TP功能,如下图:

4、点击生成授权码,按照弹出窗口的提示发送短信,发送后单击我已发送按钮。

5、将生成的授权码复制下来以备接下来使用。如下图:

6、我们来编辑代码:

from email.header import Header

from email.mime.text import MIMEText

from email.utils import parseaddr,formataddr

import *** tplib

def _format_addr(s):  

name,addr = parseaddr(s)  

return formataddr((Header(name,'utf-8').encode(),addr))

#发件人地址

from_addr = '10******10@qq.com'

#密码刚才复制的邮箱的授权码

password = 'u*******************g'

#收件人地址

to_addr =  '10********28@qq.com'

#邮箱服务器地址

*** tp_server = ' *** tp.qq.com'

#设置邮件信息

msg = MIMEText('Python爬虫运行异常,异常信息为遇到HTTP 403','plain','utf-8')

msg['From'] = _format_addr('Python爬虫一号%s'%from_addr)

msg['To'] = _format_addr('管理员%s'%to_addr)

msg['Subject'] = Header('一号爬虫运行异常.','utf-8').encode()

#发送邮件

server = *** tplib. *** TP_SSL( *** tp_server,465)

#打印出和 *** TP服务器交互的所有信息

server.set_debuglevel(1)

#登录 *** TP服务器

server.login(from_addr,password)

#sendmail():发送邮件,由于可以一次发给多个人,所以传入一个list邮件正文是一个str,as_string()把MIMEText对象变成str。

server.sendmail(from_addr,to_addr,msg.as_string())server.quit()print('邮件发送成功!')

7、登录接收端邮箱,查看是否发送成功,如下图:

8、如果能成功收到邮件的话就说明完成了。

Python中输入一个邮箱,如何输出@后的部分?

将输入的邮箱保存到s,用@作分隔符调用split分割s再取下标为1的元素输出就行了。

比如:

s="asd.rt@12345.xxx"

l=s.split("@")

print(l[1])

如何用python发送email

python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点。

一、相关模块介绍

发送邮件主要用到了 *** tplib和email两个模块,这里首先就两个模块进行一下简单的介绍:

1、 *** tplib模块

*** tplib. *** TP([host[, port[, local_hostname[, timeout]]]])

*** TP类构造函数,表示与 *** TP服务器之间的连接,通过这个连接可以向 *** tp服务器发送指令,执行相关操作(如:登陆、发送邮件)。所有参数都是可选的。

host: *** tp服务器主机名

port: *** tp服务的端口,默认是25;如果在创建 *** TP对象的时候提供了这两个参数,在初始化的时候会自动调用connect *** 去连接服务器。

*** tplib模块还提供了 *** TP_SSL类和LMTP类,对它们的操作与 *** TP基本一致。

*** tplib. *** TP提供的 *** :

*** TP.set_debuglevel(level):设置是否为调试模式。默认为False,即非调试模式,表示不输出任何调试信息。

*** TP.connect([host[, port]]):连接到指定的 *** tp服务器。参数分别表示 *** pt主机和端口。注意: 也可以在host参数中指定端口号(如: *** pt.yeah.net:25),这样就没必要给出port参数。

*** TP.docmd(cmd[, argstring]):向 *** tp服务器发送指令。可选参数argstring表示指令的参数。

*** TP.helo([hostname]) :使用"helo"指令向服务器确认身份。相当于告诉 *** tp服务器“我是谁”。

*** TP.has_extn(name):判断指定名称在服务器邮件列表中是否存在。出于安全考虑, *** tp服务器往往屏蔽了该指令。

*** TP.verify(address) :判断指定邮件地址是否在服务器中存在。出于安全考虑, *** tp服务器往往屏蔽了该指令。

*** TP.login(user, password) :登陆到 *** tp服务器。现在几乎所有的 *** tp服务器,都必须在验证用户信息合法之后才允许发送邮件。

*** TP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]) :发送邮件。这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是 *** tp协议中定义的格式。

*** TP.quit() :断开与 *** tp服务器的连接,相当于发送"quit"指令。(很多程序中都用到了 *** tp.close(),具体与quit的区别google了一下,也没找到答案。)

2、email模块

emial模块用来处理邮件消息,包括MIME和其他基于RFC 2822 的消息文档。使用这些模块来定义邮件的内容,是非常简单的。其包括的类有:

class email.mime.base.MIMEBase(_maintype, _subtype, **_params):这是MIME的一个基类。一般不需要在使用时创建实例。其中_maintype是内容类型,如text或者image。_subtype是内容的minor type 类型,如plain或者gif。 **_params是一个字典,直接传递给Message.add_header()。

class email.mime.multipart.MIMEMultipart([_subtype[, boundary[, _subparts[, _params]]]]:MIMEBase的一个子类,多个MIME对象的 *** ,_subtype默认值为mixed。boundary是MIMEMultipart的边界,默认边界是可数的。

class email.mime.application.MIMEApplication(_data[, _subtype[, _encoder[, **_params]]]):MIMEMultipart的一个子类。

class email.mime.audio. MIMEAudio(_audiodata[, _subtype[, _encoder[, **_params]]]): MIME音频对象

class email.mime.image.MIMEImage(_imagedata[, _subtype[, _encoder[, **_params]]]):MIME二进制文件对象。

class email.mime.message.MIMEMessage(_msg[, _subtype]):具体的一个message实例,使用 *** 如下:

msg=mail.Message.Message() #一个实例

msg['to']='XXX@XXX.com' #发送到哪里

msg['from']='YYY@YYYY.com' #自己的邮件地址

msg['date']='2012-3-16' #时间日期

msg['subject']='hello world' #邮件主题

class email.mime.text.MIMEText(_text[, _subtype[, _charset]]):MIME文本对象,其中_text是邮件内容,_subtype邮件类型,可以是text/plain(普通文本邮件),html/plain(html邮件), _charset编码,可以是gb2312等等。

二、几种邮件的具体实现代码

1、普通文本邮件

普通文本邮件发送的实现,关键是要将MIMEText中_subtype设置为plain。首先导入 *** tplib和mimetext。创建 *** tplib. *** tp实例,connect邮件 *** tp服务器,login后发送,具体代码如下:(python2.6下实现)

# -*- coding: UTF-8 -*-

'''

发送txt文本邮件

小五义:

'''

import *** tplib

from email.mime.text import MIMEText

mailto_list=[YYY@YYY.com]

mail_host=" *** tp.XXX.com" #设置服务器

mail_user="XXXX" #用户名

mail_pass="XXXXXX" #口令

mail_postfix="XXX.com" #发件箱的后缀

def send_mail(to_list,sub,content):

me="hello"+""+mail_user+"@"+mail_postfix+""

msg = MIMEText(content,_subtype='plain',_charset='gb2312')

msg['Subject'] = sub

msg['From'] = me

msg['To'] = ";".join(to_list)

try:

server = *** tplib. *** TP()

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

if __name__ == '__main__':

if send_mail(mailto_list,"hello","hello world!"):

print "发送成功"

else:

print "发送失败"

2、html邮件的发送

与text邮件不同之处就是将将MIMEText中_subtype设置为html。具体代码如下:(python2.6下实现)

# -*- coding: utf-8 -*-

'''

发送html文本邮件

'''

import *** tplib

from email.mime.text import MIMEText

mailto_list=["YYY@YYY.com"]

mail_host=" *** tp.XXX.com" #设置服务器

mail_user="XXX" #用户名

mail_pass="XXXX" #口令

mail_postfix="XXX.com" #发件箱的后缀

def send_mail(to_list,sub,content): #to_list:收件人;sub:主题;content:邮件内容

me="hello"+""+mail_user+"@"+mail_postfix+"" #这里的hello可以任意设置,收到信后,将按照设置显示

msg = MIMEText(content,_subtype='html',_charset='gb2312') #创建一个实例,这里设置为html格式邮件

msg['Subject'] = sub #设置主题

msg['From'] = me

msg['To'] = ";".join(to_list)

try:

s = *** tplib. *** TP()

s.connect(mail_host) #连接 *** tp服务器

s.login(mail_user,mail_pass) #登陆服务器

s.sendmail(me, to_list, msg.as_string()) #发送邮件

s.close()

return True

except Exception, e:

print str(e)

return False

if __name__ == '__main__':

if send_mail(mailto_list,"hello","a href=''小五义/a"):

print "发送成功"

else:

print "发送失败"

3、发送带附件的邮件

发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用 *** tplib. *** tp发送。

# -*- coding: cp936 -*-

'''

发送带附件邮件

'''

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

import *** tplib

#创建一个带附件的实例

msg = MIMEMultipart()

#构造附件1

att1 = MIMEText(open('d:\\123.rar', 'rb').read(), 'base64', 'gb2312')

att1["Content-Type"] = 'application/octet-stream'

att1["Content-Disposition"] = 'attachment; filename="123.doc"'#这里的filename可以任意写,写什么名字,邮件中显示什么名字

msg.attach(att1)

#构造附件2

att2 = MIMEText(open('d:\\123.txt', 'rb').read(), 'base64', 'gb2312')

att2["Content-Type"] = 'application/octet-stream'

att2["Content-Disposition"] = 'attachment; filename="123.txt"'

msg.attach(att2)

#加邮件头

msg['to'] = 'YYY@YYY.com'

msg['from'] = 'XXX@XXX.com'

msg['subject'] = 'hello world'

#发送邮件

try:

server = *** tplib. *** TP()

server.connect(' *** tp.XXX.com')

server.login('XXX','XXXXX')#XXX为用户名,XXXXX为密码

server.sendmail(msg['from'], msg['to'],msg.as_string())

server.quit()

print '发送成功'

except Exception, e:

print str(e)

4、利用MIMEimage发送图片

# -*- coding: cp936 -*-

import *** tplib

import mimetypes

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.mime.image import MIMEImage

def AutoSendMail():

msg = MIMEMultipart()

msg['From'] = "XXX@XXX.com"

msg['To'] = "YYY@YYY.com"

msg['Subject'] = "hello world"

txt = MIMEText("这是中文的邮件内容哦",'plain','gb2312')

msg.attach(txt)

file1 = "C:\\hello.jpg"

image = MIMEImage(open(file1,'rb').read())

image.add_header('Content-ID','image1')

msg.attach(image)

server = *** tplib. *** TP()

server.connect(' *** tp.XXX.com')

server.login('XXX','XXXXXX')

server.sendmail(msg['From'],msg['To'],msg.as_string())

server.quit()

if __name__ == "__main__":

AutoSendMail()

利用MIMEimage发送图片,原本是想图片能够在正文中显示,可是代码运行后发现,依然是以附件形式发送的,希望有高手能够指点一下,如何可以发送在正文中显示的图片的邮件,就是图片是附件中存在,但同时能显示在正文中,具体形式如下图。

如何在python程序中发邮件

通过命令行发送邮件,功能强大

python ./mail -s $server -f $from -t $to -u $user -p $pass -S "$subject" -m "${mail_msg}" -F $file

Python 发送邮件可以添加附件:

#!/usr/bin/python

from email.MIMEText import MIMEText

from email.MIMEMultipart import MIMEMultipart

from email.MIMEBase import MIMEBase

from email import Utils, Encoders

import mimetypes, sys, *** tplib,socket,getopt

class SendMail:

def __init__(self, *** tp_server,from_addr,to_addr,user,passwd):

self.mailserver= *** tp_server

self.from_addr=from_addr

self.to_addr=to_addr

self.username=user

self.password=passwd

def attachment(self,filename):

fd=open(filename,'rb')

filename=filename.split('/')

mimetype,mimeencoding=mimetypes.guess_type(filename[-1])

if (mimeencoding is None) or (mimetype is None):

mimetype='application/octet-stream'

maintype,subtype=mimetype.split('/')

if maintype=='text':

retval=MIMEText(fd.read(), _subtype=subtype, _charset='utf-8')

else:

retval=MIMEBase(maintype,subtype)

retval.set_payload(fd.read())

Encoders.encode_base64(retval)

retval.add_header('Content-Disposition','attachment',filename=filename[-1])

fd.close()

return retval

def msginfo(self,msg,subject,filename):

# message = """Hello, ALL

#This is test message.

#--Anonymous"""

message=msg

msg=MIMEMultipart()

msg['To'] = self.to_addr

msg['From'] = 'sa '+self.from_addr+''

msg['Date'] = Utils.formatdate(localtime=1)

msg['Message-ID'] = Utils.make_msgid()

if subject:

msg['Subject'] = subject

if message:

body=MIMEText(message,_subtype='plain')

msg.attach(body)

#for filename in sys.argv[1:]:

if filename:

msg.attach(self.attachment(filename))

return msg.as_string()

def send(self,msg=None,subject=None,filename=None):

try:

s= *** tplib. *** TP(self.mailserver)

try:

s.login(self.username,self.password)

except *** tplib. *** TPException,e:

print "Authentication failed:",e

sys.exit(1)

s.sendmail(self.from_addr,self.to_addr.split(','),self.msginfo(msg,subject,filename))

except (socket.gaierror,socket.error,socket.herror, *** tplib. *** TPException),e:

print "*** Your message may not have been sent!"

print e

sys.exit(2)

else:

print "Message successfully sent to %d recipient(s)" %len(self.to_addr)

if __name__=='__main__':

def usage():

print """Useage:%s [-h] -s *** TP Server -f FROM_ADDRESS -t TO_ADDRESS -u USER_NAME -p PASSWORD [-S MAIL_SUBJECT -m MAIL_MESSAGE -F ATTACHMENT]

Mandatory arguments to long options are mandatory for short options too.

-f, --from= Sets the name of the "from" person (i.e., the envelope sender of the mail).

-t, --to= Addressee's address. -t "test@test.com,test1@test.com".

-u, --user= Login *** TP server username.

-p, --pass= Login *** TP server password.

-S, --subject= Mail subject.

-m, --msg= Mail message.-m "msg, ......."

-F, --file= Attachment file name.

-h, --help Help documen.

""" %sys.argv[0]

sys.exit(3)

try:

options,args=getopt.getopt(sys.argv[1:],"hs:f:t:u:p:S:m:F:","--help --server= --from= --to= --user= --pass= --subject= --msg= --file=",)

except getopt.GetoptError:

usage()

sys.exit(3)

server=None

from_addr=None

to_addr=None

username=None

password=None

subject=None

filename=None

msg=None

for name,value in options:

if name in ("-h","--help"):

usage()

if name in ("-s","--server"):

server=value

if name in ("-f","--from"):

from_addr=value

if name in ("-t","--to"):

to_addr=value

if name in ("-u","--user"):

username=value

if name in ("-p","--pass"):

password=value

if name in ("-S","--subject"):

subject=value

if name in ("-m","--msg"):

msg=value

if name in ("-F","--file"):

filename=value

if server and from_addr and to_addr and username and password:

test=SendMail(server,from_addr,to_addr,username,password)

test.send(msg,subject,filename)

else:

usage()

Python中如何用程序获得电子邮箱的用户名?

你好。获得电子邮箱的用户名。首先你要下载一个电子邮箱。你可以下载邮箱大师。邮箱大师下载后可以使用拼音字母注册。也可以使用拼音加 *** 数字注册。注册完成后,邮箱就可以接收和发送电子邮件了。也可以使用邮箱的账号注册应用软件了。注册的号码就是你的邮箱账号。也是你的邮箱地址。

相关文章

网易怎么把手机号换成邮箱,网易手机号能换成邮箱吗

网易怎么把手机号换成邮箱,网易手机号能换成邮箱吗

大话西游手游账号登录的是手机号,怎么改成网易邮箱账号? 用手机直接登录的这种没有办法更改手机号,但并没有要求你一定要在和手机账号相同的手机上才可以登陆,说白了只是个账号而已,换个手机再用也是可以的,但...

517公司,517邮箱

517公司,517邮箱

网易邮箱yzh517@126.com 是想问这个邮箱如何登陆吗?1、web使用,通过手机或电脑浏览器访问mail.126.com即可登陆收发邮件2、客户端使用,手机和电脑都有客户端。比如电脑(foxm...

手机上面如何登录邮箱帐号,手机上面如何登录qq邮箱

手机上面如何登录邮箱帐号,手机上面如何登录qq邮箱

手机qq邮箱怎么登录? 1、进入官网网站https://mail.qq.com,输入自己的账号密码进行登录。可以选择快捷登录方式进行QQ邮箱的登录。在手机上下载并安装QQ邮箱。选择QQ邮箱。输入自己的...

天才黑客宝宝,儿童黑客天才

天才黑客宝宝,儿童黑客天才

他13岁是中国最小“黑客天才”,因不想写作业黑掉学校网站,后来怎样?_百... 严格来看,汪正扬上报的弱口令漏洞并不能算真正的安全网络漏洞,是一种比较普遍存在的安全隐患。所以说,汪正扬后来能被誉为“中...

软通邮箱怎么设置转发到华为邮箱,软通邮箱如何关联华为邮箱

软通邮箱怎么设置转发到华为邮箱,软通邮箱如何关联华为邮箱

软通员工邮箱怎么登录 1、首先就手机连接WIFI,并处于网络环境较好的位置。其次点击软通邮箱官网。最后点击弹出的第一个带有官方标志的连接,输入账号密码登录即可。2、软通动力公司的邮箱登陆地址是:“im...

越秀外国语学院校园邮箱地址,越秀外国语学院校园邮箱

越秀外国语学院校园邮箱地址,越秀外国语学院校园邮箱

关于绍兴越秀外国语学院 浙江越秀外国语学院是经国家教育部批准建立的全日制普通本科高校。学校始创于1981年,现建有稽山、镜湖两个校区,占地面积近1000亩(约66.7万平方米),校园建筑面积近40万平...

评论列表

访客
2022-09-20 21:56:20

中,这个类位于email.MIMEMultipart.MIMEMult ipart。这个类是MIMEBase的直接子类,用来生成包含多个部分的邮件体的MIME对象。4.class email.m

访客
2022-09-20 22:41:20

邮件发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用smtplib.smtp发送。# -*- coding:

访客
2022-09-20 15:59:13

[, _subtype[, _charset]]):MIME文本对象,其中_text是邮件内容,_subtype邮件类型,可以是text/plain(普通文本邮件),html/plain(html邮件), _charset编码,可以是gb

访客
2022-09-21 01:23:09

类和LMTP类,对它们的操作与SMTP基本一致。smtplib.SMTP提供的方法:SMTP.set_debuglevel(level):设置是否为调试模式。默认为False,即非调试模式,表示不输出任何调试信息。

访客
2022-09-21 01:12:05

拉伯数字注册。注册完成后,邮箱就可以接收和发送电子邮件了。也可以使用邮箱的账号注册应用软件了。注册的号码就是你的邮箱账号。也是你的邮箱地址。

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。