当前位置: 首页>>代码示例>>Python>>正文


Python Header.encode方法代码示例

本文整理汇总了Python中email.Header.Header.encode方法的典型用法代码示例。如果您正苦于以下问题:Python Header.encode方法的具体用法?Python Header.encode怎么用?Python Header.encode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在email.Header.Header的用法示例。


在下文中一共展示了Header.encode方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_japanese_codecs

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
    def test_japanese_codecs(self):
        eq = self.ndiffAssertEqual
        j = Charset("euc-jp")
        g = Charset("iso-8859-1")
        h = Header("Hello World!")
        jhello = '\xa5\xcf\xa5\xed\xa1\xbc\xa5\xef\xa1\xbc\xa5\xeb\xa5\xc9\xa1\xaa'
        ghello = 'Gr\xfc\xdf Gott!'
        h.append(jhello, j)
        h.append(ghello, g)
        # BAW: This used to -- and maybe should -- fold the two iso-8859-1
        # chunks into a single encoded word.  However it doesn't violate the
        # standard to have them as two encoded chunks and maybe it's
        # reasonable <wink> for each .append() call to result in a separate
        # encoded word.
        eq(h.encode(), """\
Hello World! =?iso-2022-jp?b?GyRCJU8lbSE8JW8hPCVrJUkhKhsoQg==?=
 =?iso-8859-1?q?Gr=FC=DF?= =?iso-8859-1?q?_Gott!?=""")
        eq(decode_header(h.encode()),
           [('Hello World!', None),
            ('\x1b$B%O%m!<%o!<%k%I!*\x1b(B', 'iso-2022-jp'),
            ('Gr\xfc\xdf Gott!', 'iso-8859-1')])
        long = 'test-ja \xa4\xd8\xc5\xea\xb9\xc6\xa4\xb5\xa4\xec\xa4\xbf\xa5\xe1\xa1\xbc\xa5\xeb\xa4\xcf\xbb\xca\xb2\xf1\xbc\xd4\xa4\xce\xbe\xb5\xc7\xa7\xa4\xf2\xc2\xd4\xa4\xc3\xa4\xc6\xa4\xa4\xa4\xde\xa4\xb9'
        h = Header(long, j, header_name="Subject")
        # test a very long header
        enc = h.encode()
        # TK: splitting point may differ by codec design and/or Header encoding
        eq(enc , """\
=?iso-2022-jp?b?dGVzdC1qYSAbJEIkWEVqOUYkNSRsJD8lYSE8JWskTztKGyhC?=
 =?iso-2022-jp?b?GyRCMnE8VCROPjVHJyRyQlQkQyRGJCQkXiQ5GyhC?=""")
        # TK: full decode comparison
        eq(h.__unicode__().encode('euc-jp'), long)
开发者ID:3rdandUrban-dev,项目名称:Nuxleus,代码行数:33,代码来源:test_email_codecs.py

示例2: forbid_multi_line_headers

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
def forbid_multi_line_headers(name, val, encoding):
    """Forbids multi-line headers, to prevent header injection."""
    encoding = encoding or settings.DEFAULT_CHARSET
    val = force_unicode(val)
    if '\n' in val or '\r' in val:
        raise BadHeaderError("Header values can't contain newlines (got %r for header %r)" % (val, name))
    try:
        val = val.encode('ascii')
    except UnicodeEncodeError:
        if name.lower() in ('to', 'from', 'cc'):
            result = []
            for nm, addr in getaddresses((val,)):
                nm = str(Header(nm.encode(encoding), encoding))
                try:
                    addr = addr.encode('ascii')
                except UnicodeEncodeError:  # IDN
                    addr = str(Header(addr.encode(encoding), encoding))
                result.append(formataddr((nm, addr)))
            val = ', '.join(result)
        else:
            val = Header(val.encode(encoding), encoding)
    else:
        if name.lower() == 'subject':
            val = Header(val)
    return name, val
开发者ID:32bitfloat,项目名称:intellij-community,代码行数:27,代码来源:message.py

