Python自動傳送郵件

2021-08-03 16:15:33 字數 3853 閱讀 3373

本文主要介紹如何使用python實現郵件的自動傳送。

首先這個功能要求使用的模組是stmplib,email。

smtp(****** message transport protocol):簡單資訊傳輸協議,只能由於傳送郵件

下面是簡要的程式:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import smtplib

from email.mime.text import mimetext

# 第三方smtp服務

mail_host="smtp.163.com" # 設定伺服器

mail_user="***@163.com" # 使用者名稱

mail_pass="***"# 密碼

receiver ='***@qq.com' # 接收郵箱

message = mimetext('python 郵件傳送測試...', 'plain', 'utf-8')

message['from'] = 'python'+'<'+mail_user+'>'

message['to'] = receiver

message['subject'] = '【python test】郵件測試'

try:

smtpobj = smtplib.smtp()# 例項化

smtpobj.connect(mail_host, 25) # 25為 smtp 埠號

smtpobj.login(mail_user,mail_pass) # 郵箱登入

print('登入成功!')

smtpobj.sendmail(mail_user, receiver, message.as_string()) # 傳送郵件

smtpobj.quit() # 郵件退出

print("恭喜:郵件傳送成功!")

except smtplib.smtpexception:

print("錯誤:無法傳送郵件")

下面繼續介紹。

1.【定時傳送郵件】

這個功能其實很容易實現,利用time模組就能做到。基本思路是:輸入你想要傳送郵件的時間,獲取當前的時間後不斷和你設定的時間比較,當時間到了的時候,程式繼續往下跑,自動傳送郵件。

下面給出我的程式:

#coding=utf-8

import time

import smtplib

from email.mime.text import mimetext

mailto_list='***@qq.com' #收件人

mail_host="smtp.163.com" #使用的郵箱的smtp伺服器位址

mail_user="*** #使用者名稱

mail_pass="*** #密碼

mail_postfix="163.com" #郵箱的字尾

def send_mail(to_list,sub,content):

me="python測試"+"<"+mail_user+"@"+mail_postfix+">"

msg = mimetext(content,'plain','utf-8')

msg['subject'] = sub

msg['from'] = me

msg['to'] = to_list

try:

server = smtplib.smtp()

server.connect(mail_host) #連線伺服器

server.login(mail_user,mail_pass) #登入操作

print(u'登入成功!')

server.sendmail(me, to_list, msg.as_string())

print(u'傳送成功!')

server.quit()

except exception:

print(u'傳送失敗')

print('現在時間時間是:\n'+time.strftime('%h:%m:%s',time.localtime()))

hour=int(input('輸入傳送的時間\n時鐘:'))

minute=int(input('分鐘:'))

second=int(input('秒鐘:'))

while true:

current_time = time.localtime(time.time())

if(current_time.tm_hour == hour) and (current_time.tm_min == minute) and (current_time.tm_sec == second):

print('時間到,開始自動傳送郵件')

time.sleep(1)

send_mail(mailto_list,"python郵件測試","hello world") #郵件主題和郵件內容

2.【郵件**】

其實只要傳入的receiver為乙個list型別的資料,就能實現**。不過,這裡還有乙個問題需要格外注意。

注意看下面msg['to']這一行

#coding=utf-8

import time

import smtplib

from email.mime.text import mimetext

mailto_list=['***@qq.com','***@qq.com',...] #收件人

mail_host="smtp.163.com" #使用的郵箱的smtp伺服器位址

mail_user="*** #使用者名稱

mail_pass="*** #密碼

mail_postfix="163.com" #郵箱的字尾

def send_mail(to_list,sub,content):

me="python測試"+"<"+mail_user+"@"+mail_postfix+">"

msg = mimetext(content,'plain','utf-8')

msg['subject'] = sub

msg['from'] = me

msg['to'] = ','.join(to_list) # 收件列表以『;』連線

try:

server = smtplib.smtp()

server.connect(mail_host) #連線伺服器

server.login(mail_user,mail_pass) #登入操作

print(u'登入成功!')

server.sendmail(me, to_list, msg.as_string())

print(u'傳送成功!')

server.quit()

except exception:

print(u'傳送失敗')

send_mail(mailto_list,"python郵件測試","hello world") #郵件主題和郵件內容

其他情況有待研究,呵呵。

當然,還有許多的可能性和創意可以挖掘。限制你的不是能力,而是想象力。

python 自動傳送郵件

測試環境 python3.4 發件伺服器 網易yeah 收件伺服器 移動139郵箱 注意 一定要在發件的郵箱裡面設定pop3 smtp imap為開啟狀態,要不然會報錯 535 error authentication failed 通過本程式,可以自動給自己的手機郵箱傳送郵件,在手機郵箱中把發件位...

Python 自動傳送郵件

可直接複製進行呼叫 修改main裡對應引數即可 usr bin env python coding utf 8 time 2022 2 11 11 05 author file myemail.py version 1.0 function import datetime import smtpli...

python 自動傳送郵件

import smtplib from email.mime.text import mimetext from email.header import header 配置郵箱資訊 mailhost smtp.qq.com mailuser mailpass 配置傳送人和收件人資訊 sender q...