Go to the latest version of this document.

# ``twisted`.`mail`.`smtp`.`SMTPClient``

class documentation

`class SMTPClient(basic.LineReceiver, policies.TimeoutMixin): (source)`

Known subclasses: `twisted.mail.relay.SMTPRelayer`, `twisted.mail.smtp.ESMTPClient`, `twisted.mail.smtp.SMTPSender`

Constructor: `SMTPClient(identity, logsize)`

View In Hierarchy

SMTP client for sending emails.

After the client has connected to the SMTP server, it repeatedly calls `SMTPClient.getMailFrom`, `SMTPClient.getMailTo` and `SMTPClient.getMailData` and uses this information to send an email. It then calls `SMTPClient.getMailFrom` again; if it returns `None`, the client will disconnect, otherwise it will continue as normal i.e. call `SMTPClient.getMailTo` and `SMTPClient.getMailData` and send a new email.

Method | `__init__` | Undocumented
Method | `connectionLost` | We are no longer connected
Method | `connectionMade` | Called when a connection is made.
Method | `finishedFileTransfer` | Undocumented
Method | `getMailData` | Return file-like object containing data of message to be sent.
Method | `getMailFrom` | Return the email address the mail is from.
Method | `getMailTo` | Return a list of emails to send to.
Method | `lineReceived` | Override this for when each line is received.
Method | `sendError` | If an error occurs before a mail message is sent sendError will be called. This base class method sends a QUIT if the error is non-fatal and disconnects the connection.
Method | `sendLine` | Sends a line to the other end of the connection.
Method | `sentMail` | Called when an attempt to send an email is completed.
Method | `smtpConnectionFailed` | Undocumented
Method | `smtpState_data` | Undocumented
Method | `smtpState_disconnect` | Undocumented
Method | `smtpState_from` | Undocumented
Method | `smtpState_helo` | Undocumented
Method | `smtpState_msgSent` | Undocumented
Method | `smtpState_to` | Undocumented
Method | `smtpState_toOrData` | Undocumented
Method | `smtpTransferFailed` | Undocumented
Method | `timeoutConnection` | Called when the connection times out.
Method | `transformChunk` | Perform the necessary local to network newline conversion and escape leading periods.
Class Variable | `debug` | Undocumented
Class Variable | `timeout` | Undocumented
Instance Variable | `code` | Undocumented
Instance Variable | `identity` | Undocumented
Instance Variable | `lastAddress` | Undocumented
Instance Variable | `log` | Undocumented
Instance Variable | `mailFile` | Undocumented
Instance Variable | `resp` | Undocumented
Instance Variable | `successAddresses` | Undocumented
Instance Variable | `toAddresses` | Undocumented
Instance Variable | `toAddressesResult` | Undocumented
Method | `_disconnectFromServer` | Undocumented
Instance Variable | `_expected` | Undocumented
Instance Variable | `_failresponse` | Undocumented
Instance Variable | `_failureReason` | Undocumented
Instance Variable | `_from` | Undocumented
Instance Variable | `_okresponse` | Undocumented

Inherited from `LineReceiver`:

Method | `clearLineBuffer` | Clear buffered data.
Method | `dataReceived` | Protocol.dataReceived. Translates bytes into lines, and calls lineReceived (or rawDataReceived, depending on mode.)
Method | `lineLengthExceeded` | Called when the maximum line length has been reached. Override if it needs to be dealt with in some special way.
Method | `rawDataReceived` | Override this for when raw data is received.
Method | `setLineMode` | Sets the line-mode of this receiver.
Method | `setRawMode` | Sets the raw mode of this receiver. Further data received will be sent to rawDataReceived rather than lineReceived.
Constant | `MAX_LENGTH` | The maximum length of a line to allow (If a sent line is longer than this, the connection is dropped). Default is 16384.
Class Variable | `delimiter` | The line-ending delimiter to use. By default this is `b'\r\n'`.
Instance Variable | `line_mode` | Undocumented
Instance Variable | `_buffer` | Undocumented
Instance Variable | `_busyReceiving` | Undocumented

Inherited from `Protocol` (via `LineReceiver`):

Method | `logPrefix` | Return a prefix matching the class name, to identify log messages related to this protocol instance.
Class Variable | `factory` | Undocumented

Inherited from `BaseProtocol` (via `LineReceiver`, `Protocol`):

Method | `makeConnection` | Make a connection to a transport and a server.
Instance Variable | `connected` | Undocumented
Instance Variable | `transport` | Undocumented

Inherited from `_PauseableMixin` (via `LineReceiver`, `Protocol`, `BaseProtocol`):

Method | `pauseProducing` | Undocumented
Method | `resumeProducing` | Undocumented
Method | `stopProducing` | Undocumented
Instance Variable | `paused` | Undocumented

