Python ビジネス関連

Python3でgmailからメールを送る方法(ファイル添付あり)

アイキャッチ画像

AIの分野で注目のPython(パイソン)ですが、とても便利な言語で、いろいろなことができちゃいます。
ぼくは、クローリングツールを作る兼ね合いでPythonと出会い、クローリングツールの他に自動メール送信ツール、ビットコイン自動売買ツールなど、いろいろな物を試作しました。

その中で、gmailでファイル添付してメールを送信する仕組みが、調べた通りでできなかったため、自分なりに修正した物でを公開したいと思いました。

そのまま使えるはずですが、もしうまくいかない場合はご連絡ください。

Python3を使ってgmailでメールを送信するプログラム

mail.pyを作成する

mail.pyを作成し、以下をそのままコピーしてください。

from email.mime.text import MIMEText
from email.utils import formatdate
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import smtplib

def create_message(from_addr, to_addr, cc_addr, subject, body):
msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = from_addr
msg['To'] = ",".join(to_addr)
msg['Cc'] = ",".join(cc_addr)
msg['Date'] = formatdate()

body = MIMEText(body)
msg.attach(body)

return msg

def create_message_attach(from_addr, to_addr, cc_addr, subject, body, mine, attach_file):
msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = from_addr
msg['To'] = ",".join(to_addr)
msg['Cc'] = ",".join(cc_addr)
msg['Date'] = formatdate()

body = MIMEText(body)
msg.attach(body)

#添付ファイルのMIMEタイプを指定する
attachment = MIMEBase(mine['type'],mine['subtype'])

file = open(attach_file['path'],'rb')
attachment.set_payload(file.read())
file.close()
encoders.encode_base64(attachment)
msg.attach(attachment)
attachment.set_param('name',attach_file['name'])
attachment.add_header('Content-Dispositon','attachment', filename=attach_file['name'])

return msg

def send(from_addr, to_addrs, msg, my_password):
smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login(from_addr, my_password)
smtpobj.sendmail(from_addr, to_addrs, msg.as_string())
smtpobj.close()

メインのファイルに追記する

次に、メインのファイルにて以下を入力してください。

import configparser

# iniファイルの読み込み
ini = configparser.ConfigParser()
ini.read('./config.ini','UTF-8')

# メール送信用データ
FROM_ADDRESS = ini['mail_info']['FROM_ADDRESS']
MY_PASSWORD = ini['mail_info']['MY_PASSWORD']
TO_ADDRESS = ini['mail_info']['TO_ADDRESS'].split(',')
CC_ADDRESS = ini['mail_info']['CC_ADDRESS'].split(',')


SUBJECT = 'タイトル'
BODY = '本文'

to_addr = TO_ADDRESS
cc_addr = CC_ADDRESS
subject = SUBJECT
body = BODY
to_addrs = to_addr + cc_addr

msg = mail.create_message(FROM_ADDRESS, to_addr, cc_addr, subject, body)
mail.send(FROM_ADDRESS, to_addrs, msg, MY_PASSWORD)

iniファイルを作成する

最後にiniファイルに送信先情報を記載します。
CC_ADDRESSとCC_ADDRESSは「,」区切りで複数登録することができます。

[mail_info]
FROM_ADDRESS = hoge@hoge.co.jp
MY_PASSWORD = password
TO_ADDRESS = to_hogehoge@hoge.co.jp
CC_ADDRESS = cc1_hogehoge@hoge.co.jp,cc2_hogehoge@hoge.co.jp


Pythonを使ってGmailでファイル添付してメールを送信するプログラム

メインのファイルに追記する

メインの部分だけ一部修正します。

import configparser

# iniファイルの読み込み
ini = configparser.ConfigParser()
ini.read('./config.ini','UTF-8')

# メール送信用データ
FROM_ADDRESS = ini['mail_info']['FROM_ADDRESS']
MY_PASSWORD = ini['mail_info']['MY_PASSWORD']
TO_ADDRESS = ini['mail_info']['TO_ADDRESS'].split(',')
CC_ADDRESS = ini['mail_info']['CC_ADDRESS'].split(',')


SUBJECT = 'タイトル'
BODY = '本文'

to_addr = TO_ADDRESS
cc_addr = CC_ADDRESS
subject = SUBJECT
body = BODY
to_addrs = to_addr + cc_addr

mine={'type':'text','subtype':'comma-separated-values'}
attach_file={'name':os.path.basename(convertFilePath),'path':convertFilePath}
msg = mail.create_message_attach(FROM_ADDRESS, to_addr, cc_addr, subject, body, mine, attach_file)
mail.send(FROM_ADDRESS, to_addrs, msg, MY_PASSWORD)

上記ではCSVを添付するように設定しています。

【まとめ】Pythonはやっぱり便利

ぼくは、クローリングの結果をメールで送信するプログラムを作りましたが、他にも使えると思います。

例えば、日報。システムで作業管理している場合には日報はないかもしれませんが、そういったものがない場合、個人的にエクセルで作業記録をし、そのエクセルの内容を文面に落とし込む処理を書き、Pythonで自動送信すれば、日報の出し忘れもなくなります。

ちなみに、クローリングとの相性は比較的良いと思います。
新しいデータが見つかったり、条件にあう情報が見つかったら、URLと内容を本文に記載してメールを自動送信することで、出先でも気づけるため、情報を取り扱う方に向いていると思います。

今後もPythonに関する情報を公開していきたいと思います。

python3でPyOCRを使って画像を文字列に変換する方法

目次OCRとはpython3でOCRを活用したい場面画像上の文字/数字をOCRで認識するWEB上の画像だってOCRで文字認識できるPyOCRとtesseractのインストール手順Windowsの場合LinuxやmacOSの場合tesseract-OCRをインストールするtesseract-OCRのパス(path)を通すPyOCRを用いて画像認識するサンプルコードWEB上の画像を文字起こししたい場合のサンプルコードChrome Driverとの組み合わせで実装する画像上の文字と同一の文字をフォームに入力する ...

ReadMore

トップ画像

pyhon3でWEBクローリングするならSelenium WebDriverを活用しよう(導入手順と使い方)

目次スクレイピングは情報を「抽出」することクローリングはWEB上を「巡回」することpythonではクローリングを簡単に実装できるSelenium WebDriverを使ってクローリングするSelenium WebDriver(Chrome Driver)の導入手順1.Chromeのバージョンを確認する2.Chromeのバージョンと一致するChromeDriverをダウンロードする3.ダウンロードしたEXEファイルをフォルダに格納して環境変数を割り当てる4.Seleniumをインストール5.テストコードを作 ...

ReadMore

Python3でgmailからメールを送る方法(ファイル添付あり)

AIの分野で注目のPython(パイソン)ですが、とても便利な言語で、いろいろなことができちゃいます。ぼくは、クローリングツールを作る兼ね合いでPythonと出会い、クローリングツールの他に自動メール送信ツール、ビットコイン自動売買ツールなど、いろいろな物を試作しました。 その中で、gmailでファイル添付してメールを送信する仕組みが、調べた通りでできなかったため、自分なりに修正した物でを公開したいと思いました。 そのまま使えるはずですが、もしうまくいかない場合はご連絡ください。 目次Python3を使っ ...

ReadMore

1日1ポチお願いいたします!
人気ブログランキング

-Python, ビジネス関連
-,

© 2020 with-Biz