示例3: encode_addresses

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
    def encode_addresses(addresses, header_name = None):
        """
        Unicode address headers are automatically encoded by
        email.Header, but not correctly. The correct way is to put the
        textual name inside quotes and the address inside brackets:

        To: "=?utf-8?b?encoded" <[email protected]>

        Each address in addrs may be a tuple of (name, address) or
        just an address. Returns a tuple of (header, addrlist)
        representing the encoded header text and the list of plain
        text addresses.
        """

        header = []
        addrs = []

        for addr in addresses:
            if isinstance(addr, tuple):
                (name, addr) = addr
                try:
                    name = name.encode('ascii')
                    header.append('%s <%s>' % (name, addr))
                except:
                    h = Header(name, charset = "utf-8", header_name = header_name)
                    header.append('"%s" <%s>' % (h.encode(), addr))
            else:
                header.append(addr)
            addrs.append(addr)

        return (", ".join(header), addrs)
开发者ID:dreibh,项目名称:planetlab-lxc-tests,代码行数:33,代码来源:sendmail.py

示例4: __setitem__

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
 def __setitem__(self, name, val):
     "Forbids multi-line headers, to prevent header injection."
     if "\n" in val or "\r" in val:
         raise BadHeaderError, "Header values can't contain newlines (got %r for header %r)" % (val, name)
     if name == "Subject":
         val = Header(val.encode(settings.MAIL_CHARSET, "replace"), settings.MAIL_CHARSET)
     MIMEText.__setitem__(self, name, val)
开发者ID:tactactad,项目名称:reiare,代码行数:9,代码来源:mail.py

示例5: add_header

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
 def add_header(self,key,value,immediate=False):
     """adds a header to the message. by default, headers will added when re-injecting the message back to postfix
     if you set immediate=True the message source will be replaced immediately. Only set this to true if a header must be
     visible to later plugins (eg. for spamassassin rules), otherwise, leave as False which is faster.
     """
     if immediate:
         val=unicode(value,errors='ignore')  # is ignore the right thing to do here?
         hdr=Header(val, header_name=key, continuation_ws=' ')
         hdrline="%s: %s\n"%(key,hdr.encode())
         src=hdrline+self.getSource()
         self.set_source(src)
     else:
         self.addheaders[key]=value
开发者ID:gryphius,项目名称:fuglu-travis-test,代码行数:15,代码来源:shared.py

示例6: buildmsgsource

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
def buildmsgsource(suspect):
    """Build the message source with fuglu headers prepended"""
    #we must prepend headers manually as we can't set a header order in email objects
    origmsgtxt=suspect.getSource()
    newheaders=""
    
    for key in suspect.addheaders:
        val=unicode(suspect.addheaders[key],errors='ignore')  # is ignore the right thing to do here?
        #self.logger.debug('Adding header %s : %s'%(key,val))
        hdr=Header(val, header_name=key, continuation_ws=' ')
        newheaders+="%s: %s\n"%(key,hdr.encode())
    
    modifiedtext=newheaders+origmsgtxt
    return modifiedtext
开发者ID:gryphius,项目名称:fuglu-travis-test,代码行数:16,代码来源:esmtpconnector.py

示例7: get_addr_line

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
    def get_addr_line(name, addr):
        '''Get the address line

:param str name: The display-name in the address.
:param str addr: The actual email address.
:returns: A correctly formatted mail header.
:rtype: str'''
        # --=mpj17=-- In Python 3 just using formataddr, sans the Header,
        #  will work. This method should be removed.
        unicodeName = to_unicode_or_bust(name)
        headerName = Header(unicodeName, UTF8)
        encodedName = headerName.encode()
        retval = formataddr((encodedName, addr))
        return retval
开发者ID:groupserver,项目名称:gs.profile.notify,代码行数:16,代码来源:sender.py

