示例#1
0
 def set_charset(self, charset):
     if charset is None:
         self.del_param('charset')
         self._charset = None
         return
     if isinstance(charset, basestring):
         charset = email.charset.Charset(charset)
     if not isinstance(charset, email.charset.Charset):
         raise TypeError(charset)
     self._charset = charset
     if 'MIME-Version' not in self:
         self.add_header('MIME-Version', '1.0')
     if 'Content-Type' not in self:
         self.add_header('Content-Type', 'text/plain', charset=charset.get_output_charset())
     else:
         self.set_param('charset', charset.get_output_charset())
     if isinstance(self._payload, unicode):
         self._payload = self._payload.encode(charset.output_charset)
     if str(charset) != charset.get_output_charset():
         self._payload = charset.body_encode(self._payload)
     if 'Content-Transfer-Encoding' not in self:
         cte = charset.get_body_encoding()
         try:
             cte(self)
         except TypeError:
             self._payload = charset.body_encode(self._payload)
             self.add_header('Content-Transfer-Encoding', cte)
示例#2
0
    def set_charset(self, charset):
        """Set the charset of the payload to a given character set.
        
        charset can be a Charset instance, a string naming a character set, or
        None.  If it is a string it will be converted to a Charset instance.
        If charset is None, the charset parameter will be removed from the
        Content-Type field.  Anything else will generate a TypeError.
        
        The message will be assumed to be of type text/* encoded with
        charset.input_charset.  It will be converted to charset.output_charset
        and encoded properly, if needed, when generating the plain text
        representation of the message.  MIME headers (MIME-Version,
        Content-Type, Content-Transfer-Encoding) will be added as needed.
        
        """
        if charset is None:
            self.del_param('charset')
            self._charset = None
            return
        else:
            if isinstance(charset, basestring):
                charset = email.charset.Charset(charset)
            if not isinstance(charset, email.charset.Charset):
                raise TypeError(charset)
            self._charset = charset
            if 'MIME-Version' not in self:
                self.add_header('MIME-Version', '1.0')
            if 'Content-Type' not in self:
                self.add_header('Content-Type', 'text/plain', charset=charset.get_output_charset())
            else:
                self.set_param('charset', charset.get_output_charset())
            if isinstance(self._payload, unicode):
                self._payload = self._payload.encode(charset.output_charset)
            if str(charset) != charset.get_output_charset():
                self._payload = charset.body_encode(self._payload)
            if 'Content-Transfer-Encoding' not in self:
                cte = charset.get_body_encoding()
                try:
                    cte(self)
                except TypeError:
                    self._payload = charset.body_encode(self._payload)
                    self.add_header('Content-Transfer-Encoding', cte)

            return
示例#3
0
    def set_charset(self, charset):
        """Set the charset of the payload to a given character set.

        charset can be a Charset instance, a string naming a character set, or
        None.  If it is a string it will be converted to a Charset instance.
        If charset is None, the charset parameter will be removed from the
        Content-Type field.  Anything else will generate a TypeError.

        The message will be assumed to be of type text/* encoded with
        charset.input_charset.  It will be converted to charset.output_charset
        and encoded properly, if needed, when generating the plain text
        representation of the message.  MIME headers (MIME-Version,
        Content-Type, Content-Transfer-Encoding) will be added as needed.

        """
        if charset is None:
            self.del_param("charset")
            self._charset = None
            return
        if isinstance(charset, basestring):
            charset = email.charset.Charset(charset)
        if not isinstance(charset, email.charset.Charset):
            raise TypeError(charset)
        # BAW: should we accept strings that can serve as arguments to the
        # Charset constructor?
        self._charset = charset
        if "MIME-Version" not in self:
            self.add_header("MIME-Version", "1.0")
        if "Content-Type" not in self:
            self.add_header("Content-Type", "text/plain", charset=charset.get_output_charset())
        else:
            self.set_param("charset", charset.get_output_charset())
        if isinstance(self._payload, unicode):
            self._payload = self._payload.encode(charset.output_charset)
        if str(charset) != charset.get_output_charset():
            self._payload = charset.body_encode(self._payload)
        if "Content-Transfer-Encoding" not in self:
            cte = charset.get_body_encoding()
            try:
                cte(self)
            except TypeError:
                self._payload = charset.body_encode(self._payload)
                self.add_header("Content-Transfer-Encoding", cte)