From 660e02402bdcbc4dcfa601e2112e189380935e0e Mon Sep 17 00:00:00 2001 From: ptsfdtz Date: Thu, 17 Oct 2024 11:49:43 +0800 Subject: [PATCH] add web --- .gitignore | 6 - LICENCE | 21 -- README.md | Bin 2168 -> 266 bytes config.json | 5 - images/password.png | Bin 0 -> 3016 bytes images/smtp.png | Bin 0 -> 60457 bytes images/youxiang.png | Bin 0 -> 13244 bytes index.html | 49 +++ main.py | 67 ---- requirements.txt | 2 - src/style.css | 66 ++++ utils/file_utils.py | 35 -- utils/smtp_utils.py | 17 - ...\345\217\226\351\200\232\347\237\245.html" | 337 ------------------ ...\345\217\226\351\200\232\347\237\245.html" | 155 -------- 15 files changed, 115 insertions(+), 645 deletions(-) delete mode 100644 .gitignore delete mode 100644 LICENCE delete mode 100644 config.json create mode 100644 images/password.png create mode 100644 images/smtp.png create mode 100644 images/youxiang.png create mode 100644 index.html delete mode 100644 main.py delete mode 100644 requirements.txt create mode 100644 src/style.css delete mode 100644 utils/file_utils.py delete mode 100644 utils/smtp_utils.py delete mode 100644 "web/\345\275\225\345\217\226\351\200\232\347\237\245.html" delete mode 100644 "web/\346\234\252\345\275\225\345\217\226\351\200\232\347\237\245.html" diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 2d53844..0000000 --- a/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/index.xlsx -/key.txt -/data -/utils/__pycache__ -/main.exe -/config.json \ No newline at end of file diff --git a/LICENCE b/LICENCE deleted file mode 100644 index 255f150..0000000 --- a/LICENCE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 南京工业大学大学生科学技术协会 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index 3c3abc31ffbdbc57d9eee0d22148724e4e8e59a9..7ae2eb11b4671b0893ccf69974d097cec440a820 100644 GIT binary patch delta 147 zcmew%(8V-CMAMK#k3oTf+po5tA$>!tN0Cl?OPK;gG(! zlM@)#qKtq#3>fqoa)EN040%9a6_74q&}86c;9>yDDlk0m><;b@)~sg@28kJi#V+*w VbSN++An8kGr~sOs0M-Xm2LQlt9(w=) literal 2168 zcmb_dO>fgc5FI#hpsl!bvgoCP#&JHJF9lHH!T|!5HlS7_F^RDw($vIhl7bKy5F9GO z&)|gM$RFWnaOA*&@ZPQ+r=@{Ppp~87@ywgIZ#FxVpUbi=hAh-xyjzm9!lx=%Wh^_= zg?%Wl^d*#z>`G5A%LU1ZDHeVWcwLG7L-={hy957`T!Z&md0VjZu@RS@{xVu;=mDFk zz6>w|sYn`Qq=t!i4%v3Wz=JglB#ty_9r?c#Bi zJ%ptVgb_Tt_;s*KN1DbMJ!EmQ2N%0YcxtW##f5n3-@dT|Z6FTtq=4^$lN;@vdQd6q z&_KSU$QnIR(Z0f==PhV%W0;7@$ts?bTG^6^X9n}t=xt%fCxgrx3`XQJx8){gma1bx zitxx{+dK^7BpBpy1M4E5x)lBrXDbGb$VHj{oG0Ex9q45Y6MHP9+BPzA7ljkC zmIEgBDk;`^ zL|dxztc(d8D_MZm#EfTYc0PLoV|yy{pk{T%-9pHW&$Q$>2ZE?c)>$_jJE47dBKR>9V7F>MpHDxto5|T?7EA-yuGq_m~Dug zgcjXH40I3P`aP(?{-k@}|L8Mjl!3Wg*qJe>AMtyDP7tVm!0yX#(Zw)u+WL62UpA@$Q)=VSp!{)1<82G09T}t&E*1!Q97ZCw!P5-10T=Dq@incQS diff --git a/config.json b/config.json deleted file mode 100644 index 742f6b7..0000000 --- a/config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "status": "", - "department": "", - "qqGroupId": "" -} \ No newline at end of file diff --git a/images/password.png b/images/password.png new file mode 100644 index 0000000000000000000000000000000000000000..db7e5f3df2a5d31c37f928cbe1ee8884be332275 GIT binary patch literal 3016 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 literal 0 HcmV?d00001 diff --git a/images/smtp.png b/images/smtp.png new file mode 100644 index 0000000000000000000000000000000000000000..f48cddf7c53e51c3a2322b11b801b3a2e9d2bfc6 GIT binary patch literal 60457 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%0AwF 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 RFUtjXg{P~Z%Q~loCIC3<=}rIu literal 0 HcmV?d00001 diff --git a/images/youxiang.png b/images/youxiang.png new file mode 100644 index 0000000000000000000000000000000000000000..586456acaea8a9b6be11971ff5f7386496f49596 GIT binary patch literal 13244 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�{B&(0eddyCfc9Qj~#Ippap4S#Um zme!bi!B}b(j}b@@h5g7^HyrMsG8`#_81j^3|z;CI$h@6GaBmhv>#oPNK<3nVBHY%?+Fktth|86Q|G z#|pEQtR{#MZh6PQSkCM_CjlBKz|tRM7NRW|`l}#lcP>XJ@EA<1>3>bg0iBxARY(P1 z$5gidIXv(Y$v_a{^9Fn+1OS<)khWmM466ZNChz_3c-@@YZD!!ZR*X6|IE!DYLF*rL zf_8CqzT34cPF}m2GFuQ(iMwyQgV$>;2hAVaA`q#ajRZ5g09vaP<)*mM{PDw~y^}p+ z^YWgo|M2rPYOpxlWdTrgS#4Zd{^<-Z@dx`PUGSNFKt!P5ZWO7YKN3X1RJ_eLofFcu wtRm(R+oW@HxGzV + + + + + + 南京工业大学校大学生科学技术协会招新邮件发送 + + + + +
+

南京工业大学校大学生科学技术协会招新邮件发送

+
+ +
+
+

获取邮箱的授权码和账户

+

这里推荐使用 163邮箱,注册后即可获得授权码。登录网页版后点击设置 - 账户 - POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 - + 开启服务 - POP3/SMTP服务 - 授权码,即可获得授权码。

+ 邮箱图标 +

访问链接

+
+ +
+

获取授权码

+ SMTP服务设置 +

在根目录下新建一个 key.txt 文件,把账号和授权码粘贴进去,保存。

+ 密码设置 +
+ +
+

下载

+
    +
  1. 下载最新版本的 + release +
  2. +
  3. 解压压缩包
  4. +
  5. 运行 main.exe
  6. +
+
+
+ +
+

© 2024 南京工业大学校大学生科学技术协会

+
+ + + \ No newline at end of file diff --git a/main.py b/main.py deleted file mode 100644 index 3c06afe..0000000 --- a/main.py +++ /dev/null @@ -1,67 +0,0 @@ -import smtplib -import json -from email.message import EmailMessage -from tqdm import tqdm -from utils.file_utils import read_recipient_list, read_credentials -from utils.smtp_utils import get_smtp_settings - -class EmailSenderApp: - def __init__(self, config): - self.status = config["status"] - self.department = config["department"] - self.qq_group_id = config["qqGroupId"] - self.file_path = f'./data/{self.status}名单.xlsx' - self.username, self.password = read_credentials('./key.txt') - recipient_data = read_recipient_list(self.file_path) - - if recipient_data: - self.send_emails(self.username, self.password, recipient_data) - - def send_emails(self, email_address, email_password, recipient_data): - total_recipients = len(recipient_data) - - with tqdm(total=total_recipients, desc="sending emails", unit="emails") as pbar: - for i, (recipient_name, recipient_email) in enumerate(recipient_data.items(), 1): - self.send_email(email_address, email_password, recipient_name, recipient_email) - pbar.update(1) - - def send_email(self, email_address, email_password, recipient_name, recipient_email): - smtp_host, smtp_port = get_smtp_settings(email_address) - smtp = smtplib.SMTP_SSL(smtp_host, smtp_port) - - subject = "南京工业大学校大学生科学技术协会面试结果通知" - msg = EmailMessage() - msg['Subject'] = subject - msg['From'] = email_address - msg['To'] = recipient_email - - try: - __path__ = f'web/{self.status}通知.html' - with open(__path__, 'r', encoding='utf-8') as f: - html_content = f.read() - - html_content = html_content.replace('{{name}}', recipient_name) - html_content = html_content.replace('{{qqGroupId}}', self.qq_group_id) - html_content = html_content.replace('{{department}}', self.department) - msg.add_alternative(html_content, subtype='html') - smtp.login(email_address, email_password) - smtp.send_message(msg) - print(f"successfully sent email to {recipient_name} ({recipient_email})") - except Exception as e: - print(f"failed to send email to {recipient_name} ({recipient_email}): {e}") - finally: - smtp.quit() - -def main(): - with open('config.json', 'r', encoding='utf-8') as config_file: - config = json.load(config_file) - - print(json.dumps(config, indent=4, ensure_ascii=False)) - - question = input("确认发送邮件吗?(y/n): ") - if question.lower() == 'y': - EmailSenderApp(config) - input("按任意键退出...") - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 79514e9..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -openpyxl == 3.0.7 -tqdm == 4.62.3 \ No newline at end of file diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..7463dae --- /dev/null +++ b/src/style.css @@ -0,0 +1,66 @@ +body { + font-family: Arial, sans-serif; + line-height: 1.6; + margin: 0; + padding: 20px; + background-color: #f4f4f4; + color: #333; +} + +header { + background: #333; + color: #fff; + padding: 10px 0; + text-align: center; +} + +.link { + background-color: aqua; +} + +h1 { + margin: 0; + font-size: 24px; +} + +h2 { + color: #333; +} + +.password .youxiang .smtp { + width: 400px; +} + +section { + background: #fff; + border: 1px solid #ddd; + border-radius: 5px; + margin: 20px 0; + padding: 15px; +} + +p { + margin: 10px 0; +} + +a { + color: #333; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +img { + max-width: 100%; + height: auto; + margin: 10px 0; +} + +footer { + text-align: center; + margin-top: 20px; + font-size: 14px; + color: #777; +} \ No newline at end of file diff --git a/utils/file_utils.py b/utils/file_utils.py deleted file mode 100644 index 004cf1d..0000000 --- a/utils/file_utils.py +++ /dev/null @@ -1,35 +0,0 @@ -import openpyxl - -def read_credentials(key_file): - try: - with open(key_file, 'r') as file: - lines = file.readlines() - username = lines[0].strip() - password = lines[1].strip() - return username, password - except Exception as e: - print(f"读取密钥文件时出错:{e}") - return None, None - -def read_recipient_list(file_path): - try: - workbook = openpyxl.load_workbook(file_path) - sheet = workbook.active - - name_row_index = 0 - email_row_index = 1 - - result_dict = {} - for row in sheet.iter_rows(min_row=2, values_only=True): - name = row[name_row_index] - email = row[email_row_index] - result_dict[name] = email - - return result_dict - except FileNotFoundError: - print(f"文件未找到:{file_path}") - except ValueError: - print(f"表格中找不到 '姓名' 或 '邮件' 列") - except Exception as e: - print(f"读取文件时出错:{e}") - return None diff --git a/utils/smtp_utils.py b/utils/smtp_utils.py deleted file mode 100644 index 53d7057..0000000 --- a/utils/smtp_utils.py +++ /dev/null @@ -1,17 +0,0 @@ -def get_smtp_settings(email_address): - domain = email_address.split('@')[1].lower() - - if domain == '163.com': - return 'smtp.163.com', 465 - elif domain == 'gmail.com': - return 'smtp.gmail.com', 465 - elif domain == 'qq.com': - return 'smtp.qq.com', 465 - elif domain == 'outlook.com': - return'smtp-mail.outlook.com', 587 - elif domain == 'foxmail.com': - return'smtp.foxmail.com', 465 - elif domain == '126.com': - return'smtp.126.com', 25 - else: - raise ValueError(f"不支持的电子邮件域名: {domain}") diff --git "a/web/\345\275\225\345\217\226\351\200\232\347\237\245.html" "b/web/\345\275\225\345\217\226\351\200\232\347\237\245.html" deleted file mode 100644 index d40c057..0000000 --- "a/web/\345\275\225\345\217\226\351\200\232\347\237\245.html" +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git "a/web/\346\234\252\345\275\225\345\217\226\351\200\232\347\237\245.html" "b/web/\346\234\252\345\275\225\345\217\226\351\200\232\347\237\245.html" deleted file mode 100644 index 4e78382..0000000 --- "a/web/\346\234\252\345\275\225\345\217\226\351\200\232\347\237\245.html" +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -