Kuidas saata e-kirju Pythoniga: Täielik Gmaili juhend

1. Sissejuhatus

E-posti saatmine Pythoniga on väga kasulik oskus nii isiklike rakenduste kui ka ärisüsteemide jaoks. Näiteks saab seda kasutada automaatselt kasutajatele teavituste saatmiseks rakendusest või süsteemi vealogide reaalajas edastamiseks administraatoritele. Samuti, koodi kaudu e-posti saatmisega käsitsi saatmise asemel, saate tõhusalt hallata e-posti kohaletoimetamist ja oluliselt lihtsustada igapäevaseid ülesandeid.
Python sisaldab oma standardraamatukogus smtplib-i, mis võimaldab põhilist e-posti saatmist ilma välistest moodulitest sõltumata. Selles artiklis selgitame Pythoniga e-posti saatmise põhilist seadistust ja samme ning tutvustame praktilisi meetodeid reaalse koodinäidete abil. Käsitleme ka üksikasjalikult edasijõudnud teemasid, nagu HTML-vormindatud e-kirjad, manustega e-kirjade saatmine, Gmaili turvaseaded, e-posti saatmine jaapani keeles ning masssaadetised mitmele adressaadile.
Lõpuks, pärast selle juhendi läbimist, suudate Pythoniga e-posti hõlpsasti saata ja omandate teadmised, kuidas seda erinevates olukordades rakendada.

2. Kuidas saata e-posti Pythoniga

E-posti saatmiseks Pythoniga kasutage standardraamatukogu smtplib. See teek võimaldab e-posti saata SMTP‑serveri kaudu lihtsalt koodi kirjutades. Allpool anname üksikasjaliku ülevaate smtplib‑moodulist ja põhilistest sammudest e-posti saatmiseks.

Smtplib‑mooduli sissejuhatus

Smtplib‑moodul on osa Pythoni standardraamatukogust ja toetab SMTP‑kliendiprotokolli. Selle mooduli abil saate Pythonist otse SMTP‑serveriga ühenduda ja e-posti saata.

Smtplib‑mooduli põhifunktsioonid

  • Suhtleb hõlpsasti SMTP‑serveritega.
  • Täiendavaid välist mooduleid ei vajata; see on Pythoniga kaasas, seega pole vaja täiendavat seadistust.
  • Toetab turvaseadeid ja veahaldust.

E-posti saatmise põhisammud

Nüüd juhatame teid läbi põhisammude, kuidas Pythoniga e-posti saata. Järgides allolevaid samme, saate e-posti hõlpsasti saata.

1. Kuidas ühenduda SMTP‑serveriga

Esiteks peate looma ühenduse SMTP‑serveriga. See on e-posti saatmise lähtepunkt. Tavaliselt kasutate sageli Gmaili, Yahoo Maili või Outlooki pakutavaid SMTP‑servereid, kuid on võimalik kasutada ka ettevõtte pühendatud SMTP‑serverit.

import smtplib

# SMTP server settings
smtp_server = "smtp.example.com"  # Example: For Gmail, use "smtp.gmail.com"
smtp_port = 587  # Common port number. For Gmail, use 587

2. Sisselogimise autentimise seadistamine

Pärast ühenduse loomist SMTP‑serveriga logige sisse saatja e-posti aadressi ja parooliga. Gmaili kasutamisel võivad olla vajalikud täiendavad turvaseaded.

# Email account information
username = "your_email@example.com"
password = "your_password"

# Connect and log in to the SMTP server
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()  # Establish a secure connection
server.login(username, password)

3. E-kirja loomine ja saatmine

Järgmisena looge e-kirja sisu. Määrake adressaadi aadress, teema ja sisutekst ning saatke see SMTP‑serveri kaudu.

# Email sending information
to_address = "recipient@example.com"
subject = "Test email"
body = "This email was sent from Python."

# Email format
message = f"Subject: {subject}

{body}"

# Send email
server.sendmail(username, to_address, message)
print("Email has been sent!")

4. Olulised punktid veahalduses

Ühendus SMTP‑serveriga ja e-posti saatmine võivad tekitada ootamatuid vigu. Seetõttu kasutage try‑except‑plokke, et käsitleda vigu asjakohaselt.

try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(username, password)
    server.sendmail(username, to_address, message)
    print("The email was sent successfully!")
except Exception as e:
    print("Email send error:", e)
finally:
    server.quit()  # Close the connection

Kokkuvõte

See katab Pythoniga e-kirja saatmise põhiprotseduuri. Kui olete selle voo õppinud, saate e-kirju automatiseerida, saata mitu sõnumit korraga ja rakendada seda mitmel viisil. Järgmises jaotises vaatame üksikasjalikult, kuidas saata lihttekstiga e-kirju, HTML-e-kirju ja e-kirju lisadega, kasutades tegelikke koodinäiteid.

