Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
24bb93af
Commit
24bb93af
authored
Mar 14, 1998
by
Fred Drake
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Logical markup.
Wrap general Message class description in a {classdesc} instead of nothing at all.
parent
1365455a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
108 additions
and
102 deletions
+108
-102
Doc/lib/librfc822.tex
Doc/lib/librfc822.tex
+54
-51
Doc/librfc822.tex
Doc/librfc822.tex
+54
-51
No files found.
Doc/lib/librfc822.tex
View file @
24bb93af
...
...
@@ -2,20 +2,19 @@
\label
{
module-rfc822
}
\stmodindex
{
rfc822
}
\setindexsubitem
{
(in module rfc822)
}
This module defines a class,
\c
ode
{
Message
}
, which represents a
This module defines a class,
\c
lass
{
Message
}
, which represents a
collection of ``email headers'' as defined by the Internet standard
\rfc
{
822
}
. It is used in various contexts, usually to read such
headers from a file.
Note that there's a separate module to read
\UNIX
{}
, MH, and MMDF
style mailbox files:
\code
{
mailbox
}
.
\refstmodindex
{
mailbox
}
style mailbox files:
\module
{
mailbox
}
\refstmodindex
{
mailbox
}
.
A
\code
{
Message
}
instance is instantiated with an open file object as
parameter. The optional
\code
{
seekable
}
parameter indicates if the
file object is seekable; the default value is 1 for true.
\begin{classdesc}
{
Message
}{
file
\optional
{
, seekable
}}
A
\class
{
Message
}
instance is instantiated with an open file object as
parameter. The optional
\var
{
seekable
}
parameter indicates if the
file object is seekable; the default value is
\code
{
1
}
for true.
Instantiation reads headers from the file up to a blank line and
stores them in the instance; after instantiation, the file is
positioned directly after the blank line that terminates the headers.
...
...
@@ -25,44 +24,46 @@ by a single linefeed; a terminating CR-LF is replaced by a single
linefeed before the line is stored.
All header matching is done independent of upper or lower case;
e.g.
\code
{
m['From']
}
,
\code
{
m['from']
}
and
\code
{
m['FROM']
}
all yield
the same result.
e.g.
\code
{
\var
{
m
}
['From']
}
,
\code
{
\var
{
m
}
['from']
}
and
\code
{
\var
{
m
}
['FROM']
}
all yield the same result.
\end{classdesc}
\begin{funcdesc}
{
parsedate
}{
date
}
Attempts to parse a date according to the rules in
\rfc
{
822
}
.
however,
some mailers don't follow that format as specified, so
\
code
{
parsedate()
}
tries to guess correctly in such cases.
Attempts to parse a date according to the rules in
\rfc
{
822
}
.
however,
some mailers don't follow that format as specified, so
\
function
{
parsedate()
}
tries to guess correctly in such cases.
\var
{
date
}
is a string containing an
\rfc
{
822
}
date, such as
\code
{
"Mon, 20 Nov 1995 19:12:08 -0500"
}
. If it succeeds in parsing
the date,
\
code
{
parsedate()
}
returns a 9-tuple that can be passed
directly to
\
code
{
time.mktime()
}
; otherwise
\code
{
None
}
will be
\code
{
'Mon, 20 Nov 1995 19:12:08 -0500'
}
. If it succeeds in parsing
the date,
\
function
{
parsedate()
}
returns a 9-tuple that can be passed
directly to
\
function
{
time.mktime()
}
; otherwise
\code
{
None
}
will be
returned.
\end{funcdesc}
\begin{funcdesc}
{
parsedate
_
tz
}{
date
}
Performs the same function as
\code
{
parsedate()
}
, but returns either
\code
{
None
}
or a 10-tuple; the first 9 elements make up a tuple that
can be passed directly to
\code
{
time.mktime()
}
, and the tenth is the
offset of the date's timezone from UTC (which is the official term
for Greenwich Mean Time). (Note that the sign of the timezone offset
is the opposite of the sign of the
\code
{
time.timezone
}
variable for
the same timezone; the latter variable follows the
\POSIX
{}
standard
while this module follows
\rfc
{
822
}
.) If the input string has no
timezone, the last element of the tuple returned is
\code
{
None
}
.
Performs the same function as
\function
{
parsedate()
}
, but returns
either
\code
{
None
}
or a 10-tuple; the first 9 elements make up a tuple
that can be passed directly to
\function
{
time.mktime()
}
, and the tenth
is the offset of the date's timezone from UTC (which is the official
term for Greenwich Mean Time). (Note that the sign of the timezone
offset is the opposite of the sign of the
\code
{
time.timezone
}
variable for the same timezone; the latter variable follows the
\POSIX
{}
standard while this module follows
\rfc
{
822
}
.) If the input
string has no timezone, the last element of the tuple returned is
\code
{
None
}
.
\end{funcdesc}
\begin{funcdesc}
{
mktime
_
tz
}{
tuple
}
Turn a 10-tuple as returned by
\
code
{
parsedate
_
tz()
}
into a UTC timestamp.
It the timezone item in the tuple is
\code
{
None
}
, assume local time.
Minor deficiency: this first interprets the first 8 elements as a
local time and then compensates for the timezone difference;
this may yield a slight error around daylight savings time
Turn a 10-tuple as returned by
\
function
{
parsedate
_
tz()
}
into a UTC
timestamp. It the timezone item in the tuple is
\code
{
None
}
, assume
local time. Minor deficiency: this first interprets the first 8
elements as a local time and then compensates for the timezone
difference;
this may yield a slight error around daylight savings time
switch dates. Not enough to worry about for common use.
\end{funcdesc}
\subsection
{
Message Objects
}
A
\c
ode
{
Message
}
instance has the following methods:
A
\c
lass
{
Message
}
instance has the following methods:
\begin{funcdesc}
{
rewindbody
}{}
Seek to the start of the message body. This only works if the file
...
...
@@ -92,16 +93,17 @@ no header matching \var{name}.
\begin{funcdesc}
{
getheader
}{
name
}
Like
\code
{
getrawheader(
\var
{
name
}
)
}
, but strip leading and trailing
whitespace
(but not internal whitespace)
.
whitespace
. Internal whitespace is not stripped
.
\end{funcdesc}
\begin{funcdesc}
{
getaddr
}{
name
}
Return a pair (full name, email address) parsed from the string
returned by
\code
{
getheader(
\var
{
name
}
)
}
. If no header matching
\var
{
name
}
exists, return
\code
{
None, None
}
; otherwise both the full
name and the address are (possibly empty )strings.
Return a pair
\code
{
(
\var
{
full name
}
,
\var
{
email address
}
)
}
parsed
from the string returned by
\code
{
getheader(
\var
{
name
}
)
}
. If no
header matching
\var
{
name
}
exists, return
\code
{
(None, None)
}
;
otherwise both the full name and the address are (possibly empty)
strings.
Example: If
\
code
{
m
}
's first
\code
{
From
}
header contains the string
\\
Example: If
\
var
{
m
}
's first
\code
{
From
}
header contains the string
\code
{
'jack@cwi.nl (Jack Jansen)'
}
, then
\code
{
m.getaddr('From')
}
will yield the pair
\code
{
('Jack Jansen', 'jack@cwi.nl')
}
.
...
...
@@ -113,17 +115,17 @@ exact same result.
\begin{funcdesc}
{
getaddrlist
}{
name
}
This is similar to
\code
{
getaddr(
\var
{
list
}
)
}
, but parses a header
containing a list of email addresses (e.g. a
\code
{
To
}
header) and
returns a list of
(full name, email address) pairs (even if there wa
s
only one address in the header). If there is no header matching
\var
{
name
}
, return an empty list.
returns a list of
\code
{
(
\var
{
full name
}
,
\var
{
email address
}
)
}
pair
s
(even if there was only one address in the header). If there is no
header matching
\var
{
name
}
, return an empty list.
XXX The current version of this function is not really correct. It
yields bogus results if a full name contains a comma.
\end{funcdesc}
\begin{funcdesc}
{
getdate
}{
name
}
Retrieve a header using
\
code
{
getheader
}
and parse it into a 9-tuple
compatible with
\
code
{
time.mktime()
}
. If there is no header matching
Retrieve a header using
\
method
{
getheader()
}
and parse it into a 9-tuple
compatible with
\
function
{
time.mktime()
}
. If there is no header matching
\var
{
name
}
, or it is unparsable, return
\code
{
None
}
.
Date parsing appears to be a black art, and not all mailers adhere to
...
...
@@ -133,21 +135,22 @@ function may occasionally yield an incorrect result.
\end{funcdesc}
\begin{funcdesc}
{
getdate
_
tz
}{
name
}
Retrieve a header using
\
code
{
getheader
}
and parse it into a 10-tuple;
the first 9 elements will make a tuple compatible with
\
code
{
time.mktime()
}
, and the 10th is a number giving the offset of
the date's timezone from UTC. Similarly to
\code
{
getdate()
}
, if
Retrieve a header using
\
method
{
getheader()
}
and parse it into a
10-tuple;
the first 9 elements will make a tuple compatible with
\
function
{
time.mktime()
}
, and the 10th is a number giving the offset
of the date's timezone from UTC. Similarly to
\method
{
getdate()
}
, if
there is no header matching
\var
{
name
}
, or it is unparsable, return
\code
{
None
}
.
\end{funcdesc}
\code
{
Message
}
instances also support a read-only mapping interface.
In particular:
\code
{
m[name]
}
is the same as
\code
{
m.getheader(name)
}
;
and
\code
{
len(m)
}
,
\code
{
m.has
_
key(name)
}
,
\code
{
m.keys()
}
,
\code
{
m.values()
}
and
\code
{
m.items()
}
act as expected (and
consistently).
\class
{
Message
}
instances also support a read-only mapping interface.
In particular:
\code
{
\var
{
m
}
[name]
}
is the same as
\code
{
\var
{
m
}
.getheader(name)
}
; and
\code
{
len(
\var
{
m
}
)
}
,
\code
{
\var
{
m
}
.has
_
key(name)
}
,
\code
{
\var
{
m
}
.keys()
}
,
\code
{
\var
{
m
}
.values()
}
and
\code
{
\var
{
m
}
.items()
}
act as expected
(and consistently).
Finally,
\c
ode
{
Message
}
instances have two public instance variables:
Finally,
\c
lass
{
Message
}
instances have two public instance variables:
\begin{datadesc}
{
headers
}
A list containing the entire set of header lines, in the order in
...
...
Doc/librfc822.tex
View file @
24bb93af
...
...
@@ -2,20 +2,19 @@
\label
{
module-rfc822
}
\stmodindex
{
rfc822
}
\setindexsubitem
{
(in module rfc822)
}
This module defines a class,
\c
ode
{
Message
}
, which represents a
This module defines a class,
\c
lass
{
Message
}
, which represents a
collection of ``email headers'' as defined by the Internet standard
\rfc
{
822
}
. It is used in various contexts, usually to read such
headers from a file.
Note that there's a separate module to read
\UNIX
{}
, MH, and MMDF
style mailbox files:
\code
{
mailbox
}
.
\refstmodindex
{
mailbox
}
style mailbox files:
\module
{
mailbox
}
\refstmodindex
{
mailbox
}
.
A
\code
{
Message
}
instance is instantiated with an open file object as
parameter. The optional
\code
{
seekable
}
parameter indicates if the
file object is seekable; the default value is 1 for true.
\begin{classdesc}
{
Message
}{
file
\optional
{
, seekable
}}
A
\class
{
Message
}
instance is instantiated with an open file object as
parameter. The optional
\var
{
seekable
}
parameter indicates if the
file object is seekable; the default value is
\code
{
1
}
for true.
Instantiation reads headers from the file up to a blank line and
stores them in the instance; after instantiation, the file is
positioned directly after the blank line that terminates the headers.
...
...
@@ -25,44 +24,46 @@ by a single linefeed; a terminating CR-LF is replaced by a single
linefeed before the line is stored.
All header matching is done independent of upper or lower case;
e.g.
\code
{
m['From']
}
,
\code
{
m['from']
}
and
\code
{
m['FROM']
}
all yield
the same result.
e.g.
\code
{
\var
{
m
}
['From']
}
,
\code
{
\var
{
m
}
['from']
}
and
\code
{
\var
{
m
}
['FROM']
}
all yield the same result.
\end{classdesc}
\begin{funcdesc}
{
parsedate
}{
date
}
Attempts to parse a date according to the rules in
\rfc
{
822
}
.
however,
some mailers don't follow that format as specified, so
\
code
{
parsedate()
}
tries to guess correctly in such cases.
Attempts to parse a date according to the rules in
\rfc
{
822
}
.
however,
some mailers don't follow that format as specified, so
\
function
{
parsedate()
}
tries to guess correctly in such cases.
\var
{
date
}
is a string containing an
\rfc
{
822
}
date, such as
\code
{
"Mon, 20 Nov 1995 19:12:08 -0500"
}
. If it succeeds in parsing
the date,
\
code
{
parsedate()
}
returns a 9-tuple that can be passed
directly to
\
code
{
time.mktime()
}
; otherwise
\code
{
None
}
will be
\code
{
'Mon, 20 Nov 1995 19:12:08 -0500'
}
. If it succeeds in parsing
the date,
\
function
{
parsedate()
}
returns a 9-tuple that can be passed
directly to
\
function
{
time.mktime()
}
; otherwise
\code
{
None
}
will be
returned.
\end{funcdesc}
\begin{funcdesc}
{
parsedate
_
tz
}{
date
}
Performs the same function as
\code
{
parsedate()
}
, but returns either
\code
{
None
}
or a 10-tuple; the first 9 elements make up a tuple that
can be passed directly to
\code
{
time.mktime()
}
, and the tenth is the
offset of the date's timezone from UTC (which is the official term
for Greenwich Mean Time). (Note that the sign of the timezone offset
is the opposite of the sign of the
\code
{
time.timezone
}
variable for
the same timezone; the latter variable follows the
\POSIX
{}
standard
while this module follows
\rfc
{
822
}
.) If the input string has no
timezone, the last element of the tuple returned is
\code
{
None
}
.
Performs the same function as
\function
{
parsedate()
}
, but returns
either
\code
{
None
}
or a 10-tuple; the first 9 elements make up a tuple
that can be passed directly to
\function
{
time.mktime()
}
, and the tenth
is the offset of the date's timezone from UTC (which is the official
term for Greenwich Mean Time). (Note that the sign of the timezone
offset is the opposite of the sign of the
\code
{
time.timezone
}
variable for the same timezone; the latter variable follows the
\POSIX
{}
standard while this module follows
\rfc
{
822
}
.) If the input
string has no timezone, the last element of the tuple returned is
\code
{
None
}
.
\end{funcdesc}
\begin{funcdesc}
{
mktime
_
tz
}{
tuple
}
Turn a 10-tuple as returned by
\
code
{
parsedate
_
tz()
}
into a UTC timestamp.
It the timezone item in the tuple is
\code
{
None
}
, assume local time.
Minor deficiency: this first interprets the first 8 elements as a
local time and then compensates for the timezone difference;
this may yield a slight error around daylight savings time
Turn a 10-tuple as returned by
\
function
{
parsedate
_
tz()
}
into a UTC
timestamp. It the timezone item in the tuple is
\code
{
None
}
, assume
local time. Minor deficiency: this first interprets the first 8
elements as a local time and then compensates for the timezone
difference;
this may yield a slight error around daylight savings time
switch dates. Not enough to worry about for common use.
\end{funcdesc}
\subsection
{
Message Objects
}
A
\c
ode
{
Message
}
instance has the following methods:
A
\c
lass
{
Message
}
instance has the following methods:
\begin{funcdesc}
{
rewindbody
}{}
Seek to the start of the message body. This only works if the file
...
...
@@ -92,16 +93,17 @@ no header matching \var{name}.
\begin{funcdesc}
{
getheader
}{
name
}
Like
\code
{
getrawheader(
\var
{
name
}
)
}
, but strip leading and trailing
whitespace
(but not internal whitespace)
.
whitespace
. Internal whitespace is not stripped
.
\end{funcdesc}
\begin{funcdesc}
{
getaddr
}{
name
}
Return a pair (full name, email address) parsed from the string
returned by
\code
{
getheader(
\var
{
name
}
)
}
. If no header matching
\var
{
name
}
exists, return
\code
{
None, None
}
; otherwise both the full
name and the address are (possibly empty )strings.
Return a pair
\code
{
(
\var
{
full name
}
,
\var
{
email address
}
)
}
parsed
from the string returned by
\code
{
getheader(
\var
{
name
}
)
}
. If no
header matching
\var
{
name
}
exists, return
\code
{
(None, None)
}
;
otherwise both the full name and the address are (possibly empty)
strings.
Example: If
\
code
{
m
}
's first
\code
{
From
}
header contains the string
\\
Example: If
\
var
{
m
}
's first
\code
{
From
}
header contains the string
\code
{
'jack@cwi.nl (Jack Jansen)'
}
, then
\code
{
m.getaddr('From')
}
will yield the pair
\code
{
('Jack Jansen', 'jack@cwi.nl')
}
.
...
...
@@ -113,17 +115,17 @@ exact same result.
\begin{funcdesc}
{
getaddrlist
}{
name
}
This is similar to
\code
{
getaddr(
\var
{
list
}
)
}
, but parses a header
containing a list of email addresses (e.g. a
\code
{
To
}
header) and
returns a list of
(full name, email address) pairs (even if there wa
s
only one address in the header). If there is no header matching
\var
{
name
}
, return an empty list.
returns a list of
\code
{
(
\var
{
full name
}
,
\var
{
email address
}
)
}
pair
s
(even if there was only one address in the header). If there is no
header matching
\var
{
name
}
, return an empty list.
XXX The current version of this function is not really correct. It
yields bogus results if a full name contains a comma.
\end{funcdesc}
\begin{funcdesc}
{
getdate
}{
name
}
Retrieve a header using
\
code
{
getheader
}
and parse it into a 9-tuple
compatible with
\
code
{
time.mktime()
}
. If there is no header matching
Retrieve a header using
\
method
{
getheader()
}
and parse it into a 9-tuple
compatible with
\
function
{
time.mktime()
}
. If there is no header matching
\var
{
name
}
, or it is unparsable, return
\code
{
None
}
.
Date parsing appears to be a black art, and not all mailers adhere to
...
...
@@ -133,21 +135,22 @@ function may occasionally yield an incorrect result.
\end{funcdesc}
\begin{funcdesc}
{
getdate
_
tz
}{
name
}
Retrieve a header using
\
code
{
getheader
}
and parse it into a 10-tuple;
the first 9 elements will make a tuple compatible with
\
code
{
time.mktime()
}
, and the 10th is a number giving the offset of
the date's timezone from UTC. Similarly to
\code
{
getdate()
}
, if
Retrieve a header using
\
method
{
getheader()
}
and parse it into a
10-tuple;
the first 9 elements will make a tuple compatible with
\
function
{
time.mktime()
}
, and the 10th is a number giving the offset
of the date's timezone from UTC. Similarly to
\method
{
getdate()
}
, if
there is no header matching
\var
{
name
}
, or it is unparsable, return
\code
{
None
}
.
\end{funcdesc}
\code
{
Message
}
instances also support a read-only mapping interface.
In particular:
\code
{
m[name]
}
is the same as
\code
{
m.getheader(name)
}
;
and
\code
{
len(m)
}
,
\code
{
m.has
_
key(name)
}
,
\code
{
m.keys()
}
,
\code
{
m.values()
}
and
\code
{
m.items()
}
act as expected (and
consistently).
\class
{
Message
}
instances also support a read-only mapping interface.
In particular:
\code
{
\var
{
m
}
[name]
}
is the same as
\code
{
\var
{
m
}
.getheader(name)
}
; and
\code
{
len(
\var
{
m
}
)
}
,
\code
{
\var
{
m
}
.has
_
key(name)
}
,
\code
{
\var
{
m
}
.keys()
}
,
\code
{
\var
{
m
}
.values()
}
and
\code
{
\var
{
m
}
.items()
}
act as expected
(and consistently).
Finally,
\c
ode
{
Message
}
instances have two public instance variables:
Finally,
\c
lass
{
Message
}
instances have two public instance variables:
\begin{datadesc}
{
headers
}
A list containing the entire set of header lines, in the order in
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment