1. 程式人生 > >python 實現傳送郵件(圖片和圖表直接在文字區顯示)

python 實現傳送郵件(圖片和圖表直接在文字區顯示)

# coding: utf-8

import os

import smtplib

import logging

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.mime.image import MIMEImage

import traceback

smtpaddr = "smtp.163.com"

logger = logging.getLogger(__name__)

logger.setLevel(logging.INFO)

handler = logging.FileHandler('email.log')

handler.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

handler.setFormatter(formatter)

logger.addHandler(handler)

msgIma = ""

msghtml = ""

def sendmail(content_dict):

 logger.info('now entering sendmail...')

 if content_dict['from_user'] == '' or not len(content_dict['to_user']):

 print('from_user or to_user is empty!')

 logger.error('from_user or to_user is empty!')

 return

 if 'work_dir' not in content_dict.keys():

 print('directory error!')

 logger.error('directory is empty!')

 return

 global msghtml, msgIma

 insert_image(content_dict)

 read_html(content_dict)

 msg = msgIma + msghtml

 if msg == '':

 print ('pic_num and html_num all is empty')

 logger.error('pic_num and html_num all is empty')

 return

 mail_msg = MIMEMultipart('related')

 if not isinstance(content_dict['subject'], unicode):

 content_dict['subject'] = unicode(content_dict['subject'], 'utf-8')

 mail_msg['Subject'] = content_dict['subject']

 mail_msg['From'] = content_dict['from_user']

 mail_msg['To'] = ','.join(content_dict['to_user'])

 mail_msg.attach(MIMEText(msg, 'html', 'utf-8'))

 read_image(content_dict)

 try:

 s = smtplib.SMTP()

 s.connect(smtpaddr)

 s.login(content_dict['from_user'], content_dict['password'])

 s.sendmail(mail_msg['From'], content_dict['to_user'], mail_msg.as_string())

 s.quit()

 print('success')

 except e:

 print "Error: unable to send email", e

 print traceback.format_exc()

def insert_image(content_dict):

 index = 0

 global msgIma

 for item in content_dict['pic_name']:

 if os.path.isfile(os.path.join(content_dict['work_dir'], item)):

 msgIma += '''<p style="text-align:center"><img alt="" src="cid:image''' + str(index) + ''' " width="800" height="600"></p> '''

index += 1

def read_html(content_dict):

 global msghtml

 for item in content_dict['html_name']:

 if os.path.isfile(os.path.join(content_dict['work_dir'], item)):

 with open(os.path.join(content_dict['work_dir'], item), "r+") as file_handle:

 msghtml += file_handle.read()

def read_image(content_dict):

 index = 0

 for item in content_dict['pic_name']:

 if os.path.isfile(os.path.join(content_dict['work_dir'], item)):

 with open(os.path.join(content_dict['work_dir'], item), 'rb') as data: # picture path

 msgImage = MIMEImage(data.read())

 msgImage.add_header('Content-ID', '')

 mail_msg.attach(msgImage)

 index += 1

if __name__ == '__main__':

 fromaddr = "*********************"

 toaddrs = ["*********************"]

 pic_name = ['1.jpg', '2.png']

 html_name = ['3.html']

 work_dir = 'd:\\python\\'

 subject = "title"

 password = "************"

 content_dict = {'to_user': toaddrs, 'from_user': fromaddr, 'pic_name': pic_name, 'html_name': html_name,

 'work_dir': work_dir, 'subject': subject, 'password': password}

 sendmail(content_dict)

​

note:

​Directly in the text box of email display images and HTML

​Use in internship company

# coding: utf-8

import os

import smtplib

import logging

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.mime.image import MIMEImage

import traceback

smtpaddr_1 = "10.64.1.86" 

smtpaddr_2 = "10.64.1.85"

server = "10.204.16.7"

logger = logging.getLogger(__name__)

logger.setLevel(logging.INFO)

handler = logging.FileHandler('email.log')

handler.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

handler.setFormatter(formatter)

logger.addHandler(handler)

msgIma = ""

msg_html = ""

mail_msg = MIMEMultipart('related')

