python邮件发送哪个好_python发邮件(一)

复习模块

7e8fd71d1742

如果我们要发送邮件,就需要用到smtplib模块的以下方法:

1、import smtplib       #引入smtplib模块

2、server = smtplib.SMTP()     #server为变量,通过SMTP指定一个服务器,这样才能把邮件送到另一个服务器,SMTP为类

3、server.connect(host, port)  #connect指定服务器,host指定连接的邮箱服务器,可以指定服务器的域名,搜索“xx邮箱服务器地址”,就可以找到,port是端口,SMTP默认端口为25,常用:QQ邮箱若有_SSL加密,端口为465

4、server.login(username, password)   #login是登陆的意思,参数为登陆的邮箱(也为发件的邮箱),和授权码(邮箱设置SMTP会显示)

5、server.sendmail(from_addr, to_addr, msg.as_string())  #sendmail为发送邮件,from_addr = username 发件人,to_addr为收件人,msg为发送的内容,  .as_string()是将发送的信息变为字符串类型

6、server.quit()    #quit为退出服务器

7e8fd71d1742

邮件内容 要用到email模块:

email 模块:也就是用来写邮件内容的模块。这个内容可以是纯文本、HTML内容、图片、附件等多种形式。

7e8fd71d1742

每种形式对应的导入方式:

from email.mime.text import MIMEText   # MIMEText(msg,type,chartset) 三个参数:文本内容,文本类型和文本编码。

from email.mime.image import MIMEImage

from email.mime.multipart import MIMEMultipart

el:

import smtplib

from email.mime.text import MIMEText

#引用模块smtplib,email

username = '49*******@qq.com'

password = input('请输入授权码')

from_addr = username

to_addrs = '*********@qq.com'

msg = MIMEText('第一波看看成不成功~哈哈哈哈','plain','utf-8')

#定义变量

server = smtplib.SMTP()

#如果端口是用SSL加密,server = smtplib.SMTP_SSL()。其中server是变量名

server.connect('smtp.qq.com',25)

#如果出现编码错误UnicodeDecodeError,你可以这样写:server.connect('smtp.qq.com', 465,'utf-8')

server.login(username, password)

#登录邮箱,输入账号、授权码

server.sendmail(from_addr, to_addrs, msg.as_string())

#发送邮件,发件人=登录邮箱,收件人,内容

server.quit()

#退出服务器

报错及解决:

1.ValueError: server_hostname cannot be an empty string or start with a leading dot.

# 改动这句代码

server = smtplib.SMTP_SSL()

# 在括号内加入host参数

server = smtplib.SMTP_SSL(smtp_server)

2.smtplib.SMTPException: No suitable authentication method found

解决方案是:在登录(login)之前调用starttls()方法就可以了。也就是在代码中加入这样一行:

server.starttls()

增加邮件头:

from email.header import Header  #从email包引入Header()方法。Header()是用来构建邮件头的。

msg['From'] = Header(from_addr)#发件人邮箱地址

msg['To'] = Header(to_addr)#收件人邮箱地址

msg['Subject'] = Header('python test') #主题python test

el:

import smtplib

from email.mime.text import MIMEText

from email.header import Header

#引用模块

username = '4*********0@qq.com'

password = input('请输入授权码')

from_addr = username

to_addrs = '********@qq.com'

text = '''哈哈 研究了半天终于会用python发邮件了~开心QVQ

继续学~越来越感兴趣了~

来个经典名言:

好好学,学到了都是你的

溜了溜了~'''

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

#定义变量

msg['From'] = Header('JinAncan')

msg['To'] = Header('A')

msg['Subject'] = Header('小试牛刀')

#邮件头信息

server = smtplib.SMTP()

#如果端口是用SSL加密,server = smtplib.SMTP_SSL()。其中server是变量名

server.connect('smtp.qq.com',25)

#如果出现编码错误UnicodeDecodeError,你可以这样写:server.connect('smtp.qq.com', 465,'utf-8')

server.login(username, password)

#登录邮箱,输入账号、授权码

server.sendmail(from_addr, to_addrs, msg.as_string())

#发送邮件,发件人=登录邮箱,收件人,内容

server.quit()

#退出服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSL Kafka经纪人从Kafka Mirror Maker迁移到Brooklin的挑战

问题 从卡夫卡镜子制造商转移到布鲁克林有我在这里所写的优势。 但是,进行这种迁移并不容易,因为它本来应该如此。 我面临的主要挑战是:在消费者Kafka经纪人和Brooklin之间建立SSL连接 解 SSL问题 事实证明,这个问题比我预期的要…

mysql移动数据的语句是_mysql基本语句

MySQL关系型数据库RDS中的老大哥,增删改查是MySQL入门的基础增删改查语句增删改查的语句命令为增:insert删:delete改:update查:SELECT或者show库操作创建数据库:create database shujukuba;创建带字符集的数…

jetty嵌入式容器_嵌入式Jetty和Apache CXF:借助Spring Security来保护REST服务

jetty嵌入式容器最近,我遇到了一个非常有趣的问题,我认为这只需要几分钟就可以解决:在Linux中使用Spring Security (当前稳定版本3.2.5 )保护Apache CXF (当前版本3.0.1 )/ JAX-RS REST服务。在…

python逻辑运算符的使用_总结Python中逻辑运算符的使用

下表列出了所有python语言支持的逻辑运算符。假设变量a持有10和变量b持有20,则:示例:试试下面的例子就明白了所有的python编程语言提供了逻辑运算符:#!/usr/bin/pythona 10b 20c 0if ( a and b ):print "line 1 - a and b are true&q…

