Python_MAIL发送功能

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值