700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python程序收发文件_使用python脚本发送eml文件

python程序收发文件_使用python脚本发送eml文件

时间:2018-09-02 06:02:42

相关推荐

python程序收发文件_使用python脚本发送eml文件

隐秘邮,简单部署,邮件透明加密。网址:/

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

__version__ = '''Python-based smtp Client

Copyright (C) Chunyu Cao

This is free software; see LICENSE file for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

'''

# py .\smtp_client.py 192.168.61.4 25 c1@ 123456 recv_name --send_num 1

import time

import random

import json

import smtplib

import os

import argparse

import base64

from urllib import request

from urllib import error

from email.mime.text import MIMEText

from email.mime.application import MIMEApplication

from email.mime.multipart import MIMEMultipart

from email.mime.image import MIMEImage

from email import encoders

from email.message import Message

from email.charset import Charset

from email.charset import QP

from email.charset import BASE64

from email.charset import SHORTEST

files_list = ['x1_c2.eml']

def save_file(file_name,data):

try:

with open(file_name, 'w') as fp:

fp.write(data)

except Exception as e:

print('save file error:[{0}]'.format(e))

raise

class SmtpClient:

def __init__(self,args,file_path,file_name):

self.args = args

smtplib.Debug = args.debug

self.recv_name = []

with open(file_path+os.path.sep+args.recv_name_file, 'rb') as fp:

data = fp.read().decode('utf-8').split(',')

for i in data:self.recv_name.append(i.strip())

with open(os.path.join(os.path.dirname(file_path),'test_mail'+os.path.sep+file_name)) as fp:

self.msg = fp.read()

def send_mail(self):

try:

self.smtp.sendmail(self.args.user_name,self.recv_name,self.msg)

#self.smtp.sendmail(self.args.user_name,"caochunyu@",self.msg.as_string())

#print(self.msg.as_string())

#save_file(os.getcwd()+os.path.sep+'tmp_file'+os.path.sep+'tmp.eml',self.msg.as_string())

print('mail send Success!')

except Exception as e:

print('mail send fail! Error!')

raise

def login(self):

try:

if self.args.ssl:

self.smtp = smtplib.SMTP_SSL()

else:

self.smtp = smtplib.SMTP()

self.smtp.connect(self.args.host,self.args.port)

self.smtp.login(self.args.user_name,self.args.user_pass)

except Exception as e:

print('login fail! Error:'+str(e))

raise

def logout(self):

try:

self.smtp.close()

except Exception as e:

print('logout fail! Error:'+str(e))

raise

def main(args):

print(args)

file_dir = os.getcwd()

send_num = args.send_num

while send_num > 0:

random_mail = files_list[random.randint(0, len(files_list)-1)]

mail_client = SmtpClient(args,file_dir,random_mail)

mail_client.login()

mail_client.send_mail()

mail_client.logout()

send_num -= 1

print('remain mail num is [{0}]'.format(send_num))

time.sleep(1)

if __name__ == '__main__':

args = argparse.ArgumentParser( __version__)

args.add_argument('host', default='localhost',

help='mail server hostanme')

args.add_argument('port', default=25,type=int,

help='server port')

args.add_argument('user_name', default='xxx@',

help='user name')

args.add_argument('user_pass', default='123456',

help='user pass')

args.add_argument('recv_name_file', default='recv_name',

help='recv name')

args.add_argument('--send_num',default=1,type=int,

help='mail send num')

args.add_argument('--ssl', action='store_true',

help='Use SSL')

args.add_argument('--debug', type=int,

help='Debug level 1-5')

args.add_argument('--verbose', action='store_true', default=False,

help='Disable verbose mode')

main(args.parse_args())

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。