博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SMTP
阅读量:7254 次
发布时间:2019-06-29

本文共 2786 字,大约阅读时间需要 9 分钟。

邮件工作过程 建议看一下
百度百科

常见的电子邮件协议有以下几种:(简单邮件传输协议)、(邮局协议)、(Internet邮件访问协议)、HTTP、S/MIME。这几种协议都是由协议族定义的。

  • SMTP(Simple Mail Transfer Protocol):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。
  • POP(Post Office Protocol):目前的版本为,POP3是把邮件从电子邮箱中传输到本地计算机的协议。
  • IMAP(Internet Message Access Protocol):目前的版本为IMAP4,是POP3的一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看 到邮件的标题摘要,从邮件客户端软件就可以对服务器上的邮件和文件夹目录等进行操作。IMAP协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系 统的直接危害,同时相对节省了用户察看电子邮件的时间。除此之外,IMAP协议可以记忆用户在脱机状态下对邮件的操作(例如移动邮件,删除邮件等)在下一 次打开网络连接的时候会自动执行。
  • HTTP(S): 通过浏览器使用邮件服务时使用。

Python和SMTP

python 有一个smtplib模块和一个smtplib.SMTP类。

过程为:

  1. 连接服务器
  2. 登录(如果需要)
  3. 发出服务请求
  4. 退出

代码描述为

from smtplib import SMTPn = SMTP('smtp.yourdomain.com') ..... n.quit()

smtplib.SMTP类的一些常用方法

 
方法 描述
sendmail(from_addrto_addrsmsg[, mail_optionsrcpt_options]) 把msg从from 发送给to(列表或元组),ESMTP设置 (mail_options)和收件人设置 rcpt_options 为可选
quit() 关闭连接,然后退出
login(userpassword) 使用用户名和密码登录到SMTP服务器,只在有SMTP-AUTH时使用

 

 

 

 

sendmail(from_addrto_addrsmsg[, mail_optionsrcpt_options])  的所有参数都要遵循RFC 2822 ,即电子邮件地址必须要有正确的格式,消息体要有正确的前导头,前导头后面是两个回车和换行(\r\n)对。

 

看一下邮件内容包括哪些部分

每一个传统的E-mail都包含两个不同的部分:header和body。header 包含控制数据----例如:寄件人、目的地、信息的标题,而body包含信息本身。

下面是用到header的几种的几种情况:

  • From header 可以想用户表明邮件的发送人。
  • Reply-To header 可以设置一个回复的替换地址
  • Subject header 用于显示邮箱主题
  • Date header 可以用来按照到达时间分类邮箱
  • Message-ID 和In-Reply-To header 可以帮助某些邮件程序实现线索
  • MIME header 可以帮助邮件程序以合适的语言 格式来显示邮件,也可用来处理附件

代码示例

#!/usr/bin/pythonimport smtplibsender = 'from@fromdomain.com' receivers = ['to@todomain.com'] message = """From: From Person 
To: To Person
Subject: SMTP e-mail test This is a test e-mail message. """ try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print "Successfully sent email" except SMTPException: print "Error: unable to send email"

 

在Python中 产生邮件的模块在email模块里,在这里我们使用MIMEText 来编写一个使用126邮箱发送邮件的程序

#/usr/bin/python# -*- coding: utf-8 -*-#导入smtplib和MIMEText import smtplib from email.mime.text import MIMEText mailto = "XXXXXXX@gmail.com" #设置服务器DateTimeField用户名、口令以及邮箱的后缀 mail_host = "smtp.126.com" mail_user = "username" mail_pass = "password" mail_postfix = "126.com" ###################### def send_mail(to, sub, content): ''' to_list:发给谁 sub:主题 content:内容 send_mail("aaa@126.com","sub","content") ''' me = mail_user + "<" + mail_user + "@" + mail_postfix + ">" msg = MIMEText(content) msg['Subject'] = sub msg['From'] = me msg['To'] = to try: s = smtplib.SMTP() s.connect(mail_host) s.login(mail_user, mail_pass) s.sendmail(me, to, msg.as_string()) s.close() print '发送至' + to + '成功' except Exception, e: print str(e) print "发送至'+ to +'失败" if __name__ == '__main__': subject = raw_input('enter subject:> ') content = raw_input('enter content:> ') send_mail(mailto, subject, content)

 

转载于:https://www.cnblogs.com/linkong1081/articles/4074076.html

你可能感兴趣的文章
扬帆起航,再踏征程(四)
查看>>
Objective-C基础笔记(2)@property和@synthesize
查看>>
Android系统开发(1)——GCC编译器的编译和安装过程
查看>>
详解Python模块导入方法
查看>>
mysql一些权限相关操作,数据库可以远程连接或者说用IP地址可以访问
查看>>
关于c#(vs)dategridview控件继承不能修改的问题
查看>>
JAVA通过使用sort方法排序
查看>>
跨域CORS 、第二章
查看>>
一秒去除Win7快捷方式箭头
查看>>
Linux上Simplescalar/ARM的安装和运行文档
查看>>
中断是CPU的机制
查看>>
DoD and DoR
查看>>
golang 资源
查看>>
关于FileFOutputStream应用中的FileNotFoundException问题
查看>>
[产品设计] - 设计理念
查看>>
关于gitblit成功启动,但在阿里云外网地址无法访问的问题
查看>>
C++访问MySql
查看>>
1056. 组合数的和(15)
查看>>
Git基础教程(一)
查看>>
css解决select下拉表单option高度的办法
查看>>