def sendmail(content):

 logger.info('now entering sendmail...')

 if content['from_user'] == '' or not len(content['to_user']):

 print('from_user or to_user is empty!')

 logger.error('from_user or to_user is empty!')

 return

 if 'work_dir' not in content.keys():

 print('directory error!')

 logger.error('directory is empty!')

 return

 global msg_html, msgIma, mail_msg

 insert_image(content)

 read_html(content)

 msg = msgIma + msg_html

 if msg == '':

 print ('pic_num and html_num all is empty')

 logger.error('pic_num and html_num all is empty')

 return

 if not isinstance(content['subject'], unicode):

 content['subject'] = unicode(content['subject'], 'utf-8')

 mail_msg['Subject'] = content['subject']

 mail_msg['From'] = content['from_user']

 mail_msg['To'] = ','.join(content['to_user'])

 mail_msg.attach(MIMEText(msg, 'html', 'utf-8'))

 read_image(content)

 try:

 s = smtplib.SMTP()

 s.connect(server)

s.sendmail(mail_msg['From'], content['to_user'], mail_msg.as_string())

 s.quit()

 print('success')

 except Exception as e:

 print "Error: unable to send email", e

 print traceback.format_exc()

def insert_image(content):

 index = 0

 global msgIma

 for item in content['pic_name']:

 if os.path.isfile(os.path.join(content['work_dir'], item)):

 msgIma += '''<p> style="text-align:center"><img alt="" src="cid:image''' + str(index) + ''' " width="800" height="600"> </p> '''

 index += 1

def read_html(content):

 global msg_html

 for item in content['html_name']:

 if os.path.isfile(os.path.join(content['work_dir'], item)):

 with open(os.path.join(content['work_dir'], item), "r+") as file_handle:

 msg_html += file_handle.read()

def read_image(content):

 index = 0

 global mail_msg

 for item in content['pic_name']:

 if os.path.isfile(os.path.join(content['work_dir'], item)):

 with open(os.path.join(content['work_dir'], item), 'rb') as data: # picture path

 msg_image = MIMEImage(data.read())

 msg_image.add_header('Content-ID', '')

 mail_msg.attach(msg_image)

 index += 1

if __name__ == '__main__':

 fromaddr = "
[email protected]
" toaddrs = ["[email protected]"] pic_name = [''] html_name = ['3.html'] work_dir = 'd:\\python\\' subject = "title" content_dict = {'to_user': toaddrs, 'from_user': fromaddr, 'pic_name': pic_name, 'html_name': html_name, 'work_dir': work_dir, 'subject': subject} sendmail(content_dict)

相關推薦

python 實現傳送郵件(圖片圖表直接文字顯示)

# coding: utf-8 import os import smtplib import logging from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from emai

python實現傳送郵件

本文目錄 一 使用SMTP模組傳送郵件 二 傳送html格式郵件 三 傳送帶附件的郵件  四 Django傳送郵件 各大郵箱smtp伺服器及埠  qq郵箱配置smtp   一 使用SMTP模組傳送郵件

python 自動傳送郵件報表,正文插入圖片,帶附件

# -*- coding: utf-8 -*- """ Created on Wed Aug 15 17:44:33 2018 @author: cp """ from email.mime.text import MIMEText from email.mime.mul

python傳送郵件(普通文字檔案、附件、圖片等)

1、傳送普通文字檔案 #coding=utf-8 import smtplib from email.mime.text import MIMEText from email.header import Header host = 'smtp.126.com' # 設定

【Python3爬蟲】用Python實現傳送天氣預報郵件

此次的目標是爬取指定城市的天氣預報資訊,然後再用Python傳送郵件到指定的郵箱。   一、爬取天氣預報 1、首先是爬取天氣預報的資訊,用的網站是中國天氣網,網址是http://www.weather.com.cn/static/html/weather.shtml,任意選擇一個城市(比如武漢

Python smtplib傳送郵件 包含文字、附件、圖片

解決之前版本的問題,下面為最新版 #!/usr/bin/env python # coding:gbk """ FuncName: sendemail.py Desc: sendemail with text,image,audio,application... Dat

Python-SMTP傳送郵件(HTML、圖片、附件)

