SQLの窓

2018年04月22日


Python3 でメール送信 ( さくらインターネット )

さくらインターネットのユーザ文字列が埋め込みサンプルとして適しているので使用しました。

デフォルトでは、utf-8 で Subject がエンコードされるので email.charset.Charset クラスのメソッドで iso-2022-jp に変換しています。
Subject: =?utf-8?b?UHl0aG9uIOOBi+OCiSBVVEYtOCDjga7mloflrZfliJc=?=
文字列の埋め込みは f-string です。
# *************************
# 型と内容の確認
# *************************
def typrint(obj):
	print(type(obj))
	print(obj)
	print("")

# *************************
# ライブラリ
# *************************
import smtplib
from email.mime.text import MIMEText
import datetime
from  email.charset import Charset

# *************************
# 日付のテスト
# *************************
# 日付だけ欲しい場合はこちら
today = datetime.date.today()
typrint(today)

# datetime オブジェクトは date オブジェクトおよび time オブジェクトの全ての情報が入っている単一のオブジェクトです。
today = datetime.datetime.today()
typrint(today)

# 書式 : https://docs.python.jp/3/library/datetime.html#strftime-strptime-behavior
strdate = today.strftime("%Y-%m-%d %H:%M:%S")
typrint(strdate)

# *************************
# メール用キャラクタセット
# *************************
jis='iso-2022-jp'

# *************************
# 本文
# *************************
text = "Python\n日本語\nUTF-8\n"
text += "Python文字列操作マスター\nhttps://qiita.com/tomotaka_ito/items/594ee1396cf982ba9887"
text += "https://qiita.com/tomotaka_ito/items/594ee1396cf982ba9887"
text = text.encode(jis)		# iso-2022-jp でテキスト全体をエンコード
typrint(text)
msg = MIMEText(text, 'plain', jis)		# メール送信用データのベースを作成

# *************************
# 送信用情報
# *************************
user = "ユーザ"		# さくらインターネットのユーザ
password = "パスワード"
port = 587
to = "宛先メールアドレス"

# *************************
# メールヘッダ
# *************************
charset = Charset(jis)		# Subject 用エンコードに使用( これをしないと utf-8 が使用される )
msg["Subject"] = charset.header_encode("Python から UTF-8 の文字列 : " + strdate )
msg["From"] = f"{user}@{user}.sakura.ne.jp"
msg["To"] = to

# *************************
# 確認用出力
# *************************
print(msg)

# *************************
# メール送信
# *************************
try:

	smtp_server = smtplib.SMTP(f"{user}.sakura.ne.jp",port)
	smtp_server.starttls()
	smtp_server.login(f"{user}@{user}.sakura.ne.jp", password)
	smtp_server.send_message( msg )
	smtp_server.quit()

	print("メールを送信しました")

except Exception as err:

	print(err)
	print("メール送信に失敗しました" )




▼ 出力結果
<class 'datetime.date'>
2018-04-22

<class 'datetime.datetime'>
2018-04-22 20:30:27.176934

<class 'str'>
2018-04-22 20:30:27

<class 'bytes'>
b'Python\n\x1b$BF|K\\8l\x1b(B\nUTF-8\nPython\x1b$BJ8;zNsA`:n%^%9%?!<\x1b(B\nhttps://qiita.com/tomotaka_ito/items/594ee1396cf982ba9887https://qiita.com/tomotaka_ito/items/594ee1396cf982ba9887'

Content-Type: text/plain; charset="iso-2022-jp"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: =?iso-2022-jp?b?UHl0aG9uIBskQiQrJGkbKEIgVVRGLTggGyRCJE5KODt6TnMbKEIgOiAyMDE4LTA0LTIyIDIwOjMwOjI3?=
From: ユーザ@ユーザ.sakura.ne.jp
To: 宛先メールアドレス

Python
$BF|K\8l(B
UTF-8
Python$BJ8;zNsA`:n%^%9%?!<(B
https://qiita.com/tomotaka_ito/items/594ee1396cf982ba9887https://qiita.com/tomotaka_ito/items/594ee1396cf982ba9887
メールを送信しました



【Pythonの最新記事】
posted by lightbox at 2018-04-22 20:40 | Python | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり