要编写程序来发送和接收邮件,本质上就是:
-
编写MUA把邮件发到MTA;
-
编写MUA从MDA上收邮件。
发邮件时,MUA和MTA使用的协议就是SMTP:Simple Mail Transfer Protocol,后面的MTA到另一个MTA也是用SMTP协议。
收邮件时,MUA和MDA使用的协议有两种:POP:Post Office Protocol,目前版本是3,俗称POP3;IMAP:Internet Message Access Protocol,目前版本是4,优点是不但能取邮件,还可以直接操作MDA上存储的邮件,比如从收件箱移到垃圾箱,等等。
在使用Python收发邮件前,请先准备好至少两个电子邮件,如xxx@163.com
,xxx@sina.com
,xxx@qq.com
等,注意两个邮箱不要用同一家邮件服务商
# -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText ''' 一些常用邮箱发件服务器及端口号 邮箱 发件服务器 非SSL协议端口 SSL协议端口 163 smtp.163.com 25 465/587 qq smtp.qq.com 25 465/587 ''' import time ''' # 设置发件服务器地址 # 设置发件服务器端口号。注意,这里有SSL和非SSL两种形式 # 设置发件邮箱,一定要自己注册的邮箱 # 设置发件邮箱的密码,等会登陆会用到 # 设置邮件接收人,可以是扣扣邮箱 ''' class sendEmail: # 设置邮件正文,这里是支持HTML的 def __init__(self,sender,receiver,pwd,info): self.host = 'smtp.163.com' self.port = 25 self.sender = sender self.pwd = pwd.strip() self.receiver = receiver self.info=info self.time_info = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) self.body = '<h1>头条房产</h1><p>在' + self.time_info + '页面报错</p>' def start(self): msg = MIMEText(self.body, 'html') # 设置正文为符合邮件格式的HTML内容 msg['subject'] = self.info # 设置邮件标题 msg['from'] = self.sender # 设置发送人 msg['to'] = self.receiver # 设置接收人 try: s = smtplib.SMTP(self.host, self.port) # 注意!如果是使用SSL端口,这里就要改为SMTP_SSL s.login(self.sender, self.pwd) # 登陆邮箱 s.sendmail(self.sender, self.receiver, msg.as_string()) # 发送邮件! print 'Done' except smtplib.SMTPException, e: print(e)
import sendEmail sendEmail.sendEmail('xxxxx@163.com', 'xxxxx@qq.com', 'xxxxx','发送信息').start()