如何實現指令碼每週幾定期傳送郵件?

2021-06-26 19:35:13 字數 2098 閱讀 6686

這裡需要解決兩個方面的問題:

1.如何控制傳送時間?

2.如何通過指令碼來傳送郵件?

對於第乙個問題:

設定定時指令碼每日檢測當前日期是本週的週幾,滿足要求則執行需要操作的任務,否則退出。

### 假定測試的是今天是否是周五

datecol=`date -d today +\%y\%m\%d`

pos=`date -d $datecol +%w`

echo $pos

if [ $pos -ne 5 ]; then

echo "not friday yet!"

exit 0

fi### do the job here

對於第二個問題:

需要考慮傳送郵件的格式,比如標題內容收件人抄送附件等。

如果需要自己寫函式搞定的話,可以用python來實現。

基本思路就是先編寫乙個傳送郵件的核心函式,再寫乙個函式使用者在shell下呼叫。

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

from email.mime.multipart import mimemultipart

from email.mime.base import mimebase

from email.mime.text import mimetext

# python 2.3.*: email.utils email.encoders

from email.utils import commaspace,formatdate

from email import encoders

import os

#server['name'], server['user'], server['passwd']

def send_mail(server, fro, to, subject, plaintext, htmltext, files=):

assert type(server) == dict

assert type(to) == list

assert type(files) == list

#set the format of content: 'plaintext' 'htmltext'

#and the encoding format: 'utf-8' 'gb2312 '

msgtext = mimetext(htmltext, 'plain', 'utf-8')

### from to subject plaintext/htmltext

msg = mimemultipart()

msg['from'] = fro

msg['subject'] = subject

msg['to'] = commaspace.join(to) #commaspace==', '

msg['date'] = formatdate(localtime=true)

msg.attach(mimetext(msgtext))

### attachment

for file in files:

part.set_payload(open(file, 'rb'.read()))

encoders.encode_base64(part)

part.add_header('content-disposition', 'attachment; filename="%s"' % os.path.basename(file))

msg.attach(part)

### sending

import smtplib

smtp = smtplib.smtp(server['name'])

smtp.login(server['user'], server['passwd'])

smtp.sendmail(fro, to, msg.as_string())

smtp.close()

shell程式設計 指令碼實現定期清理檔案

定期清理規定多少天前的日誌檔案 opt logs下面的檔案 clear log.sh bin bash 日誌目錄 log dir 1 超過多少天的日誌會被清理 old days 2 當前時間 秒 time now date s 期限 limit 3600 24 old days 獲取所有檔案 fil...

如何根據日期實現計算當日是星期幾

原文 如何根據日期實現計算當日是星期幾 2012 01 21 13 27 34 分類 常見難題解決方法 舉報 字型大小 訂閱 如何根據日期實現計算當日是星期幾?今天在編寫ds1302實時時鐘裡,引發這個猜想,想實現根據日期來計算出這個日期是星期幾了,並顯示在1602液晶裡。因此現在收集了這方面的資訊...

如何通過呼叫printf函式實現向串列埠傳送資料

printf函式是標準的庫函式,定義在stdio.件中。printf函式在keil的底層 在keil中的標準c庫中,printf scanf等輸入輸出資料流函式是通過fputc fgetc來實現最底層操作的,所以我們只需要在我們的工程中重定義這兩個函式的功能就可以實現printf scanf等資料流...