侍エンジニア塾

3. Praktiline: Pythonis e-kirja saatmise koodinäited

Siit edasi esitame tegelikke koodinäiteid Pythoniga e-kirja saatmiseks. Selgitame samm-sammult, kuidas saata lihttekstiga e-kirju, HTML-e-kirju ja e-kirju lisadega.

Lihttekstiga e-kirjade saatmine

Esiteks, siin on, kuidas saata kõige lihtsam vorm: lihttekstiga e-kiri. Kasutame smtplib moodulit lihtsa tekstisõnumi saatmiseks.

Koodinäide

import smtplib

# Email account information
smtp_server = "smtp.example.com"
smtp_port = 587
username = "your_email@example.com"
password = "your_password"

# Recipient and contents
to_address = "recipient@example.com"
subject = "Plain text email test"
body = "This is a plain text email sent from Python."

# Email format
message = f"Subject: {subject}

{body}"

try:
    # Connect to the server
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(username, password)
    server.sendmail(username, to_address, message)
    print("Plain text email sent!")
except Exception as e:
    print("Email send error:", e)
finally:
    server.quit()

HTML-e-kirjade saatmine

Järgmiseks selgitame, kuidas saata HTML-vormingus e-kirju. HTML-e-kirjade kasutamine võimaldab keha stiliseerida ja linke lisada. Kui lisate HTML-koodi e-kirja kehale, kasutage email.mime moodulit HTML-i õigeks käsitlemiseks.

Koodinäide

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

# Email account information
smtp_server = "smtp.example.com"
smtp_port = 587
username = "your_email@example.com"
password = "your_password"

# Recipient and contents
to_address = "recipient@example.com"
subject = "HTML email test"
html_content = '''
<html>
  <body>
    <h1>Hello</h1>
    <p>This is an HTML-formatted email sent from <strong>Python</strong>.</p>
    <a href="https://example.com">Click here</a>
  </body>
</html>
'''

# Create the email
message = MIMEMultipart()
message["From"] = username
message["To"] = to_address
message["Subject"] = subject
message.attach(MIMEText(html_content, "html"))

try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(username, password)
    server.sendmail(username, to_address, message.as_string())
    print("HTML email sent!")
except Exception as e:
    print("Email send error:", e)
finally:
    server.quit()

E-kirjade saatmine lisadega

Järgmiseks näitame, kuidas saata e-kirju failidega lisatud. Näiteks saate oma e-kirjale PDF-i või pilte lisada. See kasutab email.mime moodulist MIMEBase klassi.

Koodinäide

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# Email account information
smtp_server = "smtp.example.com"
smtp_port = 587
username = "your_email@example.com"
password = "your_password"

# Recipient and contents
to_address = "recipient@example.com"
subject = "Test email with attachment"
body = "I have attached a file. Please check it."

# Create the email
message = MIMEMultipart()
message["From"] = username
message["To"] = to_address
message["Subject"] = subject
message.attach(MIMEText(body, "plain"))

# Attach file
filename = "example.pdf"  # Name of the file to attach
with open(filename, "rb") as attachment:
    part = MIMEBase("application", "octet-stream")
    part.set_payload(attachment.read())
    encoders.encode_base64(part)
    part.add_header("Content-Disposition", f"attachment; filename={filename}")
    message.attach(part)

try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(username, password)
    server.sendmail(username, to_address, message.as_string())
    print("Email with attachment sent!")
except Exception as e:
    print("Email send error:", e)
finally:
    server.quit()

Kokkuvõte

Kasutades ülaltoodud koodinäiteid, saate Pythoniga saata erinevat tüüpi e‑kirju. Vastavalt oma vajadustele võite valida tavalise teksti, HTML‑i või manustega e‑kirjade vahel. Järgnevas jaotises kasutame Gmaili näitena, et selgitada konkreetseid seadistusi ja ettevaatusabinõusid konkreetse SMTP‑serveri kasutamisel.

4. E‑kirjade saatmine Gmailiga

See jaotis selgitab üksikasjalikult, kuidas saata Gmaili kaudu e‑kirju Pythoniga. Gmail on laialdaselt kasutusel ja pakub SMTP‑serverit, millele Pythoniprogrammid saavad hõlpsasti ligi. Kuid Gmaili kaudu e‑posti saatmine nõuab mõningaid turvaseadeid.

Gmaili SMTP seaded

Gmaili kaudu e‑posti saatmiseks kasutage järgmist SMTP‑serveri teavet:

  • SMTP server : smtp.gmail.com
  • Port : 587 (kasuta TLS‑i) või 465 (kasuta SSL‑i)
  • Autentimine : Nõutav

Põhilise seadistuse koodinäide

