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に関する情報を公開していきたいと思います。

「ReCaptcha V2」を突破する!2Captchaで挑む完全自動化

スクレイピングやブラウザ操作の自動化タスクにおいて、一番の難所は何といっても各種キャプチャの突破です。 そもそもキャプチャ機能はロボット操作されないために設置するため、それを突破しようとする時点で「?」ではありますが、それでもなんとかしたい場合の解決方法として「2Captcha」というサービスがあります。 実はこのサービスを使うと、サクッとキャプチャ突破できます。早速紹介したいと思います。 ※利用は自己責任でお願いいたします。悪用厳禁です。 2Captchaについて ロシアの会社が提供するキャプチャ機能を ...

ReadMore

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

OCRとは OCRとはOptical Character Recognition/Readerの略で、オーシーアールと読みます。光学的文字認識とも呼ばれ、手書きされた文字や印刷された文字など、画像やPDF上の文字を読み取り、文字コードに変換する技術です。 python3でOCRを活用したい場面 OCRを活用するのにはいろいろな用途があると思います。 画像上の文字/数字をOCRで認識する 画像上の文字や数字を認識したいケースに活用できます。 今回は、この点に関してサンプルを作成したいと思います。 WEB上の ...

ReadMore

トップ画像

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

スクレイピングは情報を「抽出」すること スクレイピングとは「何らかのデータ構造から抽出すること」を指します。 簡単に言うと「プログラム間でやり取りされるデータ」の中から、人が読める内容を抽出することです。 データスクレイピングのうち、WEB上の情報に絞ったものを「WEBスクレイピング」といいます。 クローリングはWEB上を「巡回」すること クローリングは「WEB上をプログラミングで巡回すること」を指します。 WEB上を巡回する上で何をするかは、クローリングの目的次第ですが、多くの場合は情報収集のために実行 ...

ReadMore

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

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

ReadMore

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

-Python, ビジネス関連
-,

© 2024 with-Biz