python基于SMTP協(xié)議發(fā)送郵件
更新時(shí)間:2019年05月31日 08:33:28 作者:CarolLXW
這篇文章主要為大家詳細(xì)介紹了python基于SMTP協(xié)議發(fā)送郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了python基于SMTP協(xié)議發(fā)送郵件的具體代碼,供大家參考,具體內(nèi)容如下
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Time : 2018/5/31
@Author : LiuXueWen
@Site :
@File : sendEmail.py
@Software: PyCharm
@Description: 使用SMTP協(xié)議發(fā)送郵件,支持同時(shí)發(fā)送給多個(gè)地址,支持同時(shí)發(fā)送文本信息、超文本信息和多附件
"""
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import os
class properties():
# 設(shè)置服務(wù)器, "smtp.xx.com"
mail_host = "smtp.qq.com"
# 用戶名
mail_user = "@qq.com"
# 口令
mail_pass = ""
# smtp服務(wù)器端口,每個(gè)服務(wù)商提供的郵件服務(wù)端口可能不一致,465是騰訊的端口
mail_port = 465
# 發(fā)送郵件的地址
sender = "@vip.qq.com"
# 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱,list類型,可同時(shí)填寫多個(gè)地址并以,分割
receivers = "@qq.com","@qq.com"
# 郵件發(fā)送的內(nèi)容
messageText = "測(cè)試使用\n"
# 郵件發(fā)送的超文本內(nèi)容
messageHTML = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<img src="http://a.hiphotos.baidu.com/image/pic/item/730e0cf3d7ca7bcb6a172486b2096b63f624a82f.jpg" alt="test" width="200px" height="200px">
</body>
</html>
"""
# 發(fā)送郵件方的別名展示(類似昵稱),為空則顯示發(fā)件方地址
messageFromHeader = ""
# 接收郵件方的展示信息
messageToHeader = "test python"
# 郵件主題
messageSubject = "ceshiceshi123"
# 需要發(fā)送的附件的詳細(xì)地址,支持多附件發(fā)送,附件之間以,分割
filePaths = '1.txt','2.txt','3.txt'
def sendMail():
# 下面所有參數(shù)均可通過(guò)配置文件配置獲取
"""
:param mail_host: 設(shè)置服務(wù)器,"smtp.xx.com"
:param mail_user: 用戶名
:param mail_pass: 口令
:param sender: 發(fā)送郵件的地址
:param receivers: 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱
:param messageText: 郵件發(fā)送的文本內(nèi)容
:param messageHTML: 郵件發(fā)送的超文本內(nèi)容
:param messageFromHeader: 發(fā)送郵件方的別名展示(類似昵稱)
:param messageToHeader: 接收郵件方的展示信息
:param messageSubject: 郵件主題
:param filePath: 附件詳細(xì)地址
:return:
"""
# 需要獲取的參數(shù)列
mail_host = properties.mail_host
mail_user = properties.mail_user
mail_pass = properties.mail_pass
mail_port = properties.mail_port
sender = properties.sender
receivers = properties.receivers
messageText = properties.messageText
messageHTML = properties.messageHTML
messageFromHeader = properties.messageFromHeader
# 如果發(fā)件人昵稱未填寫則直接使用發(fā)件人地址作為名稱
if messageFromHeader == "":
messageFromHeader = sender
messageToHeader = properties.messageToHeader
messageSubject = properties.messageSubject
filePaths = properties.filePaths
# 郵件類型為"multipart/alternative"的郵件包括純文本正文(text / plain)和超文本正文(text / html)。
# 郵件類型為"multipart/related"的郵件正文中包括圖片,聲音等內(nèi)嵌資源。
# 郵件類型為"multipart/mixed"的郵件包含附件。向上兼容,如果一個(gè)郵件有純文本正文,超文本正文,內(nèi)嵌資源,附件,則選擇mixed類型。
message = MIMEMultipart('mixed')
# 郵件顯示信息內(nèi)容
# 發(fā)送郵件方的頭部展示信息
message['From'] = Header(messageFromHeader, 'utf-8')
# 接收郵件方的展示信息
message['To'] = Header(messageToHeader, 'utf-8')
# 郵件主題
message['Subject'] = Header(messageSubject, 'utf-8')
try:
# 發(fā)送郵件附件,支持多附件發(fā)送
for filePath in filePaths:
messageFile = open(filePath, 'rb').read()
message_file = MIMEText(messageFile, 'base64', 'utf-8')
message["Content-Type"] = 'application/octet-stream'
# 目前發(fā)送附件不能使用message_file["Content-Disposition"] = 'attachment; filename="aaa.txt"'方式發(fā)送信息
message_file.add_header('Content-Disposition', 'attachment', filename=os.path.basename(filePath))
# 附件內(nèi)容
message.attach(message_file)
except Exception as e:
print "附件發(fā)送失?。? + str(e)
# 一共三個(gè)參數(shù),第一個(gè)為發(fā)送文本信息,第二個(gè)發(fā)送類型,第三個(gè)發(fā)送信息的編碼。如果想要發(fā)送html類型的信息,僅需要修改第二個(gè)參數(shù)'plain'為'html'即可
# 文本信息,使用‘plain'屬性不能正常顯示
message_text = MIMEText(messageText, 'html', 'utf-8')
message.attach(message_text)
# 超文本信息
message_html = MIMEText(messageHTML, 'html', 'utf-8')
message.attach(message_html)
try:
# 因?yàn)楝F(xiàn)在很多服務(wù)商做了安全驗(yàn)證,所有在發(fā)送郵件的時(shí)候需要把原來(lái)的smtplib.SMTP()改成現(xiàn)在的smtplib.SMTP_SSL()方式
smtpObj = smtplib.SMTP_SSL()
# 鏈接郵件服務(wù)器
smtpObj.connect(mail_host, mail_port)
# 登錄郵件系統(tǒng)
smtpObj.login(mail_user, mail_pass)
# 發(fā)送郵件信息
smtpObj.sendmail(sender,receivers,message.as_string())
print "郵件發(fā)送成功"
except Exception as e:
print("郵件發(fā)送失敗,錯(cuò)誤信息:" + str(e))
if __name__ == '__main__':
sendMail()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- python使用smtplib模塊發(fā)送郵件
- Python SMTP配置參數(shù)并發(fā)送郵件
- Python基于smtplib協(xié)議實(shí)現(xiàn)發(fā)送郵件
- 基于python SMTP實(shí)現(xiàn)自動(dòng)發(fā)送郵件教程解析
- Python基于smtplib模塊發(fā)送郵件代碼實(shí)例
- python3.6使用SMTP協(xié)議發(fā)送郵件
- Python使用QQ郵箱發(fā)送郵件報(bào)錯(cuò)smtplib.SMTPAuthenticationError
- python3實(shí)現(xiàn)SMTP發(fā)送郵件詳細(xì)教程
- python3實(shí)現(xiàn)163郵箱SMTP發(fā)送郵件
- python3使用smtplib實(shí)現(xiàn)發(fā)送郵件功能
- Python基于SMTP發(fā)送郵件的方法
相關(guān)文章
使用Python第三方庫(kù)pygame寫個(gè)貪吃蛇小游戲
這篇文章主要介紹了使用Python第三方庫(kù)pygame寫個(gè)貪吃蛇小游戲,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Python 尋找局部最高點(diǎn)的實(shí)現(xiàn)
今天小編就為大家分享一篇Python 尋找局部最高點(diǎn)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python實(shí)現(xiàn)刪除列表首元素的多種方式總結(jié)
在Python中,處理列表的操作是日常開發(fā)中不可避免的任務(wù)之一,其中,刪除列表中的元素是一個(gè)常見的需求,本文為大家整理了Python中刪除列表中的第一個(gè)元素的多種方法,需要的可以參考下2023-12-12
python實(shí)現(xiàn)學(xué)員管理系統(tǒng)(面向?qū)ο蟀?
這篇文章主要為大家詳細(xì)介紹了python面向?qū)ο蟀鎸?shí)現(xiàn)學(xué)員管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
Pycharm安裝Qt Design快捷工具的詳細(xì)教程
這篇文章主要介紹了Pycharm安裝Qt Design快捷工具,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Pandas數(shù)據(jù)清洗函數(shù)總結(jié)
本文主要介紹了Pandas數(shù)據(jù)清洗函數(shù)總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

