免费自己制作网站教程面膜网站广告怎么做

张小明 2025/12/31 19:02:30
免费自己制作网站教程,面膜网站广告怎么做,wordpress前台注册地址,百度学术论文查重免费检测邮箱客户端实现 该Python代码实现了一个2925.com邮箱客户端类#xff0c;主要功能包括#xff1a; 发送邮件#xff1a; 支持纯文本和HTML格式邮件 使用SMTP_SSL协议通过465端口发送 包含发件人、收件人和主题设置 接收邮件#xff1a; 通过IMAP4_SSL协议从993端口获取 提供…邮箱客户端实现 该Python代码实现了一个2925.com邮箱客户端类主要功能包括 发送邮件 支持纯文本和HTML格式邮件 使用SMTP_SSL协议通过465端口发送 包含发件人、收件人和主题设置 接收邮件 通过IMAP4_SSL协议从993端口获取 提供两种获取方式UID命令更可靠和序号获取备用 解析邮件主题、发件人、日期和正文内容 支持限制获取邮件数量 其他特性 邮件正文预览功能截取前200字符 完善的错误处理和日志输出 支持中文字符解码 该客户端类封装了完整的importsmtplibimportimaplibimportemailfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipartfromemail.headerimportdecode_headerimportosclassEmailClient2925:def__init__(self,email_address,password): 初始化2925.com邮箱客户端 参数 email_address: 邮箱地址 password: 邮箱密码 self.email_addressemail_address self.passwordpassword# 2925.com服务器配置self.smtp_serversmtp.2925.comself.smtp_port465# SSL端口 465self.imap_serverimap.2925.comself.imap_port993defsend_email(self,to_email,subject,body,is_htmlFalse): 发送邮件 参数 to_email: 收件人邮箱 subject: 邮件主题 body: 邮件正文 is_html: 是否为HTML格式 try:# 创建邮件msgMIMEMultipart()msg[From]self.email_address msg[To]to_email msg[Subject]subject# 添加邮件正文ifis_html:msg.attach(MIMEText(body,html))else:msg.attach(MIMEText(body,plain))# 连接SMTP服务器并发送print(f正在连接到SMTP服务器:{self.smtp_server}:{self.smtp_port})# 使用SSL连接serversmtplib.SMTP_SSL(self.smtp_server,self.smtp_port)server.login(self.email_address,self.password)server.send_message(msg)server.quit()print(f邮件发送成功收件人:{to_email})returnTrueexceptExceptionase:print(f发送邮件失败:{str(e)})returnFalsedefreceive_emails(self,limit10): 接收邮件 - 改进版本使用UID命令避免SEARCH命令问题 参数 limit: 最多获取的邮件数量 emails[]try:print(f正在连接到IMAP服务器:{self.imap_server}:{self.imap_port})# 连接到IMAP服务器mailimaplib.IMAP4_SSL(self.imap_server,self.imap_port)mail.login(self.email_address,self.password)# 选择收件箱status,select_infomail.select(INBOX)ifstatus!OK:print(f选择收件箱失败:{select_info})return[]# 获取邮件总数total_msgsint(select_info[0].decode())print(f收件箱中共有{total_msgs}封邮件)iftotal_msgs0:print(收件箱为空)mail.logout()return[]# 方法1: 使用UID命令获取邮件更可靠print(尝试使用UID命令获取邮件...)# 先获取所有邮件的UIDstatus,uid_datamail.uid(SEARCH,None,ALL)ifstatus!OKornotuid_data[0]:print(UID SEARCH失败尝试方法2...)# 方法2: 直接按序号获取邮件returnself._receive_by_sequence(mail,total_msgs,limit)# 获取UID列表uidsuid_data[0].split()print(f找到{len(uids)}封邮件的UID)# 反转列表获取最新的邮件uidsuids[::-1]# 限制获取数量uidsuids[:limit]fori,uidinenumerate(uids):try:# 使用UID获取邮件status,msg_datamail.uid(FETCH,uid,(RFC822))ifstatusOKandmsg_data[0]isnotNone:# 解析邮件ifisinstance(msg_data[0],tuple):raw_emailmsg_data[0][1]else:raw_emailmsg_data[0]msgemail.message_from_bytes(raw_email)# 解码主题subject无主题ifmsg[Subject]:subject_infodecode_header(msg[Subject])[0]subject_textsubject_info[0]encodingsubject_info[1]ifisinstance(subject_text,bytes):subjectsubject_text.decode(encodingifencodingelseutf-8,errorsignore)else:subjectstr(subject_text)# 获取发件人from_msg.get(From,未知发件人)# 获取日期date_msg.get(Date,未知日期)# 获取邮件正文bodyself._extract_email_body(msg)emails.append({id:i1,uid:uid.decode(),subject:subject,from:from_,date:date_,body:body,body_preview:body[:200]...iflen(body)200elsebody})print(f邮件{i1}:)print(f UID:{uid.decode()})print(f 主题:{subject})print(f 发件人:{from_})print(f 日期:{date_})print(f 预览:{body[:100]}...)print(-*50)else:print(f获取邮件UID{uid}失败)exceptExceptionase:print(f处理邮件UID{uid}时出错:{str(e)})continue# 关闭连接mail.close()mail.logout()exceptimaplib.IMAP4.errorase:print(fIMAP协议错误:{str(e)})# 如果UID命令也失败尝试最基本的FETCH方法returnself._try_basic_fetch()exceptExceptionase:print(f接收邮件失败:{str(e)})returnemailsdef_receive_by_sequence(self,mail,total_msgs,limit):方法2: 按序号直接获取邮件emails[]# 计算起始和结束位置startmax(1,total_msgs-limit1)forseq_numinrange(total_msgs,start-1,-1):try:status,msg_datamail.fetch(str(seq_num).encode(),(RFC822))ifstatusOKandmsg_data[0]isnotNone:ifisinstance(msg_data[0],tuple):raw_emailmsg_data[0][1]else:raw_emailmsg_data[0]msgemail.message_from_bytes(raw_email)# 解码主题subject无主题ifmsg[Subject]:subject_infodecode_header(msg[Subject])[0]subject_textsubject_info[0]encodingsubject_info[1]ifisinstance(subject_text,bytes):subjectsubject_text.decode(encodingifencodingelseutf-8,errorsignore)else:subjectstr(subject_text)# 获取邮件正文bodyself._extract_email_body(msg)emails.append({id:total_msgs-seq_num1,seq:seq_num,subject:subject,from:msg.get(From,未知发件人),date:msg.get(Date,未知日期),body_preview:body[:200]...iflen(body)200elsebody})print(f邮件{total_msgs-seq_num1}(序号:{seq_num}):{subject})exceptExceptionase:print(f处理邮件序号{seq_num}时出错:{str(e)})continuemail.logout()returnemailsdef_extract_email_body(self,msg):提取邮件正文内容bodyifmsg.is_multipart():forpartinmsg.walk():content_typepart.get_content_type()content_dispositionstr(part.get(Content-Disposition))# 跳过附件ifattachmentincontent_disposition:continueifcontent_typein[text/plain,text/html]:try:body_bytespart.get_payload(decodeTrue)ifbody_bytes:charsetpart.get_content_charset()orutf-8try:bodybody_bytes.decode(charset,errorsignore)except:bodybody_bytes.decode(utf-8,errorsignore)else:bodypart.get_payload()except:bodypart.get_payload()# 优先使用纯文本正文ifcontent_typetext/plainandbody.strip():breakelse:try:body_bytesmsg.get_payload(decodeTrue)ifbody_bytes:charsetmsg.get_content_charset()orutf-8try:bodybody_bytes.decode(charset,errorsignore)except:bodybody_bytes.decode(utf-8,errorsignore)else:bodymsg.get_payload()except:bodymsg.get_payload()returnbodydef_try_basic_fetch(self):方法3: 尝试最基本的连接和获取try:print(尝试最基本的邮件获取方法...)mailimaplib.IMAP4_SSL(self.imap_server,self.imap_port)mail.login(self.email_address,self.password)# 直接尝试获取第一封邮件mail.select(INBOX)status,msg_datamail.fetch(1,(RFC822))ifstatusOK:print(成功获取到第一封邮件)# 这里可以添加解析代码else:print(连最基本的FETCH也失败了)mail.logout()exceptExceptionase:print(f基本方法也失败:{str(e)})return[]defcheck_connection(self):测试服务器连接print(正在测试SMTP连接...)try:serversmtplib.SMTP_SSL(self.smtp_server,self.smtp_port)server.login(self.email_address,self.password)server.quit()print(SMTP连接成功)exceptExceptionase:print(fSMTP连接失败:{str(e)})print(\n正在测试IMAP连接...)try:mailimaplib.IMAP4_SSL(self.imap_server,self.imap_port)mail.login(self.email_address,self.password)# 测试是否能选择收件箱status,infomail.select(INBOX)ifstatusOK:print(fIMAP连接成功收件箱邮件数:{info[0].decode()})else:print(fIMAP登录成功但选择收件箱失败:{info})mail.logout()exceptExceptionase:print(fIMAP连接失败:{str(e)})deftestSend1():list_[第一个,第二个,第三个,第四个,]print(\n发送测试邮件...)foriinrange(200):client.send_email(to_emaillaocooonqq.com,# 替换为实际收件人subjectlist_[i%len(list_)],测试邮件,body这是一封来自2925.com的测试邮件。)# 使用示例if__name____main__:# 您的邮箱信息EMAIL_ADDRESSxxxxxxEMAIL_PASSWORDxxxxx# 创建邮箱客户端clientEmailClient2925(EMAIL_ADDRESS,EMAIL_PASSWORD)# 测试连接client.check_connection()# 发送邮件示例# testSend1()print(\n发送测试邮件...)client.send_email(to_emailxxxxxxx.xx,# 替换为实际收件人subject测试邮件,body这是一封来自xxx.com的测试邮件。)# 接收邮件示例print(\n接收最新邮件...)emailsclient.receive_emails(limit10)ifemails:print(emails)print(f共收到{len(emails)}封邮件)else:print(没有收到邮件)
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

