[PYTHON] Senden Sie Newsletter auf einmal mit Google Mail

Motivation

Ich beschloss, die Geschichte ernsthaft im Radio zu veröffentlichen. Es ist wichtig, viel zu posten, um die Anzahl der Einstellungen zu erhöhen, und Sie müssen viel senden. In der Zwischenzeit fand ich die E-Mail nervig. Grundsätzlich wird das Material per E-Mail verschickt. Eine Geschichte für jede Kopie. 10 E-Mails zum Versenden von 10 Geschichten ... Also beschloss ich, etwas zu machen, das alle Nachrichten auf einmal verschickt.

Vorbereitung

  1. Aktivieren Sie die APIs "Google Sheet" und "Google Drive" des Kontos, das die JSON-Datei automatisch sendet und abruft.
  2. Benennen Sie die JSON-Datei um.
  3. Erstellen Sie eine Datei, um den Code zu schreiben.
  4. Speichern Sie json im selben Ordner

Kalkulationstabelle

Ich habe zwei Blätter verwendet und die Blattnamen waren "Index" und "Main". Der Inhalt ist wie folgt. -Index: Zählen Sie E-Mail-Adresse und Passwort, Ziel, Absender, Funkname, Adresse, Name -Main: Betreff, Material, Erstellungsdatum, Übertragungsdatum, Status, Ergebnis

Index スクリーンショット 2020-09-06 17.17.54.png Main スクリーンショット 2020-09-06 17.16.34.png

Bibliotheksinstallation

$ pip install gspread oauth2client

Code

send.py


#E-Mail senden Beziehungen
from email.mime.text import MIMEText
from email.utils import formatdate
import smtplib
#API-Kooperationsbeziehung
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import datetime
from pprint import pprint 

scope = ["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive"]

creds = ServiceAccountCredentials.from_json_keyfile_name("creds.json", scope)

client = gspread.authorize(creds)

SPREADSHEET_KEY = '******************************************'
sheet1= client.open_by_key(SPREADSHEET_KEY).worksheet('Index')
sheet2= client.open_by_key(SPREADSHEET_KEY).worksheet('Main')

# Index
_id        = sheet1.cell(2,1).value
_pass      = sheet1.cell(2,2).value
_from      = sheet1.cell(4,1).value
_to        = sheet1.cell(4,2).value
_radioName = sheet1.cell(4,3).value
_name      = sheet1.cell(6,1).value
_address   = sheet1.cell(8,1).value

#Alle Werte werden einer Variablen namens data zugewiesen.
data = sheet2.get_all_records()

#Holen Sie sich die Anzahl der Daten
last_number = len(data)

# pprint(data)

for row in range(last_number):
    #Übertragungsurteil
    status = data[row]["Ergebnis"]
    if status == "Erledigt":
        continue
    #Extrahieren Sie die Informationen, die zum Senden einer E-Mail erforderlich sind
    body = data[row]["Neta"]
    radioName = "Funkname:" + _radioName
    msg = MIMEText(body + "\n\n" + radioName + "\n\n" + _address + "\n\n" + _name)
    #Blattaktualisierung
    now = datetime.datetime.now()
    sheet2.update_cell(row + 2, 5 , now.strftime("%Y/%m/%d %H:%M:%S.%f"))
    sheet2.update_cell(row + 2, 6, "geschickt")
    sheet2.update_cell(row + 2, 7, "Erledigt")

    msg['Subject'] = data[row]["Gegenstand"]
    msg['From'] = _from
    msg['To'] = _to
    msg['Date'] = formatdate()

    # pprint(msg)

    smtp = smtplib.SMTP('smtp.gmail.com', 587)
    smtp.ehlo()
    smtp.starttls()
    smtp.ehlo()
    smtp.login(_id, _pass)
    smtp.send_message(msg)
    smtp.close()

Ergänzung

In der Python2-Serie wird der folgende Fehler angezeigt.

python


Traceback (most recent call last):
  File "send.py", line 6, in <module>
    import gspread
ModuleNotFoundError: No module named 'gspread'

Alles was ich tun muss ist das 3. System zu installieren, aber ich habe nicht viel über Python gelernt, also blieb ich einige Stunden stecken.

Referenz

https://qiita.com/njn0te/items/4318347f8c4ed5137476

Recommended Posts

Senden Sie Newsletter auf einmal mit Google Mail
Ersetzen Sie alles auf einmal durch sed
Senden Sie mit Python mit Google Mail
Senden Sie mit Django ganz einfach E-Mails mit Google Mail
Senden Sie E-Mails über Google Mail mit Python 3.4.3.
Konvertieren Sie Memos sofort mit Python 2to3
Löschen Sie alle unnötigen Google Mail-E-Mails mit API
So speichern Sie alle Instagram-Fotos auf einmal
Löschen Sie Bilddateien sofort mit einem Liner
Senden Sie Google Mail am Ende des Vorgangs [Python]
Aktualisieren Sie mehrere Tabellen gleichzeitig mit pandas to_sql
Konvertieren Sie mehrere Protodateien gleichzeitig mit Python
Holen Sie sich sofort die Firmennummer über gbizinfo mit Python
Grenzwerte, die mit MeCab sofort analysiert werden können
Mail mit Django senden
Mail per Python senden
Senden Sie Google Mail in Python
[Python] Senden Sie eine E-Mail aus Google Mail mit einer zweistufigen Authentifizierungseinstellung
Laden Sie Wikipedia-Flaggenbilder auf einmal herunter [Python] [Schöne Suppe]
Erstellen Sie mit Ansible Playbook mehrere Benutzer mit Seriennummern gleichzeitig