Zu beachtende Punkte bei der Verwendung von smtplib in Python

高洛峰
Freigeben: 2016-10-18 13:38:41
Original
1651 Leute haben es durchsucht

Bei Verwendung von smtplib verwenden Sie am besten die Quit-Methode, um die Verbindung des geöffneten Servers zu schließen, anstatt sie zu schließen.

server.quit() #好
#server.close() #不好
Nach dem Login kopieren

Weil durch Beenden nicht nur die Verbindung, sondern auch die Sitzung geschlossen wird. Diese Sitzung erstreckt sich über die gesamte Verbindung, und wenn in dieser Sitzung ein Bounce auftritt, treten in den nachfolgenden Nachrichten seltsame SMTP-Protokollfehler auf.

Bei Verwendung von smtplib wird der DNS nur einmal aufgelöst, selbst wenn der Server jedes Mal erneut geöffnet wird. Auf diese Weise kann er in einer Lastausgleichsumgebung verwendet werden, wenn mehrere SMTP-Server unter einem Domänennamen vorhanden sind . Mit Python von smtplib Das Programm verwendet immer eine Maschine und es gibt keine Möglichkeit zum Lastenausgleich, was sich auf die Skalierbarkeit auswirkt. Zu diesem Zweck besteht die Idee darin, den Domänennamen des Mailservers separat zu analysieren, um alle Maschinennamen zu erhalten, und dann zufällig einen SMTP-Server auszuwählen, mit dem eine Verbindung hergestellt werden soll, um einen Lastausgleich auf Anwendungsebene durchzuführen. Sie können die Verwendung des folgenden Codes in Betracht ziehen, danke an Maoxing für die Bereitstellung:

class smtp_server_factory(object):
    def _get_addr_from_name(self, hostname):
        addrs = socket.getaddrinfo(hostname, smtplib.SMTP_PORT, 0, socket.SOCK_STREAM)
        return [addr[4][0] for addr in addrs]
  
    def get_server(self, hostname):
        addrs = self._get_addr_from_name(hostname)
        random.shuffle(addrs)
        for addr in addrs:
            try:
                smtp_server = smtplib.SMTP(addr)
            except Exception, e:
                pass
            else:
                print addr
                return smtp_server
        return None
Nach dem Login kopieren

#Use

server=smtp_server_factory().get_server('xxx-mail.qq.com')
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!