前言: SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。 一、Python傳送HTML郵件 # -*- coding: utf-8 -*- # @Time : 2018/6/6 上午11:

iOS 實現傳送郵件簡訊

- (void)businessContactWithMail { Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); if (mailClass != nil) { // We

Glide實現查看圖片保存圖片到手機

查看圖片 otf asynctask tlist bitmap ready env pic blank 兩種方式, 推薦方式一 方式一 downloadOnly 創建一個 ImageActivity public class ImageActivity exte

python 實現普通用戶管理員用戶不同角色登錄不同功能小程序

amount 密碼錯誤 urn clas data cart passwd with open 密碼 程序功能描述如下:不同角色登錄,普通用戶可以查看商品購買商品、查看購物車和余額、退出;管理員可以充值,可以添加商品、退出 用戶信息字典格式: {"user1":{"pass

Python 實現識別弱圖片驗證碼

data- info clas 明顯 standard 滑動驗證 管理工具 named 實驗室 目前,很多網站為了防止爬蟲肆意模擬瀏覽器登錄,采用增加驗證碼的方式來攔截爬蟲。驗證碼的形式有多種,最常見的就是圖片驗證碼。其他驗證碼的形式有音頻驗證碼,滑動驗證碼等。圖片驗證碼

使用opencv實現視訊分解圖片圖片合成視屏

# 視訊分解成圖片 import cv2 cap = cv2.VideoCapture("22.mp4") # 獲取開啟的控制代碼 isOpened = cap.isOpened # 判斷是否開啟 print(isOpened) fps = cap.get(cv2.CAP_PROP_FPS) w

【深度學習】基於im2col的展開Python實現卷積層池化層

一、回顧 上一篇 我們介紹了,卷積神經網的卷積計算和池化計算,計算過程中視窗一直在移動,那麼我們如何準確的取到視窗內的元素,並進行正確的計算呢? 另外,以上我們只考慮的單個輸入資料,如果是批量資料呢? 首先,我們先來看看批量資料,是如何計算的 二、批處理 在神經網路的

單純java程式碼實現傳送郵件

 這個是工具類直接執行main方法就可以傳送郵箱,細節方面看我另一篇文章 https://mp.csdn.net/postedit/84307897 package com.bgs.controller; import javax.mail.Authenticator

Appium+python 自動傳送郵件(2)

移動端執行完測試case之後,通過郵件自動傳送測試報告。大體流程如下: 1、通過unittest框架的discover()發現所有測試用例 2、使用HTMLTestRunner的run()方法執行測試用例,生成HTML測試報告 3、尋找測試報告目錄下的最新測試報告,返回最新測試報告的路徑 4、將最新測

Python實現根據指定圖片生成詞雲

效果 生成詞雲前 生成詞雲後 實現 新建imageWordCloud.py 在同級目錄下新建aobama.txt,裡面內容是英文單詞(奧巴馬演講稿) 在同級目錄下放一張照片bg.jpg,根據這張照片來生成詞雲 程式碼帶註釋: from os import

node.js實現傳送郵件功能

準備事項 QQ郵箱設定:進入QQ郵箱->設定->賬戶->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務->開啟POP3/SMTP服務,並複製pass祕鑰 安裝nodemailer :npm install nodem

python實現word批註 pandocpypandoc

pypandoc就是pandoc的pip包版本 接下來說一說在mac和ubuntu安裝的時候出現的問題 在mac和ubuntu都出現了問題:系統自帶1.19.2.1pandoc Mac: brew uninstall pandoc之後,利用pandoc --vers

log4j實現傳送郵件功能

引言 最近預上線的一個機器人專案,因為這個專案中有很多的AI的東西,整個專案分為三部分組成,web工程——FS——NLU,整個web工程都是由我來負責,後面兩部分有大資料部門的東西負責,因為後面這兩部分對於我們貸後行業來說都是比較超前的,所以在整個連調的過程中會有很多的異常

利用python實現簡單的httphttps伺服器

http伺服器程式碼: #!/usr/bin/python3 #python version 3.7 import sys from http import server from http.server import SimpleHTTPRequestHandler if sys.ar