示例8: main

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
def main(args):
  msg1 = Message()
  msg1.set_charset('iso-2022-jp')
  msg1['From'] = Header(u'Yusuke Shinyama <[email protected]>', 'iso-2022-jp')
  msg1['To'] = Header(u'きょうから明日です <[email protected]>', 'iso-2022-jp')
  msg1['Subject'] = Header(u'ムーミン谷のみなさんへ', 'iso-2022-jp')
  msg1['Date'] = 'Thu, 31 Aug 2004 03:06:09 +0900'
  msg1.set_payload(u'その逆だ!'.encode('iso-2022-jp'), 'iso-2022-jp')
  fp = file(args.pop(0), 'wb')
  fp.write(msg1.as_string(0))
  fp.close()

  msg2 = MIMEMultipart()
  msg2.set_charset('utf-8')
  msg2['From'] = Header(u'えうすけ <[email protected]>', 'iso-2022-jp')
  msg2['To'] = Header(u'だれでも <[email protected]>', 'utf-8')
  msg2['Subject'] = Header(u'何を見てるんだい?', 'iso-2022-jp')
  msg2['Date'] = 'Thu, 29 Feb 2004 19:23:34 +0500'
  text1 = MIMEText(u'ああそうか、\nこれは夢なんだ。'.encode('utf-8'), 'plain', 'utf-8')
  text2 = MIMEText(u'<html><body>\n<strong>HEY!</strong>\n<p>do you wanna feel unconfortably energetic?\n</body></html>', 'html')
  h = Header(u'ふうばあ ばず', 'iso-2022-jp')
  text2.add_header('Content-Disposition', 'attachment', filename=h.encode())
  msg2.set_payload([text1, text2])
  fp = file(args.pop(0), 'wb')
  fp.write(msg2.as_string(0))
  fp.close()

  msg3 = MIMEMultipart()
  msg3['From'] = '=?iso-2022-jp?b?Gy?= \xff\xaa\x88'
  msg3['Subject'] = 'huh?'
  msg3['Date'] = 'Tue, 25 Nov 2008 01:00:09 +0900'
  parts = MIMEMultipart()
  parts.set_payload([MIMEText('part1'), MIMEText('part2')])
  msg4 = Message()
  msg4.set_charset('iso-2022-jp')
  msg4['From'] = Header(u'john doe <[email protected]>', 'iso-2022-jp')
  msg4['To'] = Header(u'どこだって? <[email protected]>', 'iso-2022-jp')
  msg4['Subject'] = Header(u'その先の日本へ', 'iso-2022-jp')
  msg4['Date'] = 'Sun, 31 Aug 2008 12:20:33 +0900'
  msg4.set_payload(u'ししかばう゛ー'.encode('iso-2022-jp'), 'iso-2022-jp')
  msg3.set_payload([parts, MIMEMessage(msg4)])
  fp = file(args.pop(0), 'wb')
  fp.write(msg3.as_string(0))
  fp.close()

  return
开发者ID:yasusii,项目名称:fooling,代码行数:48,代码来源:make_messages.py

示例9: _encodedHeader

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
    def _encodedHeader(value, encoding):
        """
        Given a value (or list of values) and an ecoding, return it
        encoded as per rfc2047 for use in a MIME message header.

        >>> from Products.listen.content.mailboxer_list import MailBoxerMailingList

        If the input can be converted to ascii, it will be, regardless
        of the encoding argument:

        >>> MailBoxerMailingList._encodedHeader('blah', 'utf8')
        'blah'

        If it can be encoded to the target encoding, it will be, and
        then encoded as per rfc2047:

        >>> input = u'\xbfhmm?'
        >>> MailBoxerMailingList._encodedHeader(input, 'utf8')
        '=?utf8?b?wr9obW0/?='
        >>> MailBoxerMailingList._encodedHeader(input.encode('utf8'), 'utf8')
        '=?utf8?b?wr9obW0/?='
        >>> raw = 'a string \345\276\267\345\233\275'
        >>> MailBoxerMailingList._encodedHeader(raw, 'utf8')
        '=?utf8?b?YSBzdHJpbmcg5b635Zu9?='

        All other cases will raise an exception. Typically this means
        a raw byte string in an incompatible encoding:

        >>> MailBoxerMailingList._encodedHeader(input.encode('latin1'), 'utf8')
        Traceback (most recent call last):
        ...
        UnicodeDecodeError: 'utf8' codec can't decode byte 0xbf in position 0: unexpected code byte
        """
        try:
            value = value.encode('ascii')
        except (UnicodeEncodeError, UnicodeDecodeError):
            try:
                value = Header(value.encode(encoding), encoding).encode()
            except UnicodeDecodeError:
                try:
                    value = Header(value, encoding).encode()
                except UnicodeDecodeError:
                    logger.error("Could not guess encoding of raw bytestring %r, there is probably a bug in the code that created this header." % value)
                    raise
        return value
