Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

Das manuelle Versenden von Massen-E-Mails ist eine mühsame Aufgabe. Sie können Dienste von Drittanbietern nutzen, um die E-Mails in großen Mengen zu versenden.

Wie wäre es, wenn Sie Ihr eigenes Skript zum Versenden von E-Mails erstellen?

Ist das nicht wunderbar?

Ja, das ist es. Wir werden ein Skript in Python schreiben, um E-Mails zu versenden.

Python verfügt über eine Bibliothek namens smtplib , die für den Versand von E-Mails verwendet wird. Die Bibliothek smtplib basiert auf dem SMTP (Simple Mail Transport Protocol). SMTP wird verwendet, um E-Mails an andere zu senden

Gmail einrichten

Hier werden wir Gmail als E-Mail-Anbieter verwenden. Google lässt keine Skripte zur Anmeldung zu. Und wir müssen die Sicherheitseinstellungen unseres Gmail-Kontos so ändern, dass sich Skripte bei unserem Gmail-Konto anmelden können.

Die Änderung der Sicherheitsoption in unserem Gmail-Konto ist nicht gut, da sie anderen den Zugriff auf das Konto sehr leicht ermöglicht. Es wird empfohlen, ein neues Gmail-Konto zu erstellen. Gehen Sie hier zu den Einstellungen und schalten Sie die Option Weniger sichere Apps zulassen: EIN

Wenn Sie die obige Einstellung nicht aktivieren möchten, können Sie die Google API verwenden, um sich bei Ihrem Google Mail-Konto anzumelden. Das Skript zur Verwendung der Google APIs für die Authentifizierung finden Sie hier

Schritte zum Senden von E-Mails

Um eine E-Mail mit der smtplib-Bibliothek zu versenden, müssen Sie einige Schritte ausführen. Schauen wir uns zuerst die Schritte an und schreiben dann das Skript

#1. Verbinden mit dem SMTP-Server

Jeder Dienstanbieter hat einen anderen Domänennamen und Port für den SMTP-Server. Wir müssen den SMTP-Server-Domänennamen und den Port des E-Mail-Anbieters verwenden, den wir im Skript nutzen wollen. Der SMTP-Server-Domänenname und der Port für Gmail sind smtp.gmail.com und <em>465</em>

Wir werden für die Verbindung zum SMTP-Server die SSL-Verschlüsselung verwenden, da sie sicherer ist als die TSL-Verschlüsselung . Wenn Sie die TSL-Verschlüsselung verwenden möchten, benutzen Sie den Port 587 statt 465. Der Domänenname des SMTP-Servers ist je nach E-Mail-Anbieter unterschiedlich

Der Code zur Verbindung mit dem SMTP-Server

server = smtplib.SMTP_SSL(smtp_server_domain_name, port, context=ssl_context)

#2. Anmeldung

Sobald die Verbindung zum SMTP-Server hergestellt ist, können wir uns mit der Methode login des SMTP-Objekts mit der E-Mail-Adresse und dem Passwort anmelden. Der Code sieht wie folgt aus

server.login(absender_email, passwort)

#3. Mail senden

Nach der Anmeldung können wir mit dem Versenden der E-Mail nicht mehr warten. Senden Sie die Mail mit der Methode sendmail. Achten Sie darauf, dass Sie die Mail im folgenden Format senden

Betreff: Ihr_Betreff_für \Neue Zeile mail_content

Leerzeichen sind nicht erforderlich. Sie dienen nur zur Verdeutlichung des obigen Formats. Sehen wir uns nun den Beispielcode an

server.sendmail(absender_mail, email, f "Betreff: {subject}\n{content}")

#4. Beenden Sie

Vergessen Sie nicht, das SMTP c zu beenden.

Wir haben die Schritte zum Versenden von E-Mails mit Python gesehen. Aber wir haben noch nicht den gesamten Code besprochen. Lassen Sie uns den Code schnell durchgehen

import smtplib, ssl

