pythonでcgiとして単純なメールフォームを作っているのですが、下記のソース(html)と(py)
<form name="form" method = "post" action = "contact.py"> 相談内容 :<br><textarea name="cont" rows="4" cols="40"> ここに相談内容を記入してください。ここに相談内容を記入してください。 ここに相談内容を記入してください。ここに相談内容を記入してください。 </textarea><br> <input type="submit" value="送信"><br> </form>
このテキストエリアに入力していただき送信してcontact.pyにpostします。
contact.py
#!/usr/bin/python3.4 # -*- coding: utf-8 -*- from email import message import smtplib import ssl import cgi import sys import io smtp_mode = 'normal' smtp_host = '〇×△.xserver.jp' smtp_account_id = 'info@〇×△〇×△.com' smtp_account_pass = '〇×△〇×△' from_mail = 'info@〇×△〇×△.com' to_mail = '〇×△〇×△@gmail.com' sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') form = cgi.FieldStorage() cont = form.getvalue('cont') msg = message.EmailMessage() msg.set_content(cont); msg['Subject'] = 'メールフォーム' msg['From'] = from_mail msg['To'] = to_mail if smtp_mode == 'starttls': server = smtplib.SMTP(smtp_host, 587, timeout=10) server.ehlo() server.starttls() server.ehlo() elif smtp_mode == 'ssl': context = ssl.create_default_context() server = smtplib.SMTP_SSL(smtp_host, 465, timeout=10, context=context) else: server = smtplib.SMTP(smtp_host, 25, timeout=10) server.login(smtp_account_id, smtp_account_pass) server.send_message(msg) server.quit() print('Content-Type: text/html; charset=utf-8') print() print('<h1>メール送信完了</h1>') print("<pre>") print(cont) print("</pre>") コード
これでサーバー上にアップロードしcontact.pyのパーミッションを755にします。
実際行ってみると送信されてきたメールの文章が途中で切られてこんな感じになってしまいます。
ここに相談内容を記入してください。ここã
2週間くらいあれやこれややったり調べたりしたのですがわからずじまいです。
大変申し訳ございませんがご教授願えれば幸いです。
またpython cgiのデバッグのいい方法があったら教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/27 08:44
退会済みユーザー
2021/05/27 23:03 編集
2021/06/09 01:39
退会済みユーザー
2021/06/09 03:59
2021/12/03 07:46