在pycharm下可以运行 自动发送邮件的py文件 并收到邮件,但是在任务计划程序中设置定时任务,运行时 收不到自动发送的邮件

在pycharm下可以运行 自动发送邮件的py文件 并收到邮件

img


但是在任务计划程序中设置定时任务,运行时 收不到自动发送的邮件

img


并显示已运行

img

可能是由于任务计划程序的权限或配置问题导致的。请查看下面的建议:

权限问题:在任务计划程序中创建的任务,可能没有足够的权限来访问PyCharm和Python。请确保设置了相应的管理员权限,以及将用于运行任务的用户添加到安装PyCharm和Python的用户组中。

路径问题:在任务计划程序中,需要指定正确的Python解释器路径和脚本文件路径。可以使用绝对路径来确保准确性。

环境变量问题:可能需要在任务计划程序中设置环境变量,例如PYTHONPATH和PYTHONHOME等。这些环境变量可以帮助系统找到必要的Python库和依赖项。

邮件服务器设置问题:检查邮件服务器设置是否正确,是否允许从任务计划程序发送邮件。如果是,尝试更改SMTP端口,并检查SSL / TLS是否正确配置。

日志记录问题:在脚本中添加日志记录语句,以便在运行时发生任何错误时可以轻松诊断和修复异常。

这个错误通常是由于PySpark无法启动Java进程或Java进程未能正确启动所导致的。有几种方法可以尝试解决这个问题:

  1. 确认Java已正确安装并设置环境变量,可以尝试使用java -version命令检查Java版本是否正确。

  2. 确认PySpark和Java的版本兼容性,可以在PySpark文档中查看PySpark所需的Java版本,并确保Java版本与PySpark兼容。

  3. 尝试使用pyspark --master local[*]命令启动PySpark,看看是否能够正常工作。如果可以正常工作,则可能是您的应用程序配置存在问题。

  4. 尝试卸载并重新安装PySpark。

  5. 确认防火墙和网络设置不会阻止PySpark访问Java进程。

引用chatGPT作答,这可能是因为在任务计划程序中,你的Python程序没有以你预期的方式运行。以下是一些可能会导致问题的常见原因和建议:

1.相对路径问题:在 Pycharm 中,你可能使用相对路径来引用你的文件和资源。但是,在任务计划程序中,当前工作目录可能不同于你的 Pycharm 项目的根目录。因此,尝试使用绝对路径来引用文件和资源。

2.环境变量问题:在任务计划程序中运行的程序可能没有与 Pycharm 中相同的环境变量。你可能需要确保你的程序能够访问所需的环境变量,或者使用绝对路径来引用文件和资源。

3.权限问题:如果你的 Python 程序需要访问网络或发送邮件,则需要适当的权限。确保你在任务计划程序中设置了适当的权限,例如在 Windows 上使用管理员权限运行任务计划程序。

4.日志记录问题:尝试在你的 Python 程序中添加一些日志记录代码,以便能够诊断问题。在任务计划程序中运行程序时,可能无法轻松地查看输出,因此使用日志记录可以帮助你确定问题所在。

5.安全策略问题:如果你的计算机上安装了防病毒软件或防火墙,可能会阻止你的 Python 程序发送电子邮件。确保你的安全策略允许你的程序发送电子邮件。

希望这些建议能够帮助你找出问题所在,让你的程序能够在任务计划程序中正确运行并发送电子邮件。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
可能是任务计划程序没有正确设置或者缺少必要的邮件配置信息。在任务计划程序中设置定时任务时,应当确保以下几点:

  1. 确认Python环境变量已正确设置,并且可以在任务计划程序中调用Python解释器。

  2. 确认任务计划程序具备发送邮件的权限。

  3. 确认邮件配置信息正确,并且可以在任务计划程序中正确调用。

以下是一个自动发送邮件的Python脚本示例:

import smtplib
from email.mime.text import MIMEText
from email.header import Header


# 邮件配置信息
smtp_server = 'smtp.163.com'  # 发件人SMTP服务器
smtp_port = 25  # 发件人SMTP服务器端口
sender = 'xxxxxx@163.com'  # 发件人邮箱
password = 'xxxxxx'  # 发件人邮箱密码
receiver = 'xxxxxx@qq.com'  # 收件人邮箱

# 邮件内容
message = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')
message['Subject'] = Header('测试邮件', 'utf-8')

# 发送邮件
try:
    smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
    smtp_obj.login(sender, password)
    smtp_obj.sendmail(sender, [receiver], message.as_string())
    print('邮件发送成功')
except smtplib.SMTPException as e:
    print('邮件发送失败', str(e))

建议修改代码,将异常抛出,方便排查:

import smtplib
from email.mime.text import MIMEText
from email.header import Header


# 邮件配置信息
smtp_server = 'smtp.163.com'  # 发件人SMTP服务器
smtp_port = 25  # 发件人SMTP服务器端口
sender = 'xxxxxx@163.com'  # 发件人邮箱
password = 'xxxxxx'  # 发件人邮箱密码
receiver = 'xxxxxx@qq.com'  # 收件人邮箱

# 邮件内容
message = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')
message['Subject'] = Header('测试邮件', 'utf-8')

# 发送邮件
try:
    smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
    smtp_obj.login(sender, password)
    smtp_obj.sendmail(sender, [receiver], message.as_string())
    print('邮件发送成功')
except smtplib.SMTPException as e:
    print('邮件发送失败')
    print(str(e))
    raise e #抛出异常到上一层

最后提醒,定时任务需要确保代码可靠并且不会发生异常,否则容易造成邮件发送失败等问题。
如果我的回答解决了您的问题,请采纳!