写了一个邮件发送的功能,没想到很多人都想用,这次重新整理封装了一下代码,希望大家在使用的时候更加方便。感谢各位的支持[]~( ̄▽ ̄)~*
[]~( ̄▽ ̄)~*
下面是邮件的使用效果截图:
import smtplib from email.mime.text import MIMEText from email.header import Header
def send_email(subject,message,sender,username,password,receiver_list): """ 邮件发送 subject:标题 message:内容 sender:发送邮箱 username:邮箱名 password:邮箱密码 receiver_list:收件箱列表 记得请先开启邮箱的SMTP服务 """ sender = subject #发送的邮箱 receiver = receiver_list #要接受的邮箱(注:测试中发送其他邮箱会提示错误) smtpserver = 'smtp.163.com' username = username #你的邮箱账号 password = password #你的邮箱密码 msg = MIMEText(message,'html','utf-8') #中文需参数‘utf-8',单字节字符不需要 msg['Subject'] = Header(subject, 'utf-8') #邮件主题 msg['from'] = sender #自己的邮件地址 smtp = smtplib.SMTP() try : smtp.connect('smtp.163.com') # 链接 smtp.login(username, password) # 登陆 smtp.sendmail(sender, receiver, msg.as_string()) #发送 log.info('邮件发送成功') except smtplib.SMTPException: log.info('邮件发送失败') smtp.quit() # 结束
def build_context(context, hold_count, buy_list, sell_list, url='', total_returns=0, last_returns=0, strategy_name='策略', title_color='LightBLue'): """ 打包主体信息,html格式 context:不解释 strategy_name:策略名称 hold_count:最大持仓数量 buy_list:当日要买进的股票列表 sell_list:当日要卖出的股票列表 url:如果策略发布,可以填写上它的地址 total_returns:总收益 last_returns:上一个交易日的收益 title_color:表头的颜色 """ count = 0 current_data = get_current_data() '''计算当天买卖仓位''' hold_count = len(context.portfolio.positions) - len(sell_list) buy_how_cout = hold_count - hold_count if len(buy_list) > buy_how_cout: buy_how_cout = len(buy_list) - hold_count '''打包hmlt表格''' color_list = ['White','WhiteSmoke', 'Crimson', 'Green'] mail_msg = '' mail_msg += '<p>策略名称:"'+strategy_name+'"</p>' mail_msg += '<p>交易时间:'+context.current_dt.strftime('%Y-%m-%d')+'</p>' mail_msg += '<table cellpadding="10">' mail_msg += '<tr bgcolor="'+title_color+'" ><th>交易时间</th><th>股票</th><th>操作</th><th>仓位</th><th>参考价格</th></tr>' for stock in sell_list: mail_msg += '<tr bgcolor="'+str(color_list[count%2])+'"><td>9:30</td><td>'+current_data[stock].name+stock+'</td><td><font color="Green">卖</font></td><td>全</td><td>¥'+str(current_data[stock].last_price)+'</td></tr>' count += 1 for stock in buy_list: mail_msg += '<tr bgcolor="'+str(color_list[count%2])+'"><td>9:30</td><td>'+current_data[stock].name+stock+'</td><td><font color="Crimson">买</font></td><td>1/'+str(buy_how_cout)+'</td><td>¥'+str(current_data[stock].last_price)+'</td</tr>' count += 1 mail_msg += '<tr><th colspan="5">累积收益:<font color="'+[color_list[2] if total_returns>=0 else color_list[3]][0] +'">'+str(round(total_returns,2))+'%</font> 昨日收益:<font color="'+[color_list[2] if last_returns>=0 else color_list[3]][0] +'">'+str(round(day_returns, 2))+'%</font><br/><a href="'+url+'">点击访问策略</a></th></tr></table>' return mail_msg
这里的参数是按我的方式计算出来的,各位在使用的时候,可以按自已的实际需求进行调整!!︿( ̄︶ ̄)︿
︿( ̄︶ ̄)︿
'''每天计算总收益和上一日收益''' total_returns = context.portfolio.returns * 100 # 计算收益 day_returns = total_returns - g.last_returns g.last_returns = total_returns '''接收者邮箱列表''' mail_list = ['mail1@163.com', 'mail2@163.com', 'mail3@126.com'] '''策略地址''' url = '' '''打包信息''' message = build_context(context, hold_count=5, buy_list=g.buy, sell_list=g.sell, url=url, total_returns=total_returns, last_returns=day_returns, strategy_name='遛狗策略', title_color='red') '''发送邮件''' send_email(subject='遛狗策略交易提醒', message=message, sender='发送者邮箱', username='发送者邮件名', password='邮箱密码', receiver_list=mail_list)
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...
交易匠人:震荡行情多耐心,黄金早间有望延续...
交易匠人:黄金震荡回踩1708,有波段机会
移动端课程