案例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 = 'root@redhat.com' #发送方
receivers = ['bob@localhost', 'alice@126.com'] #收件方
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 root@redhat.com Mon Jul 30 09:36:44 2018
Return- Path: <root@redhat.com>
X- Original- To: bob@localhost.tedu.cn
Content- Type: text/plain; charset=“utf8”
From: root@localhost@room8pc16.tedu.cn
To: bob@localhost@room8pc16.tedu.cn
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协议如下
-
先登录到126.com邮箱,如图-1所示:
图-1 -
看到邮箱上面的功能栏中有一个“设置”的选项,单击该选项,然后选择下拉菜单的“POP3/SMTP/IMAP”,如图-2所示:
图-2 -
如图-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 = 'zhangzhigang79@126.com' #收件人邮箱账号
mail_pwd = getpass() #获取密码
#邮件正文有三个参数:第一个为文本内容,第二个设置文本格式plain,第三个utf-8设置编码保证多语言兼容性
message = MIMEText('Python邮件发送测试\n', 'plain', 'utf8')
#发送者信息
message['From'] = Header('zhangzhigang79@126.com', 'utf8')
#接收者信息
message['To'] = Header('zhangzhigang79@126.com', 'utf8')
#主题信息
message['Subject'] = Header('python 1802 mail test', 'utf8')
sender = 'zhangzhigang79@126.com' #发送方
receivers = ['zhangzhigang79@126.com'] #接收方
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
转载:https://blog.csdn.net/xie_qi_chao/article/details/104726377