python收发邮件

模块介绍

  • email.utils.parseaddr(address)
    • Parse address – which should be the value of some address-containing field such as To or Cc – into its constituent realname and email address parts. Returns a tuple of that information, unless the parse fails, in which case a 2-tuple of (”, ”) is returned
    • example

      from email.utils import parseaddr, formataddr
      def cc(s):
      return parseaddr(s)
      s='管理员 <888888@qq.com>'
      print cc(s)
      print cc(s)[0]
      print type(cc(s)[0].decode('utf-8'))
      print type(cc(s)[0])
      输出结果:
      ('\xe7\xae\xa1\xe7\x90\x86\xe5\x91\x98', '888888@qq.com')
      管理员
      <type 'unicode'>
      <type 'str'>
  • email.utils.formataddr(pair)
    • The inverse of parseaddr(), this takes a 2-tuple of the form (realname, email_address) and returns the string value suitable for a To or Cc header. If the first element of pair is false, then the second element is returned unmodified
    • example

      from email.utils import parseaddr, formataddr
      def cc(s):
      name,addr=parseaddr(s)
      return formataddr((name,addr))
      s='管理员 <888888@qq.com>'
      print cc(s)
      print type(cc(s))
      输出结果
      管理员 <888888@qq.com>
      <type 'str'>

发送纯文本

#将默认的ACII编码方式换为UTF-8
import sys  
reload(sys)  
sys.setdefaultencoding('utf8')   

#加载模块
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib

#格式化邮件地址
def _format_addr(s):    
    name, addr = parseaddr(s)
    return formataddr((name.encode('utf-8'),addr.encode('utf-8')))

# 输入Email地址和口令:
from_addr = "XXXXXX@qq.com" #发件用户名
password = "ypegcfhauiswbcgb" #口令
smtp_server = "smtp.qq.com"        #设置服务器
to_addr = ["XXXXXXXX@126.com"]  #收件用户名

msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')   #正文
msg['From'] = _format_addr(u'某某<%s>' % from_addr) #传入的s需要为Unicode形式,显示发件人
msg['To'] = _format_addr(u'某某<%s>' % to_addr)
msg['Subject'] = Header('休息啦', 'utf-8').encode() #主题 help(Header.encode)

server = smtplib.SMTP_SSL(smtp_server, 465) # SMTP 非SSL协议默认端口是25,SSL协议端口为465或587
server.set_debuglevel(1)                 # 打印出和SMTP服务器交互的所有信息
server.login(from_addr ,password)       # 登录,参数分别为发件邮箱和口令
server.sendmail(from_addr ,to_addr, msg.as_string()) #发送,参数为发件邮箱,收件邮箱,正文
server.quit()

参考链接

https://docs.python.org/2/library/email.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值