当前位置:首页 » 编程语言 » pythonemail解析

pythonemail解析

发布时间: 2025-09-08 23:37:02

1. python正则表达式是什么

Python正则表达式是一个特殊的字符序列,是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。

判断一个字符串是否是合法的Email的方法是:

1、创建一个匹配Email的正则表达式;

2、用该正则表达式去匹配用户的输入来判断是否合法。

因为正则表达式也是用字符串表示的,所以,要首先了解如何用字符来描述字符。

在正则表达式中,如果直接给出字符,就是精确匹配。用 d 可以匹配一个数字, w 可以匹配一个字母或数字。

2. demo鍦╬ython涓镄勭敤娉

demo鏄鎸囨紨绀虹▼搴忥纴阃氩父鐢ㄦ潵婕旂ず涓绉嶆妧链鎴栧伐鍏风殑浣跨敤鏂规硶銆傚湪Python涓锛宒emo涔熸槸涓涓闱炲父閲嶈佺殑姒傚康銆备笅闱㈡垜灏嗕负澶у朵粙缁峆ython涓璬emo镄勭敤娉曘

3銆乨emo绋嫔簭镄勫垎鏋
浠ヤ笂绋嫔簭浣滀负Python涓婕旂ず闾浠跺彂阃佸姛鑳界殑涓涓猟emo绋嫔簭锛屾兜鐩栦简闾浠跺彂阃佺殑鍏ㄨ繃绋嬶纴鍏朵腑锛岄氲繃email妯″潡鍒涘缓浜嗛偖浠跺疄渚嬶纴骞堕氲繃smtplib妯″潡鎻愪緵镄凷MTP鍗忚杩涜屼简闾浠剁殑鍙戦併

4銆乨emo绋嫔簭镄勭敤阃
杩欎釜demo绋嫔簭鍙浠ュ府锷╂柊镓嬩简瑙Python涓镄勯偖浠跺彂阃佸姛鑳斤纴镟村ソ鍦扮悊瑙e拰瀛︿範Python涓镄勯偖浠舵ā鍧椼傚傛灉𨱍宠佽嚜宸变娇鐢≒ython𨱒ュ彂阃侀偖浠讹纴鍙浠ラ氲繃淇鏀硅demo涓镄勫彂浠朵汉銆佹敹浠朵汉銆佷富棰樸佹f枃銆丼MTP链嶅姟鍣ㄥ湴鍧銆佺鍙d互鍙婅处鎴蜂俊鎭绛夊弬鏁帮纴𨱒ュ疄鐜拌嚜宸辩殑闾浠跺彂阃佸姛鑳姐

3. 用Python发送邮件,可以群发,带有多个附件

'''''
函数说明:Send_email_text()函数实现发送带有附件的邮件,可以群发,附件格式包括:xlsx,pdf,txt,jpg,mp3等
参数说明:
1.subject:邮件主题
2.content:邮件正文
3.filepath:附件的地址,输入格式为["","",...]
4.receive_email:收件人地址,输入格式为["","",...]
'''
defSend_email_text(subject,content,filepath,receive_email):
importsmtplib
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.textimportMIMEText
fromemail.mime.
sender="发送方邮箱"
passwd="填入发送方密码"
receivers=receive_email#收件人邮箱

msgRoot=MIMEMultipart()
msgRoot['Subject']=subject
msgRoot['From']=sender

iflen(receivers)>1:
msgRoot['To']=','.join(receivers)#群发邮件
else:
msgRoot['To']=receivers[0]

part=MIMEText(content)
msgRoot.attach(part)

