zoukankan      html  css  js  c++  java
  • python实现发送邮件功能

    '''套接字是为特定的网络协议(例如TCP/IP,ICMP/IP,UDP/IP等),允许程序和接受并进行连接,要在python 中建立具有TCP和流套接字的简单服务器,需要使用socket模块,利用该模块包含的函数和类定义,可生成通过网络通信的程序,分为六步服务端的一些方法:
    1.    何为套接字
    内核中套接字是一层一层进行抽象展示的,把共性的东西抽取出来,这样对外提供的接口可以尽量的统一,Socket函数中的三个参数其实就是把抽象的socket具体化的条件,famil参数决定了图中所示的第二层通信域,type决定了第三层的通信模式,protocol
    决定了第四层真正的通信协议。
    首先了解这个内容是是在哪个层?是如何通信的
    http://www.cnblogs.com/wangcq/p/3520400.html,看了以方法,大体服务器和客户端就分为这几步
    1.创建对象
    2.将socket绑定在指定地址上,socket.bing(地址)
    3.第3步,绑定后,必须准备好套接字,对端口进行监听 socket.listen(backlog)
    4.socket的accept方法等待客户请求一个连接
    5.处理阶段
    6.传输结束,服务器调用socket的close方法以关闭连接
    客户端就为4个步骤:
    1.创建socket连接服务器
    2.使用socket的connect方法连接服务器 socket.connect((host,port))
    3.客户和服务器通过send和recv方法通信
    4.调用socket的close方法通信
    '''
    #encoding=utf-8
    import socket
    t = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    '''创建socket对象,格式socket.socket(family,type),family格式是AF_INET(对于IPV4协议的TCP和 UDP),type参数,SOCK_STREAM(流套接字,提供面向连接,可靠的数据服务,用于TCP)或者 SOCK_DGRAM(数据报文套接字提供无无面向连接,不可靠的数据服务,用于UDP),SOCK_RAW(raw套接字,较低层的协议)'''
    t.connect(('smtp.126.com', 25)) #建立连接
    print "start", t.recv(1024)  #使用recv方法通信,传输数据 
    t.send("helo 126.com
    ") #发送内容
    print "111", t.recv(1024) 
    t.send("auth login
    ")  #进行邮箱的登录
    print "222", t.recv(1024)  #打印在控制台
    t.send("dGVzdG1hbjE5ODA=
    ") #base64位方式编码,解码为:testman1980
    print "333", t.recv(1024)  #打印在控制台
    t.send("Zm9zdGVyd3UxOTc4
    ")#base64位方式编码,解码为:fosterwu1978
    print "444", t.recv(1024)  #打印在控制台
    t.send("mail from:<xxx1980@126.com>
    ") #发件人 这里不是很清楚同样在下方的邮件内容中,为何还要在一次
    print "555", t.recv(1024)  #打印在控制台
    t.send("rcpt to:<xxx@qq.com>
    ") #改变了收件人,但是不明白下方也有一个收件人,下方是否会收到消息,并且优先级是怎样的,明天实验来看
    print "666", t.recv(1024)  #打印在控制台
    t.send("data
    ")   #data的作用目前还没有发现,明天实践
    print "777", t.recv(1024)   #打印在控制台
    #发送邮件内容
    t.send("from:xxx@126.com
    ")  #optional,可伪造别人的发件记录
    t.send("to:xxx@qq.com
    ")   #optional,可发给任何人
    t.send("subject:hello!
    ")
    t.send("
    ")  #按照smtp协议要求,在标题后要发个空行
    t.send("mail test1111!
    ") #发送邮件内容
    t.send(".
    ")
    print "888", t.recv(1024)
     
     
  • 相关阅读:
    [HDU3094]A tree game
    专题总结(博弈论)
    [ZJOI2009]染色游戏
    [AtCoder3954]Painting Machines
    异或
    种树
    [PA2014]Fiolki
    简单题
    2、JUC--CAS算法
    1、JUC--volatile 关键字-内存可见性
  • 原文地址:https://www.cnblogs.com/chongyou/p/6028006.html
Copyright © 2011-2022 走看看