main.py代码:
from flask import Flask, request, redirect, url_for, render_template, flash
from flask_mail import Mail, Message
app = Flask(__name__)
# 配置邮件服务器
app.config['MAIL_SERVER'] = 'smtp.163.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = '******@163.com' # smtp的邮箱
app.config['MAIL_PASSWORD'] = '******' # 安全授权码
app.config['SECRET_KEY'] = '******' # 填一个SECRET_KEY
# 初始化邮件对象
mail = Mail(app)
@app.route('/', methods=['GET', 'POST'])
def send_email():
if request.method == 'POST':
emai = request.form['email'] # 接收人邮箱
subject = '测试邮件'
body = '邮件内容'
sender = app.config['MAIL_USERNAME']
msg = Message(subject, sender=sender, recipients=[emai], body=body)
try:
# 添加附件
with app.open_resource('D:\\image\\1.jpg') as file:
msg.attach('1.jpg', "image/jpeg", file.read())
mail.send(msg)
flash('邮件发送成功!')
return render_template('success.html')
except Exception as e:
flash('邮件发送失败:' + str(e))
return str(e)
return redirect(url_for('send_email'))
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>发送邮件</title>
<!-- CSS -->
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.2/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1 class="mt-4">发送邮件</h1>
<form id="sendEmailForm" method="post">
<div class="form-group">
<label for="downurl">链接地址:</label>
<textarea class="form-control" id="downurl" name="downurl" rows="3" placeholder="在这里粘贴链接地址..." required onblur="extractURL(this)"></textarea>
</div>
<div class="form-group">
<label for="email">邮箱地址:</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<button type="submit" class="btn btn-primary">发送邮件</button>
</form>
</div>
</body>
<script>
let url;
function extractURL(inputElement) {
var downurl = inputElement.value;
var urlRegex = /(https?:\/\/[^\s]+)/g;
var urls = downurl.match(urlRegex);
if (urls && urls.length > 0) {
inputElement.value = urls[0]; // 替换为第一个匹配的 URL
} else {
inputElement.value = ""; // 或者其他提示信息
url = false
}
}
document.getElementById('sendEmailForm').addEventListener('submit', function(event) {
if(!url){
alert('链接输入不正确')
event.preventDefault(); // 阻止表单默认提交行为
}
var downurl = document.getElementById('downurl').value;
var email = document.getElementById('email').value;
// 这里可以添加发送邮件的逻辑
console.log('链接地址:', downurl);
console.log('邮箱地址:', email);
});
</script>
</html>
success.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>发送成功</title>
<!-- 引入 Bootstrap CSS -->
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.2/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
</head>
<body>
<div class="container mt-5">
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">发送成功</h4>
<hr>
<p class="mb-0">
<a href="/" class="btn btn-primary">返回首页</a>
</p>
</div>
</div>
</body>
</html>