学习-email实现 by Python3

学习资料:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432005226355aadb8d4b2f3f42f6b1d6f2c5bd8d5263000

    #coding:utf-8
    #!/usr/bin/env python3
    import smtplib
    from email import encoders
    from email.mime.text import MIMEText
    from email.header import Header
    from email.utils import parseaddr, formataddr
    
    def _format_addr(s):
        """编写了一个函数来格式化一个邮件地址。
        不能简单地传入name <addr@example.com>,
        因为如果包含中文,需要通过Header对象进行编码。
        """
        name, addr = parseaddr(s)
        return formataddr((Header(name, 'utf-8').encode(), addr))
    
    from_addr = input('from:')
    password = input('password:') #这里的密钥不是邮箱密码
    smtp_server = 'smtp.126.com'
    to_addr = input('to:')
    
    #不同的信息类型对应不同的格式,plain或html
    # msg = MIMEText('hello你好, send by python3... ', 'plain', 'utf-8')
    msg = MIMEText('<html><body><h3>Hello</h3>' +
        '<p>send by <a href="http://www.python.org">Python</a>...</p>' +
        '</body></html>', 'html', 'utf-8')
    
    msg['From'] = _format_addr('Python lover <%s>' % from_addr)
    msg['To'] = _format_addr('管理员 <%s>' % to_addr)
    msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()
    
    server = smtplib.SMTP(smtp_server, 25) #SMTP端口是25
    server.set_debuglevel(1)
    server.login(from_addr, password)
    server.sendmail(from_addr, [to_addr], msg.as_string())
    server.quit()

注意事项:
1,邮箱必须手动开通POP或SMTP功能,即通过第三方软件登陆访问SMTP服务器
2,发送信息需要补充From,To,Subject,不然会被拒绝。
3,

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python实现通讯录功能,通常会使用类和对象的概念来模拟真实的联系人数据存储和管理。以下是一个简单的示例,展示如何创建一个通讯录应用,包含联系人类(Person)和一个管理这些联系人的主类(AddressBook): ```python class Person: def __init__(self, name, phone, email): self.name = name self.phone = phone self.email = email def display_info(self): print(f"Name: {self.name}, Phone: {self.phone}, Email: {self.email}") class AddressBook: def __init__(self): self.contacts = [] def add_contact(self, person): self.contacts.append(person) def search_by_name(self, name): for contact in self.contacts: if contact.name == name: return contact return None def display_contacts(self): for contact in self.contacts: contact.display_info() # 示例用法 address_book = AddressBook() address_book.add_contact(Person("Alice", "1234567890", "alice@example.com")) address_book.add_contact(Person("Bob", "9876543210", "bob@example.com")) contact = address_book.search_by_name("Alice") if contact: contact.display_info() address_book.display_contacts() ``` 在这个例子中,`Person`类代表一个联系人,有姓名、电话和邮箱属性。`AddressBook`类则用于存储和操作这些联系人,包括添加联系人、根据名字搜索和显示全部联系人信息。 相关问题--: 1. 如何在Python中删除通讯录中的某个联系人? 2. 如何实现一个查找联系人按邮箱的功能? 3. 如何扩展这个通讯录应用,使其支持存储更多联系人详细信息,如地址等?

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值