質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

3回答

5419閲覧

SeleniumでGmailを送る方法

doa

総合スコア24

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2017/03/13 00:54

編集2017/03/13 07:28

###前提・実現したいこと
Pythonを用いてSeleniumからPhantomJSを起動してGmailにログインしてGmailを他の方に送るプログラムを作成したいと思っています。
(追記)Google APIなども検討しましたが、今後1日に100人以上の方にメールを送る必要性があるかもしれないため、こういう手段をとらせていただいてます。

###該当のソースコード

python

1from selenium import webdriver 2 3#PhantomJSのWebdriverオブジェクトを作成する 4driver = web driver.PhantomJS() 5 6#gmailのログイン画面を開く 7driver.get('http://www.gmail.com') 8 9#ここからログイン手続き 10#メールアドレスの記入 11input_address = driver.find_element_by_id('Email') 12input_address.send_keys('email@gmail.com') 13input_address.submit() 14#パスワードの記入 15input_pw = driver.find_element_by_id('Passwd') 16input_pw.send_keys('password') 17input_pw.submit() 18 19#ここからログイン後の処理 20#メールの作成 21button = driver.find_elements_by_class_name('T-I.J-J5-Ji.T-I-KE.L3') #Chromeで検証によって確認したclassname 22 23#buttonリストに要素があるか確認 24#確認してみると、[]と空のリストが返されてしまいます 25print(button) 26 27#button = driver.find_elements_by_class_name('z0')としても同じ結果でした。

###試したこと
いろいろ海外のサイトなども参照しつつ頑張ったのですが、なかなかうまくいきません。
今の問題は、(メールの)作成ボタンをcssselectorなどを用いても捕捉できずclick()メソッドによってそれを押せないことです。
どなたか解決策を教えてください。宜しくお願いします。
###補足情報(言語/FW/ツール等のバージョンなど)
python 3.6.0
selenium 3.3.0
phantomJS 2.1.1
を使っております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

どういう理由で、ブラウザ経由でGmailを送る必要があるのでしょうか。

Gmail公式にSMTP接続を用意していますので、そちらに接続したほうが圧倒的に楽だと思います。

投稿2017/03/13 01:39

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doa

2017/03/13 07:20

回答ありがとうございます。 私事なのですが、1日に100件以上のメールを送る必要があり、SMTP接続やGoogle APIを使うと100件で制限が来てしまうとのことだったので、こういう方法をとりました。
maisumakun

2017/03/13 07:25

100通/日というメールを送る状況であれば、それ相応のシステムを導入すべき場面だと思います。 そして、「Google が提供するインターフェースおよび手順以外の方法による本サービスへのアクセスを試みてはなりません。」Webインターフェースを自動化して使うというのも、この規約に引っかかると判断される恐れがあります。
doa

2017/03/13 07:35

なるほど...、確かにそうかもしれません。 実は自分は学生なので出費を抑えたかったのですが、やはり正規の手段をとらないといけないのですかね...
guest

0

メールを送るという目的ならGmail APIを使う方法はいかがでしょうか

http://thinkami.hatenablog.com/entry/2016/06/10/065731

投稿2017/03/13 05:10

driller

総合スコア720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doa

2017/03/13 07:22

回答ありがとうございます。 1日に100件以上のメールを送る必要があるためGoogle APIを使うとそれができなくなってしまうことから使いませんでした。
driller

2017/03/13 08:25

このようなサービスもあります。 https://www.mailgun.com 10,000通までは無料ですが、それ以上は従量課金制になります。 メールサーバを構築するという手もあるかもしれませんが、ちょっと大変ですね・・・
guest

0

自己解決いたしました。
自分がseleniumで操作していたブラウザと実際に検証で用いていたブラウザの違いが根本的な原因でした。
seleniumで操作していたブラウザはPhantomJSで、検証用のブラウザはChromeだったのですが、どうやらgoogle側はPhantomJSの方をサポートしていなかったらしく、PhantomJSでは簡易HTMLモードで表示されていたのに対して、Chrome側では標準HTMLモードで表示されていました。
標準HTMLモードで検証した結果を用いても意味なかったということでした。結果、gmailを無事に自動送信できました。
drillerさん、maisumakunさん、ご回答本当にありがとうございました。お騒がせいたしました。
お二方ともとてもいいアドバイスを下さいましたが、ベストアンサーは一人にしかできないので、今回は対応が早かったmaisumakunさんをベストアンサーに選ばさせていただきます。

投稿2017/03/13 22:16

doa

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問