首页 > 其他分享 >第一遍文章

第一遍文章

时间:2024-01-04 15:00:40浏览次数:39  
标签:第一遍 xxxx auth smtpobj user 文章 msg mail

自我介绍

    本人计算机专业毕业,当过网管,做过网工,现在从事运维。在工作中发现好多技术需要学习。需要不停的充实自己,努力提高自己。运维也需要开发能力。努力中。。。。。。。。。。。。

技术分享:

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装

正常发邮件能抄送,多用户

class SMTP(builtins.object)

SMTP(host='', port=0, local_hostname=None, timeout=, source_address=None)

Python代码

#coding:utf8

#加载smtplib模块

import smtplib


from email.mime.text import MIMEText

from email.header import Header



#定义连接邮箱的服务器smtp及端口、用户名和密码

server_host = 'smtp.xxxx.xxx'

server_port = '25'

user_auth = '[email protected]'

user_pass = 'xxxxxxxx'

#定义收件人、抄送人list

to_user = [xxxx@xxxx.xxxx','xxxx@xxxx.xxxx']

to_ccuser = ['xxxx@xxxx.xxxx']

#定义发送邮件的msg内容、标题、发件人、收件人、抄送人

mail_subject = '测试邮件'

mail_context = '内容'

# msg ="""From:%s <%s>

# To:%s <%s>

# Subject: %s   #如果后不加一行空行,没有内容输出到邮件

#

# %s

# """%(user_auth,user_auth,to_user,to_user,mail_subject,mail_context)



msg = MIMEText(mail_context,'plain','utf-8')

msg['Subject'] = Header(mail_subject,'utf-8')

#msg['From'] = Header(user_auth,'utf-8')

msg['From'] = user_auth

msg['To'] = ','.join(to_user)

msg['cc'] = ','.join(to_ccuser)

#以迭代器形式添加抄送人到发送列表

to_user.extend(to_ccuser)

#暗抄送

#receive.extend(bccto_list)



#实例化smtp对象

smtpobj = smtplib.SMTP()

try:

    smtpobj.connect(server_host, server_port)

    smtpobj.login(user_auth, user_pass)

    #smtpobj.sendmail(user_auth, msg['To'].split(','), msg.as_string())

    smtpobj.sendmail(user_auth, to_user, msg.as_string())

    print("邮件发送成功")

    smtpobj.quit()

except smtplib.SMTPException:

print('Error:无法发送邮件')


正常发邮件能抄送、多用户、能发附件

Python 代码

#coding:utf8

#加载smtplib模块

import smtplib

#正常发邮件

from email.mime.text import MIMEText

from email.header import Header


#发带附件

from email.mime.multipart import MIMEMultipart


#定义连接邮箱的服务器smtp及端口、用户名和密码

server_host = 'smtp.xxxx.xxx'

server_port = '25'

user_auth = '[email protected]'

user_pass = 'xxxxxxxxxxxx'

#定义收件人、抄送人list

to_user = ['xxx@xxx.xxx','[email protected]']

to_ccuser = ['xxxx@xxxx.xxxx']

#定义发送邮件的msg内容、标题、发件人、收件人、抄送人

mail_subject = '测试邮件'

mail_context = '内容'

# msg ="""From:%s <%s>

# To:%s <%s>

# Subject: %s   #如果后不加一行空行,没有内容输出到邮件

#

# %s

# """%(user_auth,user_auth,to_user,to_user,mail_subject,mail_context)


#创建一个带附件的实例

msg = MIMEMultipart()


#msg = MIMEText(mail_context,'plain','utf-8')

msg['Subject'] = Header(mail_subject,'utf-8')

#msg['From'] = Header(user_auth,'utf-8')

msg['From'] = user_auth

msg['To'] = ','.join(to_user)

msg['cc'] = ','.join(to_ccuser)

#以迭代器形式添加抄送人到发送列表

to_user.extend(to_ccuser)

#暗抄送

#receive.extend(bccto_list)


#邮件正文内容

msg.attach(MIMEText(mail_context,'plain','utf-8'))


#构造附件1,传送当前目录下的 test.txt 文件

att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')

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

# 这里的filename可以任意写,写什么名字,邮件中显示什么名字

att1["Content-Disposition"] = 'attachment; filename="test.txt"'

msg.attach(att1)

#实例化smtp对象

smtpobj = smtplib.SMTP()

try:

    smtpobj.connect(server_host, server_port)

    smtpobj.login(user_auth, user_pass)

    #smtpobj.sendmail(user_auth, msg['To'].split(','), msg.as_string())

    smtpobj.sendmail(user_auth, to_user, msg.as_string())

    print("邮件发送成功")

    smtpobj.quit()

except smtplib.SMTPException:

    print('Error:无法发送邮件')

总结:

     自己学习测试!


标签:第一遍,xxxx,auth,smtpobj,user,文章,msg,mail
From: https://blog.51cto.com/u_15149794/9101439

相关文章

  • NetCore高级系列文章04---async、await原理揭秘
    一、async、await本质直接说结论:它们是C#提供的语法糖,编译器编译后是状态机的调用。先看如下的一段代码,要main方法中调用了三个await方法 将此dll进行反编译为4.0的代码如下: 可见到两个Main方法,也就是说我们在程序中Main方法上加了async关键词,编译器会编译成一个是异步的一个是非......
  • 一篇文章彻底搞懂TiDB集群各种容量计算方式
    背景TiDB集群的监控面板里面有两个非常重要、且非常常用的指标,相信用了TiDB的都见过:Storagecapacity:集群的总容量Currentstoragesize:集群当前已经使用的空间大小当你准备了一堆服务器,经过各种思考设计部署了一个TiDB集群,有没有想过这两个指标和服务器磁盘之间到底是啥关......
  • 【腾讯云中间件】2023年热门文章集锦
    各位读者,大家好!光阴似箭,日月如梭,仿佛冬奥会的盛况还在眼前,新的一年却即将到来。在过去的一年里,我们见证了腾讯云中间件在产品升级与创新方面的显著进步,包括消息队列TDMQ品牌全新升级和新产品发布,微服务引擎升级与异地多活单元化能力发布等。腾讯云中间件团队一直秉承持续创新的......
  • 配置隧道代理HTTP:手动设置与自动配置,一篇文章让你成为网络魔法师!
    嘿,小伙伴们!今天我们要一起探讨一个激动人心的话题——如何配置隧道代理HTTP。这个话题可能听起来有点复杂,但别担心,我会用最简单的方式为你解释。首先,让我们来了解一下什么是隧道代理HTTP。简单来说,它就像是一条魔法通道,能帮助我们更好地浏览网页、保护隐私、甚至突破地域限制。配置......
  • 软件测试:遇到bug怎么分析,这篇文章值得一看
    为什么定位问题如此重要?可以明确一个问题是不是真的“bug”很多时候,我们找到了问题的原因,结果发现这根本不是bug。原因明确,误报就会降低多个系统交互,可以明确指出是哪个系统的缺陷,防止“踢皮球”,提高问题解决的效率增强开发对测试的信任度,沟通更有效,配合的更好,开发修改bug时效......
  • 软件测试/测试开发|如何定位bug,一篇文章告诉你
    简介在我们对软件进行测试时,遇见bug是无法避免的,但是我们如何对出现的bug进行定位呢?bug究竟是哪个原因引起的就是我们解决bug的关键所在了,本文就来介绍一下如何定位bug。定位问题的重要性很多测试人员可能会说,测试的职责就是找到bug,至于找原因并修复,那是开发的事情,关我什么事?......
  • NetCore高级系列文章04---async、await原理揭秘
    async、await本质上是C#提供的语法糖,编译器编译后是状态机的调用。先看如下的一段代码,要main方法中调用了三个await方法 将此dll进行反编译为4.0的代码如下: 可见到两个Main方法,也就是说我们在程序中Main方法上加了async关键词,编译器会编译成一个是异步的一个是非异步方法,程......
  • 不会使用 EF Core 的 Code First 模式?来看看这篇文章,手把手地教你
    EFCoreCodeFirst是什么CodeFirst是EntityFrameworkCore(简称EFCore)的一种开发模式,它允许开发人员使用纯粹的代码来定义数据模型,通过它,可以极大地提高开发效率:使用CodeFirst开发模式,你可以专注于定义领域模型和业务逻辑,而无需关注数据库的细节,能够更快地构建应......
  • 软件测试/测试开发|一篇文章带你入门HTML
    前言上一篇文章我们提到了web的三大主要资源,HTML,CSS以及JS,HTML是提供web页面内容的资源,本文我们就来介绍一下HTML。HTMLHTML(HyperTextMarkupLanguage)是web的核心组成部分之一,是构建网页的基础语言。HTML使用标记来描述文档的结构,并定义了网页上的内容,包括文本、图像、链接等。HTM......
  • c#实现对大量文章标签进行聚合分组
    比如已知是10001个章节,第个页面最多显示100个标签,则最终会有3层。以下代码是自己写出,由gpt将递归优化为while循环。voidMain(){inttotalChapterCount=10001;intmaxChapterCount=100;varchapters=newList<Chapter>();for(vari=0;i<tota......