茂名网站建设公司哪个好WordPress更改网站地址

网络监控工具Nagios与MRTG使用指南 在网络管理中,监控服务器和服务的状态至关重要。Nagios和MRTG是两款强大的网络监控工具,它们能帮助我们实时掌握网络的运行状况。本文将详细介绍如何使用Nagios监控邮件服务器、名称服务,以及如何使用MRTG进行网络流量监控。 1. 使用Nag…

张小明 2025/12/31 23:00:46 网站建设

济南网站建设公司网站规划说明

前言基于 PHP 的教学资源管理平台,直击 “教学资源碎片化、共享渠道有限、权限管控混乱” 的核心痛点,依托 PHP 的高效后端处理能力与 Laravel 框架的快速开发优势,构建 “资源整合 分级共享 智能管理” 的一体化教学服务平台。传统模式下&…

张小明 2025/12/31 12:46:21 网站建设

建设检测人员证书查询网站搜索引擎seo优化

Linux下USB CDC虚拟串口驱动解析:从协议到实战的完整路径 你有没有遇到过这样的场景:开发一块STM32板子,想打印调试信息,却发现UART引脚已经被占用?或者做固件升级时,不想额外加一个串口转USB芯片&#xf…

张小明 2025/12/31 20:58:46 网站建设

K12网站怎么建设福州开发公司

Wan2.2-T2V-A14B模型对侗族大歌合唱声部的空间定位还原 在数字技术飞速演进的今天,我们正面临一个前所未有的挑战:如何让那些口耳相传、依赖现场氛围传递的文化遗产,在脱离原生环境后依然能保持其完整性与感染力?尤其是像侗族大歌…

张小明 2025/12/31 10:36:17 网站建设

新网站建设怎么样wordpress多文件下载插件

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2026/1/1 7:27:25 网站建设

沈阳cms模板建站app怎么调用WordPress的用户

标题:Flutter:开启跨平台应用开发的新纪元 引言 在移动互联网高速发展的今天,用户对应用的性能、体验和交付速度提出了更高的要求。与此同时,开发者面临着为多个平台(如 iOS、Android、Web 和桌面)分别开…

张小明 2025/12/31 14:21:50 网站建设