今天学到了如何使用Python的smtplib库发送邮件,中间也是遇到了各种各样的错误和困难,还好都一一的解决了。下面来谈一谈我的这段经历。
<>强配置你的邮箱强>
为什么要配置邮箱呢?具体要配置什么呢?
因为我们申请的一些免费邮箱都是默认不开启smtp/流行协议的。
SMTP是发邮件使用到的计算机网络中应用层协议中的一个,而流行音乐则是收邮件时使用到的计算机网络中的应用层协议的其中一个。这都是理论性的知识了,上过计算机网络这门课的想必都知道,就不多说了。
配置就是要开启这项服务。否则我们就不能实现用Python代码来控制发送和接收邮件了。
我们在配置完成之后,系统会提示给我们一个邮箱客户端的授权码。作用就是我们登陆的时候替代原来的登陆密码。大家一定要完善保存咯。我这里采用的是163的邮箱,所以是可以自己设置这个授权码的。
引用>
<强>使用代码发邮件强>
还是按照,先看代码再研究的策略。如下:
utf - 8编码: 进口smtplib 从email.mime。文本导入MIMEText 从电子邮件。头导入头 ”“” 请确保自己的邮箱的smtp协议开启,都则会出现认证的错误的,如ssh等 ”“” 发送方=" 1564086 xxxx@163.com " #收件的人,可以是多个 接收器=(“102170 xxxx@qq.com”) 第#三个参数:一个为纯文本,第二个普通设置文本格式,第三个为编码格式 消息=MIMEText(“这里是发送的邮件的主要的内容.Pure文本!”,“普通”,“utf - 8”) 消息['从']=头('来自马克”,“utf - 8”) 消息[',']=头(“测试标题”,“utf - 8”) 主题='哈哈哈哈哈哈,这是邮件的主题” 消息(“主题”)=头(主题、“utf - 8”) 试一试: smtpObj=smtplib.SMTP () smtpObj.connect (' smtp.163.com ', 25) smtpObj.login(发送方,'你的客户端授权码”) smtpObj.sendmail(发送方、接收方、message.as_string ()) smtpObj.quit () 打印的邮件已成功发送了” 除了smtplib.SMTPException, e: 打印e.message测试的结果:
D: \ \ Python2 \ python软件。exe E://Python/MyTestSet/邮件/PureText代码。py
邮件已成功发送了过程完成退出代码0
引用>
确实是成功发送了的。
<强>代码探查强>
下面就来深入的研究一下发送邮件实现的流程吧。我们注意到了,最最主要的是下面的这样一段代码。
smtpObj=smtplib.SMTP () smtpObj.connect (' smtp.163.com ', 25) smtpObj.login(发送方,'你的客户端授权码”) smtpObj.sendmail(发送者、接收者、\ message.as_string () smtpObj.quit ()不难看出,主要是经历了下面的这些流程:
<李>获得SMTP服务李> <李>连接服务器李> <李>模拟客户端登陆李> <李>实现发送邮件李> <李>退出登录李>
其中核心的也就是客户端登陆和发送邮件的两个步骤。模拟登陆的时候需要注意的就是使用你自己的授权码就行了,没什么难度。而发送邮件的时候需要注意一下参数。发件人是一个,而收件人是一个列表,里面可以有很多个收件人(这样可以借助这个列表实现邮件的群发)。
其他需要注意的也就是使用MIME类型的数据,和使用utf - 8编码就行了。属于非智力相关的内容,所以不用太在意。会用就可以了。
这样看来,发个邮件什么的也不是很难嘛。(^ __ ^)嘻嘻……
<强>错误总结强>
500530等5开头的错误,大致为什么ssh异常啊什么的。有点网络常识的都知道,5开头的错误代码一般都是服务器内部的错误,所以这基本上可以判断出我们的代码其实没有出错。我们主要的排错方向应该是服务器端了(当然了,凡是没有任何的绝对,但这种情况出现的概率确实是很小的)。这时,我们要检查一下自己的邮箱的SMTP/流行服务开启了没有啊等等
授权码没有写或者填写成了自己的邮箱之前的密码,错误提示一般都是认证相关的。这一点属于低级错误了。因为在配置完自己的SMTP/流行服务之后,系统会发还一个短信提示,告知用户要使用授权码替代原密码登陆邮箱。所以使用你的授权码进行登录呗。
python模块smtplib实现纯文本邮件发送功能