Inherited from `TimeoutMixin` (via `LineReceiver`, `Protocol`, `BaseProtocol`, `_PauseableMixin`):

Method | `callLater` | Wrapper around `reactor.callLater` for test purpose.
Method | `resetTimeout` | Reset the timeout count down.
Method | `setTimeout` | Change the timeout period
Instance Variable | `timeOut` | The number of seconds after which to timeout the connection.
Method | `__timedOut` | Undocumented
Instance Variable | `__timeoutCall` | Undocumented

def __init__(self, identity, logsize=10): (source)
overridden in `twisted.mail.relay.SMTPRelayer`, `twisted.mail.smtp.ESMTPClient`

Undocumented

def connectionLost(self, reason=protocol.connectionDone): (source)
from `twisted.internet.interfaces.IProtocol`
overrides `twisted.internet.protocol.Protocol.connectionLost`

We are no longer connected

def connectionMade(self): (source)
from `twisted.internet.interfaces.IProtocol`
overrides `twisted.internet.protocol.BaseProtocol.connectionMade`
overridden in `twisted.mail.smtp.ESMTPClient`

Called when a connection is made.

This may be considered the initializer of the protocol, because it is called when the connection is completed. For clients, this is called once the connection to the server has been established; for servers, this is called after an accept() call stops blocking and a socket has been received. If you need to send any greeting or initial message, do it here.

def finishedFileTransfer(self, lastsent): (source)

Undocumented

def getMailData(self): (source)

Return file-like object containing data of message to be sent.

Lines in the file should be delimited by '\n'.

def getMailFrom(self): (source)

Return the email address the mail is from.

def getMailTo(self): (source)

Return a list of emails to send to.

def lineReceived(self, line): (source)
overrides `twisted.protocols.basic.LineReceiver.lineReceived`

Override this for when each line is received.

Parameters
line:`bytes` | The line which was received with the delimiter removed.

def sendError(self, exc): (source)

If an error occurs before a mail message is sent sendError will be called. This base class method sends a QUIT if the error is non-fatal and disconnects the connection.

Parameters
exc:`SMTPClientError` | The SMTPClientError (or child class) raised

def sendLine(self, line): (source)
overrides `twisted.protocols.basic.LineReceiver.sendLine`

Sends a line to the other end of the connection.

Parameters
line:`bytes` | The line to send, not including the delimiter.

def sentMail(self, code, resp, numOk, addresses, log): (source)

Called when an attempt to send an email is completed.

If some addresses were accepted, code and resp are the response to the DATA command. If no addresses were accepted, code is -1 and resp is an informative message.

Parameters
code | the code returned by the SMTP Server
resp | The string response returned from the SMTP Server
numOk | the number of addresses accepted by the remote host.
addresses | is a list of tuples (address, code, resp) listing the response to each RCPT command.
log | is the SMTP session log

def smtpConnectionFailed(self, code, resp): (source)

Undocumented

def smtpState_data(self, code, resp): (source)

Undocumented

def smtpState_disconnect(self, code, resp): (source)

Undocumented

def smtpState_from(self, code, resp): (source)

Undocumented

def smtpState_helo(self, code, resp): (source)

Undocumented

def smtpState_msgSent(self, code, resp): (source)

Undocumented

def smtpState_to(self, code, resp): (source)

Undocumented

def smtpState_toOrData(self, code, resp): (source)

Undocumented

def smtpTransferFailed(self, code, resp): (source)

Undocumented

def timeoutConnection(self): (source)
overrides `twisted.protocols.policies.TimeoutMixin.timeoutConnection`

Called when the connection times out.

Override to define behavior other than dropping the connection.

def transformChunk(self, chunk): (source)

Perform the necessary local to network newline conversion and escape leading periods.

This method also resets the idle timeout so that as long as process is being made sending the message body, the client will not time out.

debug: `bool` = (source)

Undocumented

timeout = (source)

Undocumented

code: `int` = (source)

Undocumented

identity = (source)

Undocumented

lastAddress = (source)

Undocumented

log = (source)

Undocumented

mailFile = (source)

Undocumented

resp: `list` = (source)

Undocumented

successAddresses: `list` = (source)

Undocumented

toAddresses = (source)

Undocumented

toAddressesResult: `list` = (source)

Undocumented

def _disconnectFromServer(self): (source)

Undocumented

_expected = (source)
overridden in `twisted.mail.smtp.ESMTPClient`

Undocumented

_failresponse = (source)
overridden in `twisted.mail.smtp.ESMTPClient`

Undocumented

_failureReason = (source)

Undocumented

_from = (source)

Undocumented

_okresponse = (source)
overridden in `twisted.mail.smtp.ESMTPClient`

Undocumented