使用python脚本处理邮件的简单介绍

发布时间:2022-11-17

本文目录一览:

  1. python 怎么把excel写到邮件里
  2. 求助:写python脚本发 带有附件的邮件, 收到邮件后,发现附件直接显示在屏幕上了,而不是以附件形式
  3. Python用脚本发送邮件带图片的提示错误,为什么呢?初学者,拿别人的例子该的。。
  4. Python 收发邮件 和 删除邮件 怎么做到
  5. Python写完的脚本,在windows发邮件正常,在linux下出现错误
  6. python发邮脚本运行每次都报socket.error: [Errno 110] Connection timed out ,用别人的机器也报

python 怎么把excel写到邮件里

import xlrd
import os, time
# 引入邮件相关库
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import base64
# 处理从excel中读取的float类型数据的类
# 目前集成两种处理:(1)float到int型的转换(2)float到str型的转换,后续有需要可以增加方法以集成其他类型的转换
class judgeFloat:
    def floatToInt(self, variable):
        variable = "%d" % variable
        return variable
    def floatToStr(self, variable):
        variable = xlrd.xldate_as_tuple(variable, 0)
        variable = list(variable)
        if variable[1] < 10:
            variable[1] = '0' + str(variable[1])
        variable = str(variable[0]) + str(variable[1]) + str(variable[2])
        return variable
# 确定文档是否修改的函数:获取文档的修改时间与本地时间对比,不一致要求用户确认是否继续执行,一致则直接执行
def openFile(filename, address):
    filetime = time.strftime("%Y/%m/%d", time.localtime(os.stat(address + filename).st_mtime))
    local = time.strftime("%Y/%m/%d", time.localtime())
    if filetime != local:
        single = input("文档今天还没有修改过,请确认是否继续?确认请输入1后点击回车,否则输入2点击回车。")
        if single == 1:
            pass
        elif single == 2:
            exit()
        else:
            print('您的输入有误!脚本即将结束。')
            time.sleep(5)
            exit()
    else:
        pass
# 写邮件的函数
def mailWrite(filename, address):
    header = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>'
    th = '<body text="#000000">committed缺陷详情:<table border="1" cellspacing="0" cellpadding="3" bordercolor="#000000" width="1800" align="left"><tr bgcolor="#F79646" align="left"><th>标识</th><th>摘要</th><th>状态</th><th>优先级</th><th>严重性</th><th>标记</th><th>所有者</th><th>创建时间</th><th>修改时间</th></tr>'
    # 打开文件
    filepath = address + filename
    book = xlrd.open_workbook(filepath)
    sheet = book.sheet_by_index(0)
    # 获取行列的数目,并以此为范围遍历获取单元数据
    nrows = sheet.nrows - 1
    ncols = sheet.ncols
    body = ''
    cellData = 1
    for i in range(1, nrows + 1):
        td = ''
        for j in range(ncols):
            # 读取单元格数据,赋给cellData变量供写入HTML表格中
            cellData = sheet.cell_value(i, j)
            # 调用浮点型转换方法解决读取的日期内容为浮点型数据的问题
            if isinstance(cellData, float):
                if j == 0 and i > 0:
                    cellDataNew = judgeFloat()
                    cellData = cellDataNew.floatToInt(cellData)
                else:
                    cellDataNew = judgeFloat()
                    cellData = cellDataNew.floatToStr(cellData)
            else:
                pass
            tip = '<td>' + str(cellData) + '</td>'
            # 并入tr标签
            td = td + tip
        tr = '<tr>' + td + '</tr>'
        # 为解决字符串拼接问题增设语句,tr从excel中读取出来是unicode编码,转换成UTF-8编码即可拼接
        tr = tr.encode('utf-8')
        # 并入body标签
        body = body + tr
    tail = '</table></body></html>'
    # 将内容拼接成完整的HTML文档
    mail = header + th + body + tail
    return mail
# 发送邮件
def mailSend(mail):
    # 设置发件人
    sender = '***'
    # 设置接收人
    receiver = '***@***.com'
    # 设置邮件主题
    subject = '测试邮件,请忽略!'
    # 设置发件服务器,即smtp服务器
    smtpserver = 'smtp.***.net'
    # 设置登陆名称
    username = '***@***.net'
    # 设置登陆密码
    password = '******'
    # 实例化写邮件到正文区,邮件正文区需要以HTML文档形式写入
    msg = MIMEText(mail, 'html', 'utf-8')
    # 输入主题
    msg['Subject'] = subject
    # 调用邮件发送方法,需配合导入邮件相关模块
    smtp = smtplib.SMTP()
    # 设置连接发件服务器
    smtp.connect('smtp.***.net')
    # 输入用户名,密码,登陆服务器
    smtp.login(username, password)
    # 发送邮件
    smtp.sendmail(sender, receiver, msg.as_string())
    # 退出登陆并关闭与发件服务器的连接
    smtp.quit()
# 入口函数,配置文件地址和文件名
def main():
    filename = 'Sheet1.xlsx'
    address = 'd:/defectManage/'
    openFile(filename, address)
    mail = mailWrite(filename, address)
    mailSend(mail)
# 调用执行main函数
if __name__ == "__main__":
    main()

求助:写python脚本发 带有附件的邮件, 收到邮件后,发现附件直接显示在屏幕上了,而不是以附件形式

这是因为你的附件格式。如果是rar格式的话,可能就不会直接显示在屏幕上了。 我以前写邮件收件端都比你这个复杂,那时候邮件的库支持还很差,所有的协议都要自己写。包括附件的编码。那个很长的BASE64写的东西。

Python用脚本发送邮件带图片的提示错误,为什么呢?初学者,拿别人的例子该的。。

authentication failed 认证失败 smtp.login(username, password) 用户名,密码不正确 或者 mail未开启IMAP POP3等协议

Python 收发邮件 和 删除邮件 怎么做到

邮件传输的SMTP协议,并根据该协议,利用了Python的smtplibemail模块,完成邮件的成功发送。 简单搭的报警邮件服务器没有UI,用FOXMAIL登录获取邮件头删除过慢,写个python脚本快速清空邮件

#!/usr/bin/python
import poplib
def main():
    uugame = poplib.POP3('mail.url.com', 110)
    uugame.user('dicc@url.com')
    uugame.pass_('dicc1234')
    print uugame.stat()
    mailmax = uugame.stat()[0]
    for i in range(mailmax):
        uugame.dele(i+1)
    print uugame.stat()
    uugame.quit()
if __name__ == "__main__":
    main()

Python写完的脚本,在windows发邮件正常,在linux下出现错误

名称解析问题……既然windows正常,linux不正常,一般不都是编码弄的么……我乱猜的。

python发邮脚本运行每次都报socket.error: [Errno 110] Connection timed out ,用别人的机器也报

这个简单啊。邮件服务器需要验证。你这里协议没有对。所以你的程序一直在等服务器正确的响应。所以当然超时了。要自己改一下发送协议,加上验证。验证方法有几种,要根据返回结果确认是什么样的验证。