python 电子邮件,python邮箱号码

hacker2年前黑客组织153

请问如何用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中如何用程序获得电子邮箱的用户名?

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

相关文章

怎么设置邮箱账号,express设置邮箱

怎么设置邮箱账号,express设置邮箱

怎样设置邮箱 设置电子邮箱的方法如下。这里我们以163邮箱为例,首先打开搜索引擎,输入“163”我们选择注册邮箱按钮。点击注册邮箱后,进入邮箱注册界面,这里163的邮箱提供了三种邮箱注册申请方式。设置...

怎样发邮箱到新浪邮箱里,怎样发邮箱到新浪邮箱

怎样发邮箱到新浪邮箱里,怎样发邮箱到新浪邮箱

怎样再新浪邮箱中收发邮件,具体点介绍? 在寄件人后显示您的昵称和新浪邮箱电子邮件地址。下面详细介绍编写邮件的方法:填写收件人地址在收件人(To)、抄送(CC)和密送(BCC)的地址输入框内,可以输入对...

国际邮政区号,国家邮箱区号

国际邮政区号,国家邮箱区号

中国邮递区号是什么 直辖市北京市 010 上海市 021 天津市 022 重庆市 023 河 北 省 石家庄市 0311南宫市 0319 辛集市 0311衡水市 0318 邢台市 0319 沙河市 0...

surface邮件,surface邮箱登录

surface邮件,surface邮箱登录

surface pro 怎样设置QQ邮箱? 你好,你这款平板电脑应该用的是Win8操作系统,在其邮箱中设置QQ邮箱之前,请先开启邮箱的POP3/IMAP/SMTP服务。登录邮箱网页版,点击左上方的设置...

黑客教学入门基础知识,黑客自学基础

黑客教学入门基础知识,黑客自学基础

黑客零基础入门 黑客零基础入门这件事是违法的,不能学习。利用公共通讯网路,如互联网和电话系统,在未经许可的情况下,载入对方系统的被称为黑帽黑客(英文:black hat,另称cracker);调试和分...

德尔福柴油怎么样,德尔福柴油邮箱

德尔福柴油怎么样,德尔福柴油邮箱

老师们晚上好,江铃电喷德尔福柴油油箱里有水,油嘴型号是3310d滤芯都换了还是没有猛劲是什么原因? 1.发动机的机油刚刚更换没多久就变黑了:故障判断:假故障。原因分析:变黑原因主要有两个方面。首先是由...

评论列表

访客
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

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

发表评论    

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