这段时间在慢慢学习Python,正巧有个与Python相关的活,借此机会好练练手

为什么要学习Python呢,作为一个前端,为什么不学习nodejs,而选择学习Python,对呀,其实我也这么问自己,但是,有什么影响嘛,爱学啥学啥,我不觉得啥该学不该学。学了如果不用,也慢慢会忘。扯远了,其实我是比较喜欢Python的语法和它的严格缩进,学了一段时间后,发现还是有和es6/es7相似的方法。

SMTP

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本、HTML 邮件。其中有两个用到的模块,email负责邮件构造,smtplib发送邮件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
'''using python send gmail'''
# !/usr/bin/env python3
# -*- coding: utf-8 -*-

import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import parseaddr, formataddr
class SendGmail(object):
'''send mail via gmail'''
def __init__(self):
self._from_addr = input('From:')
self._password = input('Password:')
self._to_addr = input('To:')
self._smtp_server = smtplib.SMTP('smtp.gmail.com', 587)
self._msg = MIMEMultipart('alternative')
self._msg['From'] = self._format_addrs('<%s>' % self._from_addr) # 发件人
self._msg['To'] = self._format_addrs('<%s>' % self._to_addr) # 收件人
subject = 'hello python'
self._msg['Subject'] = Header(subject, 'utf-8').encode() # 主题

def get_content(self, mail_tmp_path='mail.html'):
'''get mail content'''
page = mail_tmp_path
file = open(page, 'r', encoding='utf8')
content = file.read()
content = content.replace('<#send_name#>', self._from_addr)
content = content.replace('<#name#>', self._to_addr)
self._msg.attach(MIMEText(content, 'html', 'utf-8'))

def send_mail(self):
'''send mail'''
server = self._smtp_server
server.ehlo()
server.starttls()
server.login(self._from_addr, self._password)
server.sendmail(self._from_addr, [self._to_addr], self._msg.as_string())
print('success send to %s!' % self._to_addr)
server.quit()
@classmethod
def _replace_tmp(cls, string):
pass
@classmethod
def _format_addrs(cls, string):
'''format addr'''
name, addr = parseaddr(string)
return formataddr((Header(name, 'utf-8').encode(), addr))

if __name__ == '__main__':
MESSAGE = SendGmail()
MESSAGE.get_content()
MESSAGE.send_mail()