import smtplib
import getpass
from email.mime.text import MIMEText
from email.header import Header
class LocalMail:
def __init__(self, from_addr, to_addr, subject, content,charset=None ,smtp_server='localhost',):
'''from_addr 发件人地址,
to_addr收件人地址,
subject邮件标题,
content邮件内容,
charset=None 字符编码,
smtp_server邮件服务器地址,默认为localhost'''
self.from_addr = from_addr
self.to_addr = to_addr
self.subject = subject
self.content = content
self.charset = charset
self.smtp_server = smtp_server
def messages(self):
msg = MIMEText(self.content, _charset=self.charset)
msg['From'] = Header(self.from_addr, self.charset)
msg['To'] = Header(self.to_addr, self.charset)
msg['Subject'] = Header(self.subject, self.charset)
return msg.as_string()
def local_send(self):
smtp_obj = smtplib.SMTP()
smtp_obj.connect(self.smtp_server) # 默认邮件服务器为‘localhost’
# smtp_obj.set_debuglevel(1) #显示调试信息
smtp_obj.sendmail(self.from_addr, self.to_addr, self.messages())
class NetMail(LocalMail):
def __init__(self, user, password, smtp_server, from_addr, to_addr, subject, content, charset=None):
'''(user邮箱号,password邮箱登录密码)---自己的邮箱账户信息'''
super(NetMail, self).__init__(from_addr, to_addr, subject, content, charset)
self.user = user
self.password = password
self.smtp_server = smtp_server
def net_send(self):
smtp_obj = smtplib.SMTP()
smtp_obj.connect(self.smtp_server)
smtp_obj.login(self.user, self.password)
smtp_obj.sendmail(self.from_addr, self.to_addr, self.messages())
if __name__ == '__main__':
from_addr = input('From:')
to_addr = input('To:')
subject = input('Subject:')
print('content:')
content = str()
while True:
line = input('> ') + '\n'
if line.strip() == 'end':
break
content+=line
###############################################################
'''本地邮件'''
# mail = LocalMail(from_addr.strip(), to_addr.strip(), subject.strip(), content, 'utf8')
# mail.local_send()
#################################################################
'''网络邮件'''
'''!!!注意,针对不同的邮箱网站,使用的字符编码格式不一样,如:使用“新浪邮箱”charset=None,使用“163邮箱”使用charset=‘utf8‘'''
'''使用网络邮件,注意在相应的网络邮箱中开启smtp服务'''
user = input('user:')
password = getpass.getpass()
smtp_server = 'smtp.sina.com'
mail = NetMail(user,password,smtp_server,from_addr,to_addr,subject,content)
mail.net_send()