SMTP发送邮件(Python)

SMTP发送邮件Python

SMTP协议

协议简介:

  • SMTP协议(simple mail transfer protocol) 简单邮件传输协议
  • 定义了邮件客户端与SMTP服务器之间、两台SMTP服务器之间的通信规则
  • 分为标准SMTP协议和扩展SMTP协议。扩展SMTP协议在标准SMTP协议上增加了邮件安全的认证 通信双方采用一问一答的命令/响应模式
  • 底层基于TCP/IP的应用层协议、默认网络监听号25

SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。使用SMTP协议发送的邮件需要开启SMTP协议,如没有,则需要开启。

Code

#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr

# set from=m18056xxxx186@163.com
# set smtp=smtp.163.com
# set smtp-auth-password=WHYSAxxxxXSMFY
# set smtp-auth=login
class MailSender:
    def __init__(self):
        self.__fromaddr = 'm18056xxxx86@163.com'
        self.__password = 'WHYSxxxxXSMFY'
        self._mail_host = 'smtp.163.com'
        self._recevier_list = '1018xxxx352@qq.com'
        self._subject = 'Message from Linux:'

    # @param | list   | recevier_list    | 收件人列表
    # @param | string | subject          | 邮件主题
    # @parma | string | text_message     | 邮件正文内容
    # @param | list   | attach_file_list | 附件列表
    def send(self,text_message):
        # 自定义处理邮件收发地址的显示内容
        def _format_addr(s):
            name, addr = parseaddr(s)
            # 将邮件的name转换成utf-8格式,addr如果是unicode,则转换utf-8输出,否则直接输出addr
            return formataddr(( \
                Header(name, 'utf-8').encode(), \
                addr.encode("utf-8") if isinstance(addr, str) else addr))
        #设置email信息
        #邮件内容设置
        message = MIMEText(text_message,'HTML','utf-8')
        # 邮件主题
        message['Subject'] = self._subject
        # 发送方信息
        message['From'] = (u'Message from Linux <%s>'%self.__fromaddr)
        # 接受方信息
        message['To'] = self._recevier_list
        #登录并发送邮件
        try:
            smtpObj = smtplib.SMTP()
            #连接到服务器
            smtpObj.connect('smtp.163.com', 25)
            #登录到服务器
            smtpObj.login(self.__fromaddr,self.__password)
            #发送
            smtpObj.sendmail(self.__fromaddr,self._recevier_list,message.as_string())
            #退出
            smtpObj.quit()
            print('success')
        except smtplib.SMTPException as e:
            print('error',e)
            #打印错误

if __name__ == '__main__':
    text_message='<p1>Model train completed!</p1><br><p>zhangsaisai</p><p>Auc...</p>'
    Mail = MailSender()
    Mail.send(text_message)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值