class Mail:

 def __init__(self):
 self.port = 465
 self.smtp_server_domain_name = "smtp.gmail.com"
 self.sender_mail = "GMAIL_ADDRESS"
 self.password = "SECURE_PASSWORD"

 def send(self, emails, subject, content):
 ssl_context = ssl.create_default_context()
 service = smtplib.SMTP_SSL(self.smtp_server_domain_name, self.port, context=ssl_context)
 service.login(self.absender_mail, self.passwort)
        
 for email in emails:
 result = service.sendmail(self.absender_mail, email, f "Betreff: {subject}\n{content}")

 service.quit()


if __name__ == '__main__':
 mails = input("Emails eingeben: ").split()
 subject = input("Betreff eingeben: ")
 content = input("Inhalt eingeben: ")

 mail = Mail()
 mail.send(mails, subject, content)

Wir haben eine Klasse namens E-Mail erstellt. Und sie hat eine Methode namens senden. , um die Mails zu versenden. Ob Sie die Klasse schreiben oder nicht, bleibt Ihnen überlassen. Die Klasse macht das Programm besser lesbar. Wir haben alle oben beschriebenen Schritte nacheinander in der Sendemethode implementiert

Hurra! Sie haben eine E-Mail mit einem Python-Skript verschickt

HTML-Inhalt

Was, wenn Sie die E-Mail in HTML versenden möchten? Ist das möglich?

Ja, warum nicht. Wir können die E-Mail in HTML mit der Bibliothek email.mime versenden. Das ist eine integrierte Bibliothek

MIME ist ein Standard, mit dem das Format von E-Mails erweitert wird, um Anwendungsprogramme, Videos, Bilder usw. zu unterstützen,

Es gibt zwei Klassen, die wir aus dem email.mime Modul benötigen. Es sind MIMEText und MIMEMultipart. Sehen wir uns eine kurze Erklärung zu ihnen an

#1. MIMEText

Die Klasse MIMEText wird verwendet, um unseren E-Mail-Inhalt in HTML zu schreiben. Wir erstellen eine Instanz der Klasse MIMEText, indem wir den HTML-Inhalt und die Art des Inhalts übergeben. Sehen Sie sich den Beispielcode unten an

html_content = MIMEText(html_template, 'html')

Einige E-Mail-Dienste unterstützen die Wiedergabe von HTML nicht. Daher ist es besser, zwei Instanzen der Klasse MIMEText für einfachen Text und HTML zu erstellen

#2. MIMEMultipart

Die Klasse MIMEMultipart wird verwendet, um die Formatierung und das Schreiben von Betreff, von Adresse, an Adresse usw. zu vereinfachen. Wir werden den mit der Klasse MIMEText erstellten Inhalt mithilfe der Methode attach an MIMEMultipart übergeben

Wir müssen dafür sorgen, dass die Instanz von MIMEMultipart mit dem Argument alternativ zur Wiedergabe von einfachem Text oder HTML erstellt wird. Lassen Sie uns eine E-Mail mit HTML-Inhalt versenden

import smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart


class Mail:

 def __init__(self):
...

 def send(self, emails):
 ssl_context = ssl.create_default_context()
 service = smtplib.SMTP_SSL(self.smtp_server_domain_name, self.port, context=ssl_context)
 service.login(self.absender_mail, self.passwort)
        
 for email in emails:
 mail = MIMEMultipart('alternativ')
 mail['Betreff'] = 'Geekflare-Feierlichkeiten'
 mail['Von'] = self.absender_mail
 mail['An'] = email

 text_template = """
 Geekflare

 Hallo {0},
 Wir freuen uns, Ihnen mitteilen zu können, dass unsere Website diesen Monat 10 Millionen Aufrufe verzeichnet hat.
           """
 html_template = """
 <h1>Geekflare</h1>

 <p>Hallo {0},</p>
 <p>Wir freuen uns, Ihnen mitteilen zu können, dass unsere Website im letzten Monat <b>10 Millionen</b> Aufrufe erreicht hat.</p>
 """

 html_content = MIMEText(html_template.format(email.split("@")<x>[0]</x>), 'html')
 text_content = MIMEText(text_template.format(email.split("@")<x>[0]</x>), 'einfach')

 mail.attach(text_inhalt)
 mail.attach(html_inhalt)

 service.sendmail(self.sender_mail, email, mail.as_string())

 service.quit()