开发者ID:socialplanning,项目名称:opencore-listen,代码行数:47,代码来源:mailboxer_list.py

示例10: forbid_multi_line_headers

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
def forbid_multi_line_headers(name, val, encoding):
    """Forbids multi-line headers, to prevent header injection."""
    encoding = encoding or "utf-8"
    val = force_unicode(val, encoding)
    if "\n" in val or "\r" in val:
        raise BadHeaderError("Header values can't contain newlines (got %r for header %r)" % (val, name))
    try:
        val = val.encode("ascii")
    except UnicodeEncodeError:
        if name.lower() in ("to", "from", "cc"):
            result = []
            for nm, addr in getaddresses((val,)):
                nm = str(Header(nm.encode(encoding), encoding))
                result.append(formataddr((nm, str(addr))))
            val = ", ".join(result)
        else:
            val = Header(val.encode(encoding), encoding)
    else:
        if name.lower() == "subject":
            val = Header(val)
    return name, val
开发者ID:wrighter,项目名称:tornado-utils,代码行数:23,代码来源:send_email.py

示例11: _process_utf8

# 需要导入模块: from email.Header import Header [as 别名]
# 或者: from email.Header.Header import encode [as 别名]
  def _process_utf8(self,kw):
      # sort out what encoding we're going to use
      encoding = kw.get('encoding',
                        self.getProperty('encoding',
                                         BaseMailTemplate.default_encoding))
      text = self.__class__.__bases__[1].__call__(self,**kw)
      # ZPT adds newline at the end, but it breaks backward compatibility.
      # So I remove it.
      if text and text[-1]=='\n':
        text = text[:-1]
      if not self.html() and isinstance(text, unicode):
          text = text.encode(encoding,'replace')
      # now turn the result into a MIMEText object
      msg = BaseMailTemplate.MIMEText(
          text.replace('\r',''),
          self.content_type.split('/')[1],
          encoding
          )
      # sort out what headers and addresses we're going to use
      headers = {}
      values = {}
      # headers from the headers property
      for header in getattr(self,'headers',()):
          name,value = header.split(':',1)
          headers[name]=value
      # headers from the headers parameter
      headers_param = kw.get('headers',{})
      headers.update(headers_param)
      # values and some specific headers
      for key,header in (('mfrom','From'),
                         ('mto','To'),
                         ('mcc','Cc'),
                         ('mbcc','Bcc'),
                         ('subject','Subject')):
          value = kw.get(key,
                         headers_param.get(header,
                                           getattr(self,
                                                   key,
                                                   headers.get(header))))
          if value is not None:
              values[key]=value

              # turn some sequences in coma-seperated strings
              if isinstance(value, (tuple, list)):
                  value = ', '.join(value)
              # make sure we have no unicode headers
              if isinstance(value,unicode):
                  value = value.encode(encoding)

              if key == 'subject':
                  try:
                      # Try to keep header non encoded
                      value = Header(value.encode("ascii"))
                  except UnicodeDecodeError:
                      value = Header(value, "UTF-8")

              else:
                  value_list = getaddresses([value])
                  dest_list = []
                  for name, email in value_list:
                      try:
                          name = Header(name.encode("ascii"))
                      except UnicodeDecodeError:
                          name = Header(name, "UTF-8")
                      dest_list.append(formataddr((name.encode(), email)))
                  value = ", ".join(dest_list)

              headers[header]=value
      # check required values have been supplied
      errors = []
      for param in ('mfrom','mto'):
          if not values.get(param):
              errors.append(param)
      if errors:
          raise TypeError(
              'The following parameters were required by not specified: '+(
              ', '.join(errors)
              ))
      # add date header
      headers['Date']=BaseMailTemplate.DateTime().rfc822()
      # add message-id header
      headers['Message-ID']=make_msgid()
      # turn headers into an ordered list for predictable header order
      keys = headers.keys()
      keys.sort()
      return msg,values,[(key,headers[key]) for key in keys]
开发者ID:ccwalkerjm,项目名称:erp5,代码行数:88,代码来源:MailTemplates.py


注:本文中的email.Header.Header.encode方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。