import smtplib
from email.mime.text import MIMEText

# Gmail SMTP server settings
smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your_email@gmail.com"
password = "your_password"

# Recipient and content
to_address = "recipient@example.com"
subject = "Test email from Gmail"
body = "This email was sent through Gmail from Python."

# Create the email content
message = MIMEText(body)
message["From"] = username
message["To"] = to_address
message["Subject"] = subject

try:
    # Connect to the server and send the email
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()  # Use TLS to enhance security
    server.login(username, password)
    server.sendmail(username, to_address, message.as_string())
    print("The email was sent using Gmail!")
except Exception as e:
    print("Email sending error:", e)
finally:
    server.quit()

Turvakaitsed

Gmaili konto kasutamisel peaksite oma turvaseadeid üle vaatama. Gmail kehtestab tavaliselt turvapiiranguid juurdepääsule kolmandate osapoolte rakendustest. Seetõttu on Pythonist juurdepääsu puhul vajalikud järgmised sammud.

Rakenduse parooli hankimine

  1. Luba kaheastmeline autentimine : Lülita Gmaili konto seadetes sisse 2‑astmeline kinnitamine. See võimaldab rakenduse parooli genereerida.
  2. Genereeri rakenduse parool : Gmaili konto seadetes > Turvalisus > Rakenduse paroolide alt loo oma Pythoniprogrammile eraldi rakenduse parool. Seda parooli kasutatakse tavapärase sisselogimisparooli asemel.

Märkused

  • Rakenduse paroolide haldamine : Hoia rakenduse paroolid rangelt konfidentsiaalsed ja turvalised.
  • Konto turvalisus : Rakenduse paroolide kasutamist soovitatakse, et aidata vältida volitamata juurdepääsu teie Gmaili kontole.

Koodinäide (rakenduse parooliga)

Kui rakenduse parooli kasutamisel, näeb kood välja selline.

import smtplib
from email.mime.text import MIMEText

smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your_email@gmail.com"
app_password = "your_app_password"  # Use an app password instead of your regular password

to_address = "recipient@example.com"
subject = "Test email from Gmail using an app password"
body = "This email was sent from Gmail using an app password."

message = MIMEText(body)
message["From"] = username
message["To"] = to_address
message["Subject"] = subject

try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(username, app_password)
    server.sendmail(username, to_address, message.as_string())
    print("The email was sent using Gmail!")
except Exception as e:
    print("Email sending error:", e)
finally:
    server.quit()

Kokkuvõte

Kui saadate e-kirju Pythonist Gmaili kaudu, on teie konto turvaseaded olulised. Rakenduse parooli kasutamine võimaldab e-kirju turvalisemalt saata. Järgmine jaotis tutvustab Pythonis täiendavaid e-kirja saatmise tehnikaid, sealhulgas saatmist mitmele saajale, ajakavastatud automatiseeritud saatmist ja e-kirjade saatmist jaapani keeles.

5. Täiendavad rakendused: E-kirja saatmise tehnikad

Siit edasi käsitleme Pythonis täiendavaid e-kirja saatmise tehnikaid. See jaotis selgitab praktilisi meetodeid, nagu masssaatmine mitmele saajale, ajakavastatud e-kirjade automatiseerimine ja e-kirjade saatmine jaapani keeles.

Saatmine mitmele saajale

Pythoniga saate sõnumi korraga mitmele saajale saata. E-kirja „To“, „Cc“ ja „Bcc“ väljade õige seadistamise ja saajate nimekirjana haldamisega muutub masssaatmine lihtsaks.

Koodinäide

Allpool on koodinäide, mis määrab mitu saajat „To“ väljal.

import smtplib
from email.mime.text import MIMEText

# SMTP server info
smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your_email@gmail.com"
password = "your_app_password"

# Recipient list
to_addresses = ["recipient1@example.com", "recipient2@example.com"]
subject = "Test email to multiple recipients"
body = "This email was sent to multiple recipients at once."

# Create the email
message = MIMEText(body)
message["From"] = username
message["To"] = ", ".join(to_addresses)  # Separate multiple recipients with commas
message["Subject"] = subject

try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(username, password)
    server.sendmail(username, to_addresses, message.as_string())
    print("The email to multiple recipients has been sent!")
except Exception as e:
    print("Email sending error:", e)
finally:
    server.quit()

Ajakavastatud e-kirja saatmise automatiseerimine

Et e-kirju perioodiliselt saata, on kasulik ajakava seada. Pythonil on teegid nagu „schedule“ ja „time“ moodul korduvate ülesannete käivitamiseks ajavahemike alusel. Näiteks saate kokku panna skripti, mis saadab e-kirju automaatselt kindlal ajal.

Koodinäide (Ajakavastatud saatmine kasutades schedule)

