3児のパパそしてエンジニア

33歳3児のパパの家の事やエンジニアとしての事をつらつらと書きます

python gmailから送信

スクレイピングchromeIE・マウス操作でがんばって

gmail送信もできるが、

pythonには便利なものがある。

 

 

以下、gmail.pyなどで作成。

 ------------------------------------------------------------------------------------------------------------------

 

import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
import configparser

FROM_ADDRESS= ''
MY_PASSWORD= ''
BCC = ''
SUBJECT = '題名'
#BODY = 'pythonでメール送信'

def setting():
    config = configparser.ConfigParser()
    config.read('.//gmail.ini')

    section1 = 'GMAIL'
    global FROM_ADDRESS 
    FROM_ADDRESS = config.get(section1, 'FROM')
    global MY_PASSWORD
    MY_PASSWORD = config.get(section1, 'MY_PASSWORD')

def create_message(from_addr, to_addr, bcc_addrs, subject, body):
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Bcc'] = bcc_addrs
    msg['Date'] = formatdate()
    return msg


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


def gmail_send(hokoku):
    setting()
    subject = SUBJECT
    body = hokoku
    print(FROM_ADDRESS)
    print(MY_PASSWORD)
    f = open('TO_ADDRESS.txt')
    data1 = f.read() 
    f.close()
    lines1 = data1.split('\n') 
    for line in lines1:
        print(line)
        # to_addr = TO_ADDRESS
        to_addr = line
        msg = create_message(FROM_ADDRESS, to_addr, BCC, subject, body)
        send(FROM_ADDRESS, to_addr, msg)

----------------------------------------------------------------------------------------------------------------- 

 

上記は、配信目的で作成したので。

①配信元ファイル(gmail.ini)を読み込む

②TO_ADDRESS.txtに記載されているアドレスすべてに配信。

という流れです。

 

gmail.iniの中身

-----------------------------------------------------------------------------

[GMAIL]
FROM=xxxxxxxx@gmail.com
MY_PASSWORD=xxxxxxxx

----------------------------------------------------------------------------

 

 

■TO_ADDRESS.txtの中身

----------------------------------------------------------------------------

xxxx1@au.com
xxxx2@au.com
xxxx3@au.com
xxxx4@au.com

----------------------------------------------------------------------------

 

みたいな感じ。

 

ccやbccでなく、各送信先に1通ずつ送信する。

配信元の送信済みふぁいるに

xxxx1

xxxx2

xxxx3

xxxx4

の4通できるイメージ。

 

メールの内容は、呼び出しもとで引き数として渡す。

呼び出し元は↓

----------------------------------------------------------------------------

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 26 11:04:41 2019

@author: 
"""
import gmail

def go():
    gmail.gmail_send("TEST送信")

def main():
    go()
    print("終わり")

if __name__=='__main__':
    main()

----------------------------------------------------------------------------

 

こんな感じかな。

 

 

https://myaccount.google.com/lesssecureapps

ここで、許可の設定が必要です。

 

 

セキュリティ上もっと良い別の設定方法があるみたいですが、

これが一番簡単らしいので取りあえずこれで。。。