我在发送邮件时遇到问题:TypeError:\uuInit_Uu()遇到意外的关键字参数“context”

2024-05-15 21:13:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在synology NAS上制作一个python脚本。备份完成后,脚本将发送一封邮件。我不知道为什么在pycharm的windows上工作的脚本不能在synology上工作。。。它的问题是上下文=context。它的Synology NAS与不稳定的python和python模块。Python看到所有的文件,但他不能发送邮件

    message = MIMEMultipart("alternative")
    message["Subject"] = "Backup zrobiony dnia: " + str(datetime.now())
    message["From"] = sender_email
    message["To"] = receiver_email

    # Create the plain-text and HTML version of your message
    text = """\
            Hi,
            How are you?"""

    def modification_date(filename):
        t = os.path.getmtime(filename)
        return datetime.fromtimestamp(t)

    html = """\
    <html lang="PL">
    <head>
    <style>table,td,th{border:2px solid black;}</style>
    </head>
      <body>
        <h1 style="text-align: center">Witam tu serwer Synology z firmy IdeaLogic</h1>
           <p style="text-align: center; color: #FF7B24; font-weight:bold">Backup został wykonany</p>
           <table style="text-align:center"> 
           <tr><th>Nr</th><th>Nazwa folderu</th><th>Data backupu</th><th>Czzas od ostatniego backupu</th></tr>
           <tr><td>1</td><td>VM_DEV_JIRA_NS</td><td>"""  +str(modification_date('/volume1/esxi_backup/VM_DEV_JIRA_NS'))+"""</td>"""+"""<td>"""+(str(datetime.now() - modification_date(file)))+ """</td></tr>
           <tr><td>2</td><td>DB.OROOXLAB</td><td>"""  +str(modification_date('/volume1/esxi_backup/DB.OROOXLAB'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/DB.OROOXLAB'))+ """</td></tr>
           <tr><td>3</td><td>WinOraDB</td><td>"""  +str(modification_date('/volume1/esxi_backup/WinOraDB'))+"""</td><td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/WinOraDB'))+"""</td></tr>
           <tr><td>4</td><td>WV_DEV_REPO</td><td>"""  +str(modification_date('/volume1/esxi_backup/WV_DEV_REPO'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/WV_DEV_REPO'))+"""</td></tr>
           <tr><td>5</td><td>VM_DEV_TOOLS</td><td>"""  +str(modification_date('/volume1/esxi_backup/VM_DEV_TOOLS'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/VM_DEV_TOOLS'))+"""</td></tr>
           <tr><td>6</td><td>SSN_calculator</td><td>"""  +str(modification_date('/volume1/esxi_backup/SSN_calculator'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/SSN_calculator'))+"""</td></tr>
           <tr><td>7</td><td>Firmeoo</td><td>"""  +str(modification_date('/volume1/esxi_backup/Firmeoo'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/Firmeoo'))+"""</td></tr>
           <tr><td>8</td><td>ISO</td><td>"""  +str(modification_date('/volume1/esxi_backup/ISO'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/ISO'))+"""</td></tr>
           <tr><td>9</td><td>AD-VPN</td><td>"""  +str(modification_date('/volume1/esxi_backup/AD-VPN'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/AD-VPN'))+"""</td></tr>
           <tr><td>10</td><td>GitLab</td><td>"""  +str(modification_date('/volume1/esxi_backup/GitLab'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/GitLab'))+"""</td></tr>
           <tr><td>11</td><td>VM_DEV_JENKIS</td><td>"""  +str(modification_date('/volume1/esxi_backup/VM_DEV_JENKINS'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/VM_DEV_JENKINS'))+"""</td></tr>
           <tr><td>12</td><td>OLD</td><td>"""  +str(modification_date('/volume1/esxi_backup/OLD'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/OLD'))+"""</td></tr>
           <tr><td>13</td><td>RedmineDebianOS</td><td>"""  +str(modification_date('/volume1/esxi_backup/RedmineDebianOS'))+"""</td>"""+"""<td>"""+str(datetime.now() - modification_date('/volume1/esxi_backup/RedmineDebianOS'))+"""</td></tr>
           </table>

      </body>
    </html>"""

    # Turn these into plain/html MIMEText objects
    part1 = MIMEText(text, "plain")
    part2 = MIMEText(html, "html")

    # Add HTML/plain-text parts to MIMEMultipart message
    # The email client will try to render the last part first
    message.attach(part1)
    message.attach(part2)

    # Create secure connection with server and send email
    context = ssl.create_default_context()
    server = smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context)
    server.login(sender_email, password)
    server.sendmail(
    sender_email, receiver_email, message.as_string()
        )
    czas = (os.stat(file)[-2])
    print('Wysłano maila')

liczba_petli = int(liczba_petli)
liczba_petli = liczba_petli + 1
continue

Tags: devmessagedatetimedateemailvmbackupnow
2条回答

在python3.3中,context参数是新的:https://docs.python.org/3/library/smtplib.html#smtplib.SMTP_SSL

如果运行的python版本错误,则会出现此错误。在

你在打电话

server = smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context)

根据文档,该函数还有另一个签名:

^{2}$

最后一个参数(context=context)看起来像一个带有默认值的参数定义。你不能调用那样的函数。只需省略上下文并调用:

server = smtplib.SMTP_SSL("smtp.gmail.com", 465)

这是官方文件的链接:https://docs.python.org/2/library/smtplib.html#smtplib.SMTP_SSL

相关问题 更多 >