Python中的SMTP功能
python创建SMTP对象语法如下
import smtplib
smtpObj = smtplib.SMTP([host [,port [,local_hostname]]])
参数说明
1.host:SMTP 服务器主机。你可以指定主机ip地址或域名如:runoob.com.
2.port:如果你提供了host参数,你需要指定SMTP服务使用的端口号,一般情况下SMTP 端口为25
3.local_hostname: 如果SMTP在你的本机,你需要指定服务地址为localhost即可
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
参数说明
1.from_addr:邮件发送者地址。
2.to_addrs:字符串列表,邮件发送地址。
3.msg:发送消息
二,下面提供一段实现了的代码
#-*- coding: utf-8 -*-
from __future__ import unicode_literals
import smtplib
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
class SMTPWrapper(object):
'''SMTP邮箱发送包装类'''
def __init__(self, server='localhost', port=25, username=None, password=None, debug=False):
self.server = server
self.port = port
self.username = username
self.password = password
self.debug = debug
self.from_msg = 'from'
self.to_msg = 'to'
def send(self, receiver, message='Default Message', subject='Default Title',
html=False, from_msg=None, to_msg=None):
'''发送'''
def _format_addr(_addr):
name, addr = parseaddr(_addr)
return formataddr(
(
Header(name, 'utf-8').encode(),
addr
)
)
msg_type = 'html' if html else 'plain'
msg = MIMEText(message, msg_type, 'utf-8')
msg['Subject'] = Header(subject,'utf-8').encode()
_from_msg = self.from_msg if from_msg is None else from_msg
msg['From'] = _format_addr('{from_msg}<{sender}>'.format(from_msg=from_msg, sender=self.username))
_to_msg = self.to_msg if to_msg is None else to_msg
msg['To'] = _format_addr('{to_msg}<{receiver}>'.format(to_msg=to_msg, receiver=receiver))
srv = smtplib.SMTP(self.server, self.port)
srv.set_debuglevel(self.debug)
srv.login(self.username, self.password)
srv.sendmail(self.username, [receiver], msg.as_string())
srv.quit()
if __name__ == '__main__':
demo = SMTPWrapper(
server='smtp.163.com', #SMTP服务器
username='******@163.com', #SMTP账号
password='*****',
debug=True
)
msg = 'hello, smtplib of python ! <br/> 中文测试' #正文
demo.send(
'*******@qq.com', #收信人
message = ''.join([
'<div>',
'<strong>',
msg,
'</strong>',
'</div>'
]),
html = True #指示邮件内容为HTML
)
欢迎使用CSDN,进入[夏枯草]的博客园,有技术上的问题请加QQ:307440205