タイトルの通りです。
smtplib for python によるメール送信の例は、 インターネット上で多く見かけますが、 複数宛先へ送信する場合、smtplib.SMTP.send_message()へ to_addrs の指定も 必要なようです。
smtplib.SMTP.send_message()へ to_addrs を指定しない場合、 message["To"]にある先頭アドレスにのみ、送信されるようです。
詳細は以下のpython scriptをご覧ください。
#!python # -*- coding: utf-8 -*- from email.mime.text import MIMEText import smtplib import socket import sys CONF={ "mail": {"smtp_server" : "tx.xmile.sexy.co.jp", "port" : 587, "user_id" : "send_user_id", "user_pw" : "send_user_pw", "from" : "send_user_id@sexy.com", "cc" : ["end0tknr@sexy.com"] } } def main(): msg_body_tmpl = """ メール本文 """ msg_body = msg_body_tmpl.format( hostname = socket.gethostname(), ip = socket.gethostbyname( socket.gethostname() ), script = __file__ ) message = MIMEText(msg_body,"plain", "utf-8") message["Subject"] = "エラー検知のお知らせ" message["From"] = CONF["mail"]["from"] tos = [] for user_id,manager in notify_info["manager"].items(): tos.append(manager["mail"]) if len(tos) == 0 : print("no managers",file=sys.stderr) return message["To"] = ",".join(tos) message["Cc"] = ",".join( CONF["mail"]["cc"] ) ## Toや Cc で複数宛先を指定する場合、to_addrs に配列を設定 to_addrs = tos to_addrs += CONF["mail"]["cc"] try: server = smtplib.SMTP(CONF["mail"]["smtp_server"], CONF["mail"]["port"]) server.set_debuglevel(True) server.login( CONF["mail"]["user_id"], CONF["mail"]["user_pw"]) server.send_message( message, to_addrs=to_addrs ## ココ ) except Exception as e: print(str(e), file=sys.stderr) server.quit() if __name__ == '__main__': main()