python 傳送郵件

2021-09-14 00:55:17 字數 4438 閱讀 9251

學習一下我們利用python 傳送郵件的方法:

利用python 的smtplib 和來傳送乙份定時的郵件,能消除大部分的重複動作帶來的煩惱,實在是方便的很。

下面是乙個傳送郵件的方法,能傳送郵件給單個人,或者乙個組。具體方法在**裡有注釋,可以看**。

1、下面是乙個類來實現傳送郵件

#! /usr/bin/env python

# coding=utf-8

import smtplib

from email.mime.text import mimetext

from email.header import header

from smtplib import smtp_ssl

from email.mime.image import mimeimage

from email.mime.multipart import mimemultipart

from email.mime.text import mimetext

import re

import os

class send_email(object):

def __init__(self, host_server='smtp.qq.com', sender='這裡填傳送位址',

password='傳送位址的密碼', receiver=['接收郵件位址'], receiver_nick="收件人暱稱", *args, **kw):

self.host_server = host_server

self.sender = sender

self.password = password

self.receiver = receiver

self.receiver_nick = receiver_nick

def create_email(self, html, mail_title, reference=false, picture=false, *args, **kwargs):

"""這個方法用來傳送郵件,傳送的收件人和收件人在例項化物件的時候申明

:param reference: boolean 表示是否傳送附件,附件是乙個檔案

:param html:郵件預設是html格式,表示要傳送的html檔案,也就是郵件的主題部分

:param picture:[dict, path]在郵件中新增的的字典,key 為名字,value為,路徑是要求的名字和html中的id一致

:mail_title:在郵件中的郵件的主題

:return: 無

"""# 正文內容

msg = mimemultipart('related')

msg['subject'] = header(mail_title, 'utf-8')

msg['from'] = self.sender

msg['to'] = header(self.receiver_nick, "utf-8")

msgalternative = mimemultipart('alternative')

msg.attach(msgalternative)

# 郵件正文

mail_body = html

# 把html新增到郵件容器中

html = mimetext(mail_body, 'html', 'utf-8')

msgalternative.attach(html)

# 讀出傳進來的並轉成郵件格式

if picture:

if isinstance(picture, dict):

for k, v in picture.items():

msgimage = mimeimage(v)

msgimage.add_header("content-id", '')

msg.attach(msgimage)

# 輸入 包含檔名的 list

# 輸入 包含的資料夾, 需要檔名與html中檔案id一致

# 不符合要求的picture 路徑

elif exception:

print("輸入的的路徑有問題!請輸入物件和的名稱的字典,或者的資料夾,或者檔名的list")

# 郵件的正文完畢

# 開始新增附件 (附件只能新增乙個)

if reference:

if isinstance(reference, str):

with open(reference) as file:

refer = file.read()

att = mimetext(refer, 'base64', 'utf-8')

name = re.match(r'\\(.*)\.csv$', reference)

att["content-disposition"] = 'attachment; filename="' + name.group()

msg.attach(att)

if isinstance(reference, file):

refer = file.read()

name = re.match(r'\\(.*)\.csv$', refer)

att["content-disposition"] = 'attachment; filename="' + name.group()

msg.attach(att)

elif filenotfounderror:

print("請輸入正確格式的附件!!\n file 檔案 或者絕對路徑+檔名")

# 新增附件完成

# 傳送郵件

print('構造成功,傳送郵件')

host_server = self.host_server

sender = self.sender

password = self.password

receiver = self.receiver

smtp = smtp_ssl(host_server)

smtp.ehlo(host_server)

smtp.login(sender, password)

smtp.sendmail(sender, receiver, msg.as_string())

smtp.close()

print('郵件已傳送')

2、下面是main

import sys

import os

import time

work_path = "/data"

os.chdir(work_path)

from send_email import send_email

# 這一部分是郵件的正文內容

html = """

測試郵件

all,

這是python傳送的郵件

test = send_email(receiver=["收件人位址"]) # 這是乙個list 可以輸入收件位址來接收郵件。

test.create_email(html=html, mail_title='test', reference=false, picture=picture)

吶,現在你只要試一試這段**,就可以傳送郵件了,改一下一些必須的設定。

html傳送郵件 Python傳送郵件(三十)

簡單郵件傳輸協議 smtp 是一種協議,用於在郵件伺服器之間傳送電子郵件和路由電子郵件。python提供smtplib模組,該模組定義了乙個smtp客戶端會話物件,可用於使用smtp或esmtp偵聽器守護程式向任何網際網路機器傳送郵件。這是乙個簡單的語法,用來建立乙個smtp物件,稍後將演示如何用它...

python 傳送郵件

coding utf 8 import smtplib from email.mime.text import mimetext from email.header import header 檔案形式的郵件 def email file mail host smtp.qq.com 郵箱伺服器 ma...

python 傳送郵件

smtp mail transfer protocol 即簡單郵件傳輸協議,它是一組用於由源位址到目的位址傳送郵件的規則,由它來控制信件的中轉方式。python的smtplib提供了一種很方便的途徑傳送電子郵件。它對smtp協議進行了簡單的封裝。直接貼 coding utf 8 import smt...