Skip to content

Commit dc65169

Browse files
authored
파이썬 폼메일(SMTP 사용)
1 parent 08e16e7 commit dc65169

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

python_formmail_smtp.py

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
from flask import Flask, request
2+
import smtplib
3+
from email.mime.text import MIMEText
4+
from email.mime.multipart import MIMEMultipart
5+
from email.mime.base import MIMEBase
6+
from email import encoders
7+
8+
app = Flask(__name__)
9+
10+
@app.route("/", methods=["GET", "POST"])
11+
def index():
12+
if request.method == "POST":
13+
name = request.form.get("name")
14+
phone = request.form.get("phone")
15+
email = request.form.get("email")
16+
memo = request.form.get("memo")
17+
file1 = request.files.get("file1")
18+
file2 = request.files.get("file2")
19+
20+
msg = MIMEMultipart()
21+
msg['From'] = "id@naver.com"
22+
msg['To'] = "id@naver.com"
23+
msg['Subject'] = "Formmail"
24+
25+
body = f"Name: {name}\nPhone: {phone}\nEmail: {email}\nMemo: {memo}"
26+
msg.attach(MIMEText(body, 'plain'))
27+
28+
if file1:
29+
filename = file1.filename
30+
attachment = MIMEBase('application', "octet-stream")
31+
attachment.set_payload((file1.read()))
32+
encoders.encode_base64(attachment)
33+
attachment.add_header('Content-Disposition', f'attachment; filename= {filename}')
34+
msg.attach(attachment)
35+
36+
if file2:
37+
filename = file2.filename
38+
attachment = MIMEBase('application', "octet-stream")
39+
attachment.set_payload((file2.read()))
40+
encoders.encode_base64(attachment)
41+
attachment.add_header('Content-Disposition', f'attachment; filename= {filename}')
42+
msg.attach(attachment)
43+
44+
server = smtplib.SMTP('smtp.naver.com', 587)
45+
server.ehlo()
46+
server.starttls()
47+
server.ehlo()
48+
server.login("id@naver.com", "password")
49+
text = msg.as_string()
50+
server.sendmail("id@naver.com", "id@naver.com", text)
51+
server.quit()
52+
53+
return "Form submitted!"
54+
55+
return """
56+
<html>
57+
<head>
58+
<title>Formmail</title>
59+
</head>
60+
<body>
61+
<h1>Formmail</h1>
62+
<form method="post" enctype="multipart/form-data">
63+
<p>
64+
<label for="name">Name:</label>
65+
<input type="text" id="name" name="name">
66+
</p>
67+
<p>
68+
<label for="phone">Phone:</label>
69+
<input type="text" id="phone" name="phone">
70+
</p>
71+
<p>
72+
<label for="email">Email:</label>
73+
<input type="text" id="email" name="email">
74+
</p>
75+
<p>
76+
<label for="memo">Memo:</label>
77+
<textarea id="memo" name="memo"></textarea>
78+
</p>
79+
<p>
80+
<label for="file1">File 1:</label>
81+
<input type="file" id="file1" name="file1">
82+
</p>
83+
<p>
84+
<label for="file2">File 2:</label>
85+
<input type="file" id="file2" name="file2">
86+
</p>
87+
<p>
88+
<input type="submit" value="Submit">
89+
</p>
90+
</form>
91+
</body>
92+
</html>
93+
"""
94+
95+
if __name__ == "__main__":
96+
app.run()

0 commit comments

Comments
 (0)