Pythonによるメール送信

2026/08/21更新

    Python用ライブラリの提供について

    smtplib と email ライブラリは、Apache License Version 2.0 に基づきソースコードを含めて提供しておりますが、技術サポートおよびメンテナンスは終了しております。今後の拡張や不具合対応については、ライセンス条項に基づき、お客様ご自身でのソースコードの修正・運用をお願いいたします。

    smtplibとemailは、Pythonでメールアプリケーションを作成するためのライブラリです。Customers Mail Cloudは、DNSラウンドロビンによるシステム冗長化に対応したPythonライブラリを提供します。

    SMTPホスト名

    以下のSMTPホスト名を、cmclib.Transportの引数に指定します。

    サービスプラン

    SMTPホスト名

    無料トライアル

    sandbox.smtps.jp

    Standard

    te.smtps.jp

    Business / Enterprise / OEM / Pro

    SUBDOMAIN.smtps.jp (SUBDOMAINは各ユーザに割り当てたドメイン)

    ライブラリ

    Python標準のsmtplib.SMTPクラスの代わりに使用することができるcmclib.Transportクラスを提供します。

    cmclib.TransportはDNSラウンドロビンに対応しており、メールトラフィックを2台以上のリレーサーバに負荷分散するとともに、障害発生時は正常に動作しているメールサーバにSMTP接続を自動的にリトライする制御を行っています。

    ライブラリは、以下をダウンロードして使用してください。本ライブラリは、Apache License Version 2.0 で提供します。

    サンプルコード

    emailパッケージとcmclib.Transportクラスを使用したサンプルソースコードです。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import cmclib
    import smtplib
    
    from email.mime.text import MIMEText
    from email.header import Header
    from email.utils import formatdate
    
    class MailSample:
    
        encode = 'shift_jis'
        from_addr = 'sample@smtps.jp'
        to_addr = 'sample@smtps.jp'
    
        def create(self, from_addr, to_addr):
            # メール本文を生成
            message = MIMEText(
                u'HENNGE株式会社\r\n' +
                u'山田太郎様\r\n' +
                u'\r\n' +
                u'この度は当社サービスへのお問い合わせ誠にありがとうございます。\r\n' +
                u'お問い合わせにつきまして折り返しご連絡いたします。\r\n' +
                u'今しばらくお時間頂けますよう宜しくお願いいたします。\r\n',
                'plain', self.encode);
    
            # 宛先(To)アドレスを設定
            message['To'] = to_addr
    
            # 差出人(From)アドレスを設定
            message['From'] = from_addr
    
            # 送信日時(Date)を設定
            message['Date'] = formatdate()
    
            # メールの件名を設定
            message['Subject'] = Header(
                u'【自動返信】お問い合わせについて', self.encode)
    
            return message
    
        # SMTP認証を使ってメールを送信する
        # username, password にはAPIユーザ設定にて作成した
        # APIユーザ名とAPIキーを指定します。
        def sendWithAuth(self):
            # メールを生成する
            msg = self.create(self.from_addr, self.to_addr)
            # メールを送信する
            cmcserv = cmclib.Transport('SUBDOMAIN.smtps.jp')
            cmcserv.set_debuglevel(1)
            cmcserv.ehlo()
            cmcserv.login('username', 'password')
            cmcserv.sendmail(self.from_addr, [self.to_addr], msg.as_string())
            cmcserv.quit()
    
        # SMTP認証を使わずにメールを送信する
        # サービスプラン Business / Enterprise / OEM / Pro でIPアクセス認証を設定した場合、
        # SMTP認証無しでメールを送信することができます。
        def send(self):
            # メールを生成する
            msg = self.create(self.from_addr, self.to_addr)
            # メールを送信する
            cmcserv = cmclib.Transport('SUBDOMAIN.smtps.jp')
            cmcserv.set_debuglevel(1)
            cmcserv.sendmail(self.from_addr, [self.to_addr], msg.as_string())
            cmcserv.quit()
    
    if __name__ == '__main__':
        sample = MailSample()
        print "===== send ====="
        sample.send()
        print "===== sendWithAuth ====="
        sample.sendWithAuth()

    サポート一覧へ戻る

    Download

    変革を、ここから始める