'Build an L{ESMTPSender} protocol configured with C{heloFallback},
C{requireAuthentication}, and C{requireTransportSecurity} as specified
in L{__init__}.
This sets L{currentProtocol} on the factory, as well as returning it.
@rtype: L{ESMTPSender}'

def buildProtocol(self, addr):

    p = self.protocol(self.username, self.password, self._contextFactory, self.domain, ((self.nEmails * 2) + 2))
    p.heloFallback = self._heloFallback
    p.requireAuthentication = self._requireAuthentication
    p.requireTransportSecurity = self._requireTransportSecurity
    p.factory = self
    p.timeout = self.timeout
    self.currentProtocol = p
    self.result.addBoth(self._removeProtocol)
    return p
