From 6e07b3bcceed051b64a60e6eb2624d75c796dc71 Mon Sep 17 00:00:00 2001 From: zeroput <160378601+zeroput@users.noreply.github.com> Date: Fri, 27 Sep 2024 00:06:16 +0800 Subject: [PATCH 1/5] Create send_mail_daily.py --- send_mail_daily.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 send_mail_daily.py diff --git a/send_mail_daily.py b/send_mail_daily.py new file mode 100644 index 00000000..a8b77449 --- /dev/null +++ b/send_mail_daily.py @@ -0,0 +1,44 @@ +import smtplib +from email.mime.text import MIMEText +from email.header import Header + +# 注意,邮箱 以及接受邮箱还有邮箱验证码,应该设置在App Secret,而不是公开到仓库里面。 +SENDER = os.environ.get("SENDER"); +RECEIVER = os.environ.get("RECEIVER"); +PASSWORD = os.environ.get("PASSWORD"); + +# 邮件发送者和接收者信息 +sender = SENDER # 你的QQ邮箱 机密文件 +receiver = RECEIVER # 接收者邮箱 机密文件 + +# 邮件内容 +subject = 'Python邮件测试' # 邮件主题 +body = '这是使用Python通过QQ邮箱发送的邮件,哈哈哈' # 邮件正文 + +# 设置 SMTP 服务器及端口号 +smtp_server = 'smtp.qq.com' +smtp_port = 465 # SSL端口号 +password = 'your_authorization_code' # QQ邮箱的授权码 机密文件 + +# 创建一个MIMEText对象,指定邮件正文内容、格式和编码 +message = MIMEText(body, 'plain', 'utf-8') +message['From'] = Header(sender) +message['To'] = Header(receiver) +message['Subject'] = Header(subject) + +try: + # 连接到QQ邮箱的SMTP服务器并进行SSL加密 + server = smtplib.SMTP_SSL(smtp_server, smtp_port) + + # 登录QQ邮箱 + server.login(sender, password) + + # 发送邮件 + server.sendmail(sender, [receiver], message.as_string()) + + print("邮件发送成功") +except Exception as e: + print(f"邮件发送失败: {e}") +finally: + # 关闭连接 + server.quit() From fae7bfae72a1e53a4244449d07cc3ca0da3f41d4 Mon Sep 17 00:00:00 2001 From: zeroput <160378601+zeroput@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:57:05 +0800 Subject: [PATCH 2/5] update send email script --- .github/workflows/send_mail.yml | 36 +++++++++++++++++++++++++++++++++ send_mail_daily.py | 21 ++++++++++--------- 2 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/send_mail.yml diff --git a/.github/workflows/send_mail.yml b/.github/workflows/send_mail.yml new file mode 100644 index 00000000..65b015c2 --- /dev/null +++ b/.github/workflows/send_mail.yml @@ -0,0 +1,36 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: 签到薅羊毛 + +on: + schedule: + # 此处是UTC时间,对应北京时间早八点 + - cron : '00 00 * * *' + workflow_dispatch: + +permissions: + contents: read + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.12 + uses: actions/setup-python@v3 + with: + python-version: "3.12" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Run send email notification script + run: | + python send_mail_daily.py + env: + SENDER: ${{ secrets.SENDER }} + RECEIVER: ${{ secrets.RECEIVER }} + PASSWORD: ${{ secrets.PASSWORD }} diff --git a/send_mail_daily.py b/send_mail_daily.py index a8b77449..221b24d1 100644 --- a/send_mail_daily.py +++ b/send_mail_daily.py @@ -7,18 +7,16 @@ RECEIVER = os.environ.get("RECEIVER"); PASSWORD = os.environ.get("PASSWORD"); -# 邮件发送者和接收者信息 sender = SENDER # 你的QQ邮箱 机密文件 receiver = RECEIVER # 接收者邮箱 机密文件 -# 邮件内容 subject = 'Python邮件测试' # 邮件主题 body = '这是使用Python通过QQ邮箱发送的邮件,哈哈哈' # 邮件正文 # 设置 SMTP 服务器及端口号 smtp_server = 'smtp.qq.com' -smtp_port = 465 # SSL端口号 -password = 'your_authorization_code' # QQ邮箱的授权码 机密文件 +smtp_port = 587 +password = PASSWORD # QQ邮箱的授权码 机密文件 # 创建一个MIMEText对象,指定邮件正文内容、格式和编码 message = MIMEText(body, 'plain', 'utf-8') @@ -28,17 +26,22 @@ try: # 连接到QQ邮箱的SMTP服务器并进行SSL加密 - server = smtplib.SMTP_SSL(smtp_server, smtp_port) - + server = smtplib.SMTP(smtp_server, smtp_port, timeout=10) + # 启动 TLS 安全连接 + server.starttls() # 登录QQ邮箱 server.login(sender, password) - # 发送邮件 server.sendmail(sender, [receiver], message.as_string()) print("邮件发送成功") -except Exception as e: +except smtplib.SMTPException as e: print(f"邮件发送失败: {e}") +except Exception as e: + print(f"其他错误: {e}") finally: # 关闭连接 - server.quit() + try: + server.quit() + except: + pass \ No newline at end of file From 6d1b73e6cdd5369730613fa6c7f2a99cb3b63f65 Mon Sep 17 00:00:00 2001 From: zeroput <160378601+zeroput@users.noreply.github.com> Date: Fri, 27 Sep 2024 10:06:26 +0800 Subject: [PATCH 3/5] update send mail --- .github/workflows/send_mail.yml | 2 +- send_mail_daily.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/send_mail.yml b/.github/workflows/send_mail.yml index 65b015c2..83c5ff37 100644 --- a/.github/workflows/send_mail.yml +++ b/.github/workflows/send_mail.yml @@ -1,7 +1,7 @@ # This workflow will install Python dependencies, run tests and lint with a single version of Python # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python -name: 签到薅羊毛 +name: 上班早八发邮件 on: schedule: diff --git a/send_mail_daily.py b/send_mail_daily.py index 221b24d1..d142e9a9 100644 --- a/send_mail_daily.py +++ b/send_mail_daily.py @@ -1,6 +1,8 @@ import smtplib from email.mime.text import MIMEText from email.header import Header +import os + # 注意,邮箱 以及接受邮箱还有邮箱验证码,应该设置在App Secret,而不是公开到仓库里面。 SENDER = os.environ.get("SENDER"); From 5b5c9b98815f4478139b50dfd16c51d1f4e3d302 Mon Sep 17 00:00:00 2001 From: zeroput <160378601+zeroput@users.noreply.github.com> Date: Fri, 27 Sep 2024 10:12:28 +0800 Subject: [PATCH 4/5] update send mail daily --- send_mail_daily.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/send_mail_daily.py b/send_mail_daily.py index d142e9a9..64910ed2 100644 --- a/send_mail_daily.py +++ b/send_mail_daily.py @@ -13,7 +13,12 @@ receiver = RECEIVER # 接收者邮箱 机密文件 subject = 'Python邮件测试' # 邮件主题 -body = '这是使用Python通过QQ邮箱发送的邮件,哈哈哈' # 邮件正文 +body = '''这是使用Python通过QQ邮箱发送的邮件,哈哈哈。 +测试通过,注意事项: +1 要设置repository secret 设置发件人 授权码 收件人等到 action的 repository secret +2 修改正文内容 +3 rerun的时候 要新建一个job 不能一直re-run 那个failed job。 +''' # 邮件正文 # 设置 SMTP 服务器及端口号 smtp_server = 'smtp.qq.com' From 729febe355cf7dc869dd32204599eefe7ff88ba4 Mon Sep 17 00:00:00 2001 From: zeroput <160378601+zeroput@users.noreply.github.com> Date: Fri, 27 Sep 2024 10:28:31 +0800 Subject: [PATCH 5/5] add use_serv00_email script as a back up solution --- use_serv00_email.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 use_serv00_email.py diff --git a/use_serv00_email.py b/use_serv00_email.py new file mode 100644 index 00000000..cd2b1ad1 --- /dev/null +++ b/use_serv00_email.py @@ -0,0 +1,44 @@ +import smtplib +from email.mime.text import MIMEText +from email.header import Header +import os +# 使用免费 serv00 企业邮箱 也能正常发送 + +# 注意,邮箱 以及接受邮箱还有邮箱验证码,应该设置在App Secret,而不是公开到仓库里面。 +SENDER = 'abc@demo.serv00.com' +RECEIVER = 'a123@demo.serv00.com'; +PASSWORD = 'passwordxxx'; + + +sender = SENDER +receiver = RECEIVER + +subject = 'Python邮件测试' +body = '这是使用Python通过Sev00邮箱发送的邮件,哈哈哈' + +# 设置 SMTP 服务器及端口号 +smtp_server = 'mail7.serv00.com' +smtp_port = 465 +password = PASSWORD + +message = MIMEText(body, 'plain', 'utf-8') +message['From'] = Header(sender) +message['To'] = Header(receiver) +message['Subject'] = Header(subject) + +try: + # use SMTP_SSL directly + server = smtplib.SMTP_SSL(smtp_server, smtp_port, timeout=10) + server.login(sender, password) + server.sendmail(sender, [receiver], message.as_string()) + + print("邮件发送成功") +except smtplib.SMTPException as e: + print(f"邮件发送失败: {e}") +except Exception as e: + print(f"其他错误: {e}") +finally: + try: + server.quit() + except: + pass \ No newline at end of file