通过在python中使用熊猫将表作为邮件发送为正文时出现填充问题

问题描述 投票:0回答:1

我在python中使用熊猫将表作为正文发送时遇到填充问题。虽然我使用命令提示符打印它很好,但是当我尝试发送邮件时,第三和第四列都遇到填充问题。

请让我知道如何以适当的表格式在正文中发送数据,而不是作为附件发送。

import csv
from tabulate import tabulate
from openpyxl import load_workbook
from exchangelib import Account, Credentials, Configuration, DELEGATE, Message, FileAttachment
from bson.json_util import dumps
from pymongo import MongoClient

import json
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import smtplib
import pandas as pd





def sendExchangelib(to, cc, emailsubject, attachment, emailbody):



filepath = pd.read_excel('Associate_AppLens_Defaulters_Nov1-Dec4.xlsx', sheet_name='%')

data_list = []



cols2skip=[4]
cols=[i for i in range(5) if i not in cols2skip]
data_list=pd.read_excel('Associate_AppLens_Defaulters_Nov1-Dec4.xlsx',sheet_name='%',index_col=0,usecols=cols)




message1=pd.DataFrame(data_list)
message1['Sum of Hours Submitted'] = pd.Series([round(val, 4) for val in message1['Sum of Hours Submitted']], index=message1.index)

message1['%Of Hours Submitted'] = pd.Series(["{0:.0f}%".format(val * 100) for val in message1['%Of Hours Submitted']], index=message1.index)
message1['Sum of Hours Submitted'] = message1['Sum of Hours Submitted'].astype(str)
message1['%Of Hours Submitted'] = message1['%Of Hours Submitted'].astype(str)
message1["%Of Hours Submitted"] = message1["%Of Hours Submitted"].str.pad(15, side='both', fillchar='_')
message1["Sum of Hours Submitted"] = message1["Sum of Hours Submitted"].str.pad(15, side='both', fillchar='_')
pd.set_option('display.max_rows', message1.shape[0]+1)
pd.set_option('display.width', 1000)
message1.dropna(how='all', inplace=True)
message1["Associate Name"]=message1["Associate Name"].str.pad(50,side ='both', fillchar ='_')



credentials = Credentials(username='CSupportAutomatiza', password='S111111#')
config = Configuration(server="mail.outlook.com", credentials=credentials)
account1 = Account(primary_smtp_address="[email protected]", config=config, autodiscover=False, access_type=DELEGATE)
email_to_list = (to.split(";"))
email_cc_list = (cc.split(";"))


#emailbody=(tabulate(message1, tablefmt="pipe", headers="keys"))
emailbody=message1
#print(emailbody)
if email_cc_list[0] == '':
    m = Message(
        account=account1,
        folder=account1.sent,
        subject=emailsubject,
        body=emailbody,
        to_recipients=email_to_list,
    )
else:
    m = Message(
        account=account1,
        folder=account1.sent,
        subject=emailsubject,
        body=emailbody,
        to_recipients=email_to_list,
        cc_recipients=email_cc_list
    )
if attachment != "":
    attachment_list = attachment.split(";")
    for data in attachment_list:
        attachment_name = (data.split("\\"))
        print(attachment_name[-1])
        with open(data, 'rb') as f:
            content = f.read()  # Read the binary file contents
        att = FileAttachment(name=attachment_name[-1], content=content)
        m.attach(att)
m.send_and_save()


def sendemail(to, cc, emailsubject, attachment, emailbody):

x="exchangelib"
if (x == "SMTP"):
    sendSMTP(to, cc, emailsubject, attachment, emailbody)
else:
    sendExchangelib(to, cc, emailsubject, attachment, emailbody)


sendemail("[email protected]", "[email protected]", "Attachment Test", "C:\\Users\\Desktop\\Python\\Associate_AppLens_Defaulters_Nov1-Dec4.xlsx","sir")

输出:

119154 Dutta,Biswanath 0.03 10%220585 Shanmugavel,Karthikeyan 16.05 20%429748 Shanmugasundaram,Balasubramanian 45.15 40%

python pandas html-table
1个回答
0
投票

由于,打印不正确?您可以使用to_string并将其放在正文中。

© www.soinside.com 2019 - 2024. All rights reserved.