如何使用用户数据脚本在EC2实例上安装Apache Web Server

你好朋友, 在本教程中,我们将看到如何使用用户数据脚本在EC2实例上安装Apache Web Server。 在我以前的教程之一中,我已经解释了如何使用AWS控制台启动EC2实例。如果您还没有完成该操作,我建议您先进行一下操作。 首先&#xf…

java 常量接口_java接口定义常量研究

背景和同事讨论到,在接口中定义常量的问题,引发了争论,即,假如在接口中定义变量,是否需要用static来限定的问题,或者说用static和不用static会有什么区别。引论package spring.interfaceTest;public interf…

spring 多租户_使用Spring Security的多租户应用程序的无状态会话

spring 多租户从前, 我发表了一篇文章,解释了构建无状态会话的原理 。 巧合的是,我们再次为多租户应用程序执行同一任务。 这次,我们将解决方案集成到Spring Security框架中,而不是自己构建身份验证机制。 本文将解释…

java api 1.6 下载_Java JDK API

JDKJavaDevelopmentKit是SunMicrosystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。JDK是整个Java的核心,包括了Java运行环境。相关软件软件大小版本说明下载地址jdk(Java Development Kit)是Sun Microsystems针对java开…

Java / Cloud:如何快速创建支持Kubernetes的REST微服务

可以肯定地说,如今微服务与云的结合风靡一时。 微服务的开发比以往任何时候都多,从而导致应用程序部署数量增加。 在过去的十年中,开发了诸如Docker和Kubernetes之类的容器化和编排工具,从而使微服务模式真正易于采用。 本文将教…

java考试安徽工业大学_2011~2012《Java语言程序设计》试卷A及答案(安徽工业大学)...

《2011~2012《Java语言程序设计》试卷A及答案(安徽工业大学)》由会员分享,可在线阅读,更多相关《2011~2012《Java语言程序设计》试卷A及答案(安徽工业大学)(6页珍藏版)》请在人人文库网上搜索。1、装 订 线 安 徽 工 业 大 学 试 题 纸(一)20112012学年第…

jsr303自定义验证_JSR 310新日期/时间API的自定义JSR 303 Bean验证约束

jsr303自定义验证借助JSR 310,Java 8终于为我们带来了不错的日期和时间API。 对于仍在使用Java 7的那些人(就像我目前在我的当前项目中一样),有很好的反向移植,请访问www.threeten.org了解更多详细信息。 但是&#xf…

java spring注入 静态方法_JAVA静态方法中如何使用spring@Value进行注入的成员变量...

背景:一个旧项目原本集成有spring-session,现需要临时添加缓存的操作,需要复用spring-session中的一些缓存配置。实现方法:一、类上添加注解Component二、定义静态成员变量private static String redisUrl;private static String …

使用Testcontainers和PostgreSQL,MySQL或MariaDB的Spring Boot测试

Testcontainers是一个Java库,可轻松将Docker容器集成到JUnit测试中。 在Containerized World中 ,将测试配置与嵌入式数据库和服务复杂化几乎没有意义。 而是使用在Docker中运行您的服务,并让Testcontainers为您管理此服务。 在此博客文章中&…

使用Spring Boot和Project Reactor处理SQS消息-第2部分

这是我关于使用Spring Boot和Project Reactor有效处理SQS消息的博客文章的后续文章 我在第一部分中列出了一些方法上的差距。 1.处理SQS客户端调用中的失败 2.该方法一次只能处理来自SQS的一条消息,如何并行化 3.它不处理错误,管道中的任何错误都会中…

java爬虫jsoup_Java爬虫之利用Jsoup自制简单的搜索引擎

内容导读在上述代码中,url为输入词条(暂时仅限于英文),进入while循环可一直搜索,当输入为’exit’时退出。contentText为该词条的百度百科简介的网页形式,通过正则表达式将其中的文字提取出来。代码虽然简洁,但是功能还…

shader weaver_具有自定义汇编程序,Weaver和运行时的可插拔知识

shader weaver作为贝叶斯工作的一部分,我对Kie进行了很多重构,使其具有清晰的扩展点。 我想确保可以完成贝叶斯系统的所有工作部件,而无需在现有内核中添加任何代码。 因此,现在每种知识类型都可以拥有自己的包,汇编器…

matplotlib的默认字体_浅谈matplotlib默认字体设置探索

控制默认字体的设置根据官方文档https://matplotlib.org/tutorials/text/text_props.html#default-font可知:The base default font is controlled by a set of rcParams默认字体是由一组rcParams控制的。rcParamusage‘font.family"List of either names of f…

如何使用Apache Camel,Quarkus和GraalVM快速运行100个骆驼

今天,我继续在youtube上练习,并录制了10分钟的视频,介绍了如何创建一个新的Camel and Quarkus项目,该项目包括Rest和HTTP服务以及开箱即用的健康检查和指标。 然后比较以JVM模式运行示例与使用GraalVM编译的本机内存的使用情况。…

java空心菱形_java 空心菱形

分为两部分,先打印前四行,再打印后三行,int n 4;    //设初始值为4for(int i0;ifor(int j0;jSystem.out.print(" ");}for(int k0;kif(k0||k2*i) {    //打印前四行的*,中间部分输出空格System.out.print(&quo…

java接口版本控制_为什么要在Java中控制类和接口的可见性

java接口版本控制维护是软件开发的重要方面之一,并且经验证明,保持较低组件可视性的软件比暴露更多组件的软件更易于维护。 您不会在一开始就意识到它,但是在重新设计应用程序时会严重错过它。 由于保持向后兼容性是许多应用程序的“必须具备…