本文主要介紹如何使用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...