[解決済み] PythonからSMTPを使用してメールを送信する
2022-07-17 05:31:55
質問
PythonからSMTPを使用してメールを送信するために、以下の方法を使用しています。これは使用する正しい方法ですか、または私が見逃しているgotchasがありますか?
from smtplib import SMTP
import datetime
debuglevel = 0
smtp = SMTP()
smtp.set_debuglevel(debuglevel)
smtp.connect('YOUR.MAIL.SERVER', 26)
smtp.login('USERNAME@DOMAIN', 'PASSWORD')
from_addr = "John Doe <[email protected]>"
to_addr = "[email protected]"
subj = "hello"
date = datetime.datetime.now().strftime( "%d/%m/%Y %H:%M" )
message_text = "Hello\nThis is a mail from your server\n\nBye\n"
msg = "From: %s\nTo: %s\nSubject: %s\nDate: %s\n\n%s"
% ( from_addr, to_addr, subj, date, message_text )
smtp.sendmail(from_addr, to_addr, msg)
smtp.quit()
どのように解決するのですか?
私が使用しているスクリプトは非常に似ています。私は、MIMEメッセージを生成するためにemail.*モジュールを使用する方法の例として、ここにそれを投稿します。したがって、このスクリプトは、画像などを添付するために簡単に変更することができます。
私は、日付時刻ヘッダを追加するためにISPに依存しています。
私の ISP はメールを送信するために安全な smtp 接続を使用するよう要求しています。 http://www1.cs.columbia.edu/~db2501/ssmtplib.py )
あなたのスクリプトのように、SMTPサーバで認証するために使用されるユーザ名とパスワード(以下、ダミー値)は、ソースの中でプレーンテキストになっています。これはセキュリティ上の弱点ですが、最良の代替案は、これらの保護についてどれだけ注意深くなる必要があるか (必要であるか) によります。
=======================================
#! /usr/local/bin/python
SMTPserver = 'smtp.att.yahoo.com'
sender = 'me@my_email_domain.net'
destination = ['recipient@her_email_domain.com']
USERNAME = "USER_NAME_FOR_INTERNET_SERVICE_PROVIDER"
PASSWORD = "PASSWORD_INTERNET_SERVICE_PROVIDER"
# typical values for text_subtype are plain, html, xml
text_subtype = 'plain'
content="""\
Test message
"""
subject="Sent from Python"
import sys
import os
import re
from smtplib import SMTP_SSL as SMTP # this invokes the secure SMTP protocol (port 465, uses SSL)
# from smtplib import SMTP # use this for standard SMTP protocol (port 25, no encryption)
# old version
# from email.MIMEText import MIMEText
from email.mime.text import MIMEText
try:
msg = MIMEText(content, text_subtype)
msg['Subject']= subject
msg['From'] = sender # some SMTP servers will do this automatically, not all
conn = SMTP(SMTPserver)
conn.set_debuglevel(False)
conn.login(USERNAME, PASSWORD)
try:
conn.sendmail(sender, destination, msg.as_string())
finally:
conn.quit()
except:
sys.exit( "mail failed; %s" % "CUSTOM_ERROR" ) # give an error message
関連
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Pythonを使ってGmailをプロバイダにしたメールを送信するには?
-
[解決済み】PythonでHTMLメールを送信する方法
-
[解決済み】Pythonでメールを送信する方法は?
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] if 節の終了方法
-
[解決済み] 複数のプロットを1つのPDFファイルに保存する
-
[解決済み] 集合からランダムな選択? python