##添加附件部分
forpathinfilepath:
if".jpg"inpath:
#jpg类型附件
jpg_name=path.split("\")[-1]
part=MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition','attachment',filename=jpg_name)
msgRoot.attach(part)

if".pdf"inpath:
#pdf类型附件
pdf_name=path.split("\")[-1]
part=MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition','attachment',filename=pdf_name)
msgRoot.attach(part)

if".xlsx"inpath:
#xlsx类型附件
xlsx_name=path.split("\")[-1]
part=MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition','attachment',filename=xlsx_name)
msgRoot.attach(part)

if".txt"inpath:
#txt类型附件
txt_name=path.split("\")[-1]
part=MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition','attachment',filename=txt_name)
msgRoot.attach(part)

if".mp3"inpath:
#mp3类型附件
mp3_name=path.split("\")[-1]
part=MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition','attachment',filename=mp3_name)
msgRoot.attach(part)

try:
s=smtplib.SMTP()
s.connect("smtp.mail.aliyun.com")#这里我使用的是阿里云邮箱,也可以使用163邮箱:smtp.163.com
s.login(sender,passwd)
s.sendmail(sender,receivers,msgRoot.as_string())
print("邮件发送成功")
exceptsmtplib.SMTPExceptionase:
print("Error,发送失败")
finally:
s.quit()

4. python电子邮件系列(三)之POP接收邮件

由上篇文章我们已经得知邮件从发送到接收的过程:

发件人->MUA->MTA->若干MTA->MDA->MUA->收件人

本节接收邮件主要就是编写一个 MUA 客户端,从 MDA 将邮件取回本地。

收取邮件最常用的是 POP协议 ,目前版本是第三版,也称 POP3 。python内置了 poplib 模块,支持POP3协议。

回想上一节 SMTP ,我们对要发送的邮件内容进行了各种编码,包括添加MIME header,编码之后再进行发送。

因此,我们通过POP3协议接收的也不是原内容,而是经过一系列编码等处理的文本。

所以,要想把POP3收取的文本变为可阅读的邮件对象,就需要利用 email 模块对原始邮件进行解析。

所以,邮件收取的流程就是:

由上一篇 文章 最后总结部分可知。邮件由字符到发送到网络经历了如下的格式转化:

纯文本:

str->bytes->base64->str->bytes

二进制文件:

binary code->base64->str->bytes

我们解析邮件也是按这个思路,逆序解析出内容。

这里的 decode('utf-8') 先把字节流转化为字符串,再将字符串转化为 message 结构的对象。这步与发送邮件的 as_string 函数相反。

先从上一节结构化的 msg 中取出信件头,打印出来。

如果是 multipart 结构, get_payload 函数会返回一个包含不同part的list,然后对每一part递归调用 print_info ,打印子信件头和子信件内容。

不是 multipart 时,之后再依据 Content-Type 作不同处理:

如果是 text :

利用 get_payload(decode = Ture) 取出子信件的内容, decode 为True,则按照 Content-Transfer-Type 将 base64 或 QP 解码为 bytes 。

再 guess_charset 猜出编码方式,之后将其解码为字符显示。

如果不是 Text 对象,则为附件:

打印出附件的 Content-Type 。

5. 有关python正则表达式的问题

163邮箱格式

ret = re.match(r"^[a-zA-z]{1}w{5,17}@163.com$", email)

原意是想匹配一个前三个字符为字母、后三个字符为数字的163邮箱:

ret=re.match(r'^[a-zA-z]{3}[0-9]{3}@163.com$", email)

或ret=re.match(r'^[a-zA-z]{3}d{3}@163.com$", email)

? * + {} 都是量词的使用,表示前面字符或字符串重复的次数

?重复0或1次

* 重复0或多次

+ 重复1或多次

{n} 重复n次

{n,} 至少重复n次

{n,m} 重复次数≥n 且 ≤m

热点内容
安卓怎么拍手机上的内容 发布:2025-09-09 04:24:52 浏览:163
python字符串赋值 发布:2025-09-09 04:23:12 浏览:816
c语言单链表排序 发布:2025-09-09 04:21:49 浏览:877
舰r挂机脚本 发布:2025-09-09 04:21:48 浏览:830
低配置显卡魔兽世界怎么设置 发布:2025-09-09 04:13:46 浏览:789
安卓系统编码在哪里 发布:2025-09-09 03:59:00 浏览:871
java自我评价 发布:2025-09-09 03:38:51 浏览:477
房产系统源码 发布:2025-09-09 03:30:19 浏览:761
笔记本从哪里删除密码 发布:2025-09-09 03:14:05 浏览:808
并行存储器 发布:2025-09-09 03:11:53 浏览:99