import smtplib
from email.mime.text import MIMEText
import schedule
import time

def send_email():
    smtp_server = "smtp.gmail.com"
    smtp_port = 587
    username = "your_email@gmail.com"
    password = "your_app_password"
    to_address = "recipient@example.com"
    subject = "Scheduled email"
    body = "This is an email sent on a regular schedule."

    message = MIMEText(body)
    message["From"] = username
    message["To"] = to_address
    message["Subject"] = subject

    try:
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()
        server.login(username, password)
        server.sendmail(username, to_address, message.as_string())
        print("Email has been sent!")
    except Exception as e:
        print("Email sending error:", e)
    finally:
        server.quit()

# Send the email every day at 9:00 AM
schedule.every().day.at("09:00").do(send_email)

while True:
    schedule.run_pending()
    time.sleep(1)

See skript saadab automaatselt e‑kirja iga päev määratud ajal (siin, 9:00).

E‑kirjade saatmine jaapani keeles

Jaapani keeles e‑kirjade saatmisel Pythoniga tuleb pöörata tähelepanu kodeerimisele. Eriti pealkirjade ja sisutekstide puhul, mis sisaldavad jaapani keelt, tuleb sõnumeid seadistada kasutama UTF‑8 kodeeringut, et tagada korrektne edastamine.

Koodinäide (jaapani keele tugi)

import smtplib
from email.mime.text import MIMEText
from email.header import Header

smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your_email@gmail.com"
password = "your_app_password"
to_address = "recipient@example.com"

# Japanese subject and body
subject = Header("Test email in Japanese", "utf-8")
body = "This is an email sent in Japanese from Python."

message = MIMEText(body, "plain", "utf-8")
message["From"] = username
message["To"] = to_address
message["Subject"] = subject

try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(username, password)
    server.sendmail(username, to_address, message.as_string())
    print("The Japanese email has been sent!")
except Exception as e:
    print("Email sending error:", e)
finally:
    server.quit()

Kokkuvõte

Selles jaotises käsitlesime Pythonis e‑posti saatmise edasijõudnud tehnikaid. Mitmele adressaadile saatmise, ajastatud e‑kirjade automatiseerimise ja jaapani keele toe kasutamine muudab e‑posti saatmise praktilisemaks. Järgmine jaotis võtab artikli kokku ja vaatleb põhipunkte.

6. Kokkuvõte

See artikkel juhendas, kuidas Pythoniga e‑kirju saata, alates põhitõdedest kuni edasijõudnud tehnikateni. Kasutades Python’i standardraamatukogu “smtplib”, muutub e‑posti saatmine lihtsaks ja seda saab rakendada igapäevastes ülesannetes ja rakendustes.
Allpool on kokkuvõte igas jaotises õpitud põhipunktidest.

  1. E‑posti saatmise põhilised sammud
  • Sa õppisid, kuidas kasutada Python’i “smtplib” moodulit e‑posti saatmiseks SMTP‑serveri kaudu.
  • Käsitlesime ka töövoogu alates koostamisest kuni e‑posti saatmiseni ning veahaldamise tähtsust.
  1. Praktilised e‑posti saatmise koodinäited
  • Tutvustasime, kuidas saata lihtteksti e‑kirju, HTML‑e‑kirju ja manustega e‑kirju, igaühega kaasas koodinäited.
  • See võimaldas sul kohandada koodi erinevate e‑posti vormingute jaoks, et rahuldada erinevaid vajadusi.
  1. E‑posti saatmine Gmailiga
  • Selgitasime Gmaili SMTP‑serveri seadeid ja turvameetmeid, kasutades rakenduse paroole.
  • Kordasime, et Gmaili konto kasutamisel tuleb lubada kaheastmeline kinnitamine ja luua rakenduse parool.
  1. Edasijõudnud e‑posti saatmise tehnikad
  • Käsitlesime mitmele adressaadile saatmist, ajastatud e‑kirjade automatiseerimist ning jaapani keelse sisu töötlemise tehnikaid.
  • Eriti rõhutasime, et õige kodeerimise seadistused on olulised, kui saadetakse e‑kirju, mis sisaldavad jaapani keelt pealkirjas või sisus.

Kuidas seda juhendit kasutada

Seda juhendit järgides saate Pythoni abil luua automatiseeritud e-posti saatjaid, ajakavastatud teavitussüsteeme või teavitusrakendusi. Praktilise oskusena saate seda rakendada klienditoes, operatsioonide juhtimises või teavitus-teenuste osana.

E-posti saatmine Pythoniga saab rakendada paljudes ülesannetes ja kasutusalades ning selle mugavus ja paindlikkus võib äri jaoks väga kasulik olla. Proovige seda välja ja lisage see oma projektidesse.