PythonからSSLでメールを送信

STARTTLSを使わない場合

import smtplib, ssl

#送信に利用するメールサーバの設定(プロバイダーのメールアカウント、SMTPサーバー)
username= "aaa@bbb.ccc.ddd"
password=  "xxxxx"
mail_server="smtp.eeee.ffff" # SMTP Server
port=465

#偽装送信元 
fake_from= "donaldtrump@gmail.com"
fake_name= "Donald Trump"

#メールの宛先
to_email= 'hoge@hoge.hoge'
to_name= 'hoge@hoge.hoge'

subject= "Bonjour"
content= "This is the fbi. OPEN UP"
message= f"From: {fake_name} <{fake_from}>\nTo: {to_name} <{to_email}>\nSubject: {subject}\n\n{content}"
server = smtplib.SMTP_SSL(mail_server,port, context=ssl.create_default_context())
server.login(username, password)
server.sendmail(username, to_email, message.encode())
server.close()

MIME機能を付加して、日本語・HTMLのメールを送信

通信のデバッグ情報を表示するには server.set_debuglevel(True) を挿入

import smtplib,ssl
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
smtp_host = 'mail.xxx.xxx' #Mailサーバを指定
smtp_port = 465
smtp_account_id = 'hogehoge' #ユーザー名を指定
smtp_account_pass = 'xxxxxxx' #パスワードを入力
from_mail = "hoge <hoge@xxxx.xxx.xx>"  # 送信元メールアドレス
to_mail = "HOGE <HOGE@xxxx.xxx>"  # 送信先メールアドレス
msg = MIMEMultipart('alternative')
msg['Subject'] = "タイトル" #件名を入力
msg['From'] = from_mail
msg['To'] = to_mail
text = "送信テストです。.nマルチパートで送っています。.nどうですか?"
html = """
<html>
  <head></head>
  <body>
    <p style='font-size:16.0pt;font-family:游ゴシック'>送信テストです。</p>
    <p>マルチパートで送っています。</p>
    <p>どうですか?</p>
  </body>
</html>
"""

part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
msg.attach(part1)
msg.attach(part2)

server = smtplib.SMTP_SSL(smtp_host, smtp_port, context=ssl.create_default_context())
#server.set_debuglevel(True)
server.login(smtp_account_id, smtp_account_pass)
server.sendmail(from_mail, to_mail, msg.as_string())
server.quit()
print('Done.')

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です