if __name__ == '__main__':
 mails = input("Emails eingeben: ").split()

 mail = Mail()
 mail.send(mails)

Sie können auch eine Blindkopie hinzufügen, indem Sie das Attribut Bcc in der MIMEMultipart-Instanz verwenden

Hinzufügen von Anhängen

Anhänge können Bilder, PDFs, Dokumente, Blätter usw. sein. In der Klasse email.mime es gibt eine Funktion namens MIMEBase . Sie wird verwendet, um Anhänge zur E-Mail hinzuzufügen.

Fügen wir der obigen E-Mail einen Anhang hinzu

import smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from pathlib import Path


class Mail:

 def __init__(self):
...

 def send(self, emails):
 ## login...
        
 for email in emails:
 ## MIMEMultipart-Instanz

 ## Text- und HTML-Vorlagen

 ## MIMEText-Instanzen

 ## Anhängen von Nachrichten an MIMEMultipart

 ## Anhängen eines Anhangs
 file_path = "Geekflare-logo.png"
 mimeBase = MIMEBase("application", "octet-stream")
 with open(file_path, "rb") as file:
 mimeBase.set_payload(file.read())
 encoders.encode_base64(mimeBase)
 mimeBase.add_header("Content-Disposition", f "attachment; filename={Path(file_path).name}")
 mail.attach(mimeBase)

 ## Senden von Mails

 service.quit()


if __name__ == '__main__':
 mails = input("Enter emails: ").split()

 mail = Mail()
 mail.send(mails)

Mail an Massenmails auf einmal

Wir haben eine Schleife verwendet, um die gleiche Mail an mehrere Mitglieder zu senden. Das ist der eine Fall (wenn Sie nicht wollen, dass die Empfänger von anderen Empfängern wissen)

Nehmen wir an, Sie müssen dieselbe E-Mail an 1000 Mitglieder derselben Gruppe auf einmal senden. In solchen Fällen ist die Verwendung einer Schleife nicht sinnvoll. Wir können mehrere E-Mails in dem Feld Eine im allgemeinen Mail Compose einfügen. Wie macht man das in einem Python-Skript?

Wir müssen die Liste der E-Mails als String kombinieren, der durch einen Komma und ein Leerzeichen getrennt ist. Wir können die join-Methode string verwenden, um alle E-Mails zu einem String zusammenzufassen. Sehen Sie sich den Code zum Kombinieren von E-Mails als String an

", ".join(emails)

Ersetzen Sie das Feld Eine im obigen Skript durch die obige Zeichenfolge. Das war's, Sie haben die E-Mail auf einmal an Massen-E-Mails gesendet.

Fazit

Es gibt einige Bibliotheken von Drittanbietern, um E-Mails in Python zu versenden. Einige von ihnen sind Briefumschläge, Yagmail, Flanker usw. Diese Bibliotheken helfen uns, Skripte mit wenigen Zeilen Code zu schreiben. Sie können sie auch ausprobieren

Jetzt können Sie Ihre E-Mails mit Python-Skripten automatisieren. Die Struktur des E-Mail-Versand wird je nach Anwendungsfall unterschiedlich sein. Wir haben verschiedene Szenarien für den Versand von E-Mails gesehen. Sie können die im Tutorial besprochenen Skripte leicht an Ihren Anwendungsfall anpassen. Ich habe die Referenz aus diesem Artikel übernommen

Viel Spaß beim Programmieren 🙂

  • Hafeezul Kareem Shaik
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder