《云计算全栈》-python篇:邮件编程-通过本机发送邮件、通过互联网服务器发送邮件

案例1:通过本机发送邮件
案例2:通过互联网服务器发送邮件
1 案例1:通过本机发送邮件
1.1 问题

编写一个send_mail.py脚本,实现以下功能:

创建bob和alice帐户
编写发送邮件件程序,发件人为root,收件人是本机的bob和alice帐户

1.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:创建bob和alice帐户

[root@ localhost day12]# ls /home/
Student  zabbix  zhangsan
[root@localhost day12]# useradd bob
[root@localhost day12]# useradd alice
[root@localhost day12]# ls /home/
alice  bob  Student  zabbix  zhangsan

步骤二:编写发送邮件件程序,发件人为root,收件人是本机的bob和alice帐户

[root@ localhost day12]# vim send_mail.py
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#邮件正文有三个参数:第一个为文本内容,第二个设置文本格式plain,第三个utf-8设置编码保证多语言兼容性
message = MIMEText('Python邮件发送测试\n', 'plain', 'utf8')    
标准邮件需要三个头部信息: From, To, 和 Subject
#发送者信息
message['From'] = Header('root@localhost', 'utf8')    
#接收者信息
message['To'] = Header('bob@localhost', 'utf8')
#主题信息
message['Subject'] = Header('mail test', 'utf8')
sender = '[email protected]'        #发送方
receivers = ['bob@localhost', '[email protected]']    #收件方
smtp_obj = smtplib.SMTP('localhost')    #用localhost发邮件
# smtplib负责发送邮件
smtp_obj.sendmail(sender, receivers, message.as_string())

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。

Python SMTP 对象使用 sendmail 方法发送邮件:

smtp_obj.sendmail(sender, receivers, message.as_string())

参数说明:

sender: 邮件发送者地址。

receivers: 字符串列表,邮件发送地址。

message.as_string(): 发送消息 ,str模式

由于可以一次发给多个人,所以recives传入一个列表,邮件正文是一个str,as_string()把MIMEText对象变成str。

步骤三:测试脚本执行

[root@ localhost day12]# python3 send_mail.py
[root@ localhost day12]# mail –u bob
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
“/var/mail/bob”: 1 message 1 new
>N  1 =?utf8?q?root=4Oloca  Mon Jul 30 09:36  18?663  “”
& 1
From [email protected] Mon Jul 30 09:36:44 2018
Return- Path: <[email protected]>
X- Original- To: [email protected]
Content- Type: text/plain; charset=“utf8”
From: root@[email protected]
To: bob@[email protected]
Subject: mail test
Date: Mon, 30 Jul 2018 09:36:44 +0800 (CST)
Status: R
Python邮件发送测试
&
2 案例2:通过互联网服务器发送邮件

2.1 问题

编写一个mail_client.py脚本,实现以下功能:

通过自己互联网注册的邮箱,为其他同学互联网邮箱发邮件

2.2 方案

导入sys模块,用sys.argv方法获取get_web函数实参,让用户在命令行上提供http://www.tedu.cn和/tmp/tedu.html两个参数,调用get_web函数实现如下功能:

1)导入urllib模块,使用urllib模块的urlopen函数打开url(即网址),赋值给html

2)以写方式打开/tmp/tedu.html文件

3)以循环方式:

读html获取的数据,保存到data

将data写入/tmp/tedu.html

4)关闭html
2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:环境准备

使用SMTP协议发送的邮件,需要先查看您的发件人邮箱是否有开启SMTP协议,如没有需要开启,测试使用的是126.com的邮箱作为发信人邮箱,开启SMTP协议如下

  1. 先登录到126.com邮箱,如图-1所示:
    在这里插入图片描述
    图-1

  2. 看到邮箱上面的功能栏中有一个“设置”的选项,单击该选项,然后选择下拉菜单的“POP3/SMTP/IMAP”,如图-2所示:
    在这里插入图片描述
    图-2

  3. 如图-3所示,上面红框的两个必须勾选上,如没有勾选,要选择开启就可以勾选上了:
    在这里插入图片描述
    图-3

4.页面向下可以可以看到下图-4红框里是:SMTP服务器是:smtp.126.com:
在这里插入图片描述
图-4

步骤二:编写脚本

[root@ localhost day12]# vim mail_client.py
#!/usr/bin/env python3
import smtplib
from getpass import getpass
from email.mime.text import MIMEText
from email.header import Header
mail_host = 'smtp.126.com'        #发件人邮箱账号
mail_user = '[email protected]'        #收件人邮箱账号
mail_pwd = getpass()        #获取密码
#邮件正文有三个参数:第一个为文本内容,第二个设置文本格式plain,第三个utf-8设置编码保证多语言兼容性
message = MIMEText('Python邮件发送测试\n', 'plain', 'utf8')
#发送者信息
message['From'] = Header('[email protected]', 'utf8')
#接收者信息
message['To'] = Header('[email protected]', 'utf8')
#主题信息
message['Subject'] = Header('python 1802 mail test', 'utf8')
sender = '[email protected]'        #发送方
receivers = ['[email protected]']        #接收方
smtp_obj = smtplib.SMTP()        #创建SMTP对象
smtp_obj.connect(mail_host)    #将SMTP对象与发送人邮件简历连接建立连接
smtp_obj.login(mail_user, mail_pwd)        #登录用户名密码
# SMTP 对象使用 sendmail 方法发送邮件
smtp_obj.sendmail(sender, receivers, message.as_string())

步骤三:测试脚本执行

[root@ localhost day12]# python3 mail_client.py
Password:

如果发送成功,结果显示如图-5所示:
在这里插入图片描述
图-5

发布了275 篇原创文章 · 获赞 46 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xie_qi_chao/article/details/104726377