python3 邮件

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()

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值