| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \declaremodule{standard}{email.Generator} | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \modulesynopsis{Generate flat text email messages from a message object tree.} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | One of the most common tasks is to generate the flat text of the email | 
					
						
							|  |  |  | message represented by a message object tree.  You will need to do | 
					
						
							|  |  |  | this if you want to send your message via the \refmodule{smtplib} | 
					
						
							|  |  |  | module or the \refmodule{nntplib} module, or print the message on the | 
					
						
							|  |  |  | console.  Taking a message object tree and producing a flat text | 
					
						
							|  |  |  | document is the job of the \class{Generator} class. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Again, as with the \refmodule{email.Parser} module, you aren't limited | 
					
						
							|  |  |  | to the functionality of the bundled generator; you could write one | 
					
						
							|  |  |  | from scratch yourself.  However the bundled generator knows how to | 
					
						
							|  |  |  | generate most email in a standards-compliant way, should handle MIME | 
					
						
							|  |  |  | and non-MIME email messages just fine, and is designed so that the | 
					
						
							|  |  |  | transformation from flat text, to an object tree via the | 
					
						
							|  |  |  | \class{Parser} class, | 
					
						
							| 
									
										
										
										
											2001-11-05 01:55:03 +00:00
										 |  |  | and back to flat text, is idempotent (the input is identical to the | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | output). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Here are the public methods of the \class{Generator} class: | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{classdesc}{Generator}{outfp\optional{, mangle_from_\optional{, | 
					
						
							|  |  |  |     maxheaderlen}}} | 
					
						
							|  |  |  | The constructor for the \class{Generator} class takes a file-like | 
					
						
							|  |  |  | object called \var{outfp} for an argument.  \var{outfp} must support | 
					
						
							|  |  |  | the \method{write()} method and be usable as the output file in a | 
					
						
							|  |  |  | Python 2.0 extended print statement. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-11-05 01:55:03 +00:00
										 |  |  | Optional \var{mangle_from_} is a flag that, when true, puts a \samp{>} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | character in front of any line in the body that starts exactly as | 
					
						
							|  |  |  | \samp{From } (i.e. \code{From} followed by a space at the front of the | 
					
						
							|  |  |  | line).  This is the only guaranteed portable way to avoid having such | 
					
						
							|  |  |  | lines be mistaken for \emph{Unix-From} headers (see | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \ulink{WHY THE CONTENT-LENGTH FORMAT IS BAD} | 
					
						
							|  |  |  | {http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/content-length.html} | 
					
						
							|  |  |  | for details). | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Optional \var{maxheaderlen} specifies the longest length for a | 
					
						
							|  |  |  | non-continued header.  When a header line is longer than | 
					
						
							|  |  |  | \var{maxheaderlen} (in characters, with tabs expanded to 8 spaces), | 
					
						
							|  |  |  | the header will be broken on semicolons and continued as per | 
					
						
							|  |  |  | \rfc{2822}.  If no semicolon is found, then the header is left alone. | 
					
						
							|  |  |  | Set to zero to disable wrapping headers.  Default is 78, as | 
					
						
							|  |  |  | recommended (but not required) by \rfc{2822}. | 
					
						
							|  |  |  | \end{classdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The other public \class{Generator} methods are: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Generator]{__call__}{msg\optional{, unixfrom}} | 
					
						
							|  |  |  | Print the textual representation of the message object tree rooted at | 
					
						
							|  |  |  | \var{msg} to the output file specified when the \class{Generator} | 
					
						
							|  |  |  | instance was created.  Sub-objects are visited depth-first and the | 
					
						
							|  |  |  | resulting text will be properly MIME encoded. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Optional \var{unixfrom} is a flag that forces the printing of the | 
					
						
							|  |  |  | \emph{Unix-From} (a.k.a. envelope header or \code{From_} header) | 
					
						
							|  |  |  | delimiter before the first \rfc{2822} header of the root message | 
					
						
							|  |  |  | object.  If the root object has no \emph{Unix-From} header, a standard | 
					
						
							|  |  |  | one is crafted.  By default, this is set to 0 to inhibit the printing | 
					
						
							|  |  |  | of the \emph{Unix-From} delimiter. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note that for sub-objects, no \emph{Unix-From} header is ever printed. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Generator]{write}{s} | 
					
						
							|  |  |  | Write the string \var{s} to the underlying file object, | 
					
						
							|  |  |  | i.e. \var{outfp} passed to \class{Generator}'s constructor.  This | 
					
						
							|  |  |  | provides just enough file-like API for \class{Generator} instances to | 
					
						
							|  |  |  | be used in extended print statements. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | As a convenience, see the methods \method{Message.as_string()} and | 
					
						
							|  |  |  | \code{str(aMessage)}, a.k.a. \method{Message.__str__()}, which | 
					
						
							|  |  |  | simplify the generation of a formatted string representation of a | 
					
						
							|  |  |  | message object.  For more detail, see \refmodule{email.Message}. |