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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Python

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

Q&A

1回答

1863閲覧

Pythonでgmailの操作をしたい!

pfpf

総合スコア0

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Python

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

0グッド

1クリップ

投稿2022/01/06 02:24

編集2022/01/07 09:38

Python初心者です。

①Pythonでgmailにログインして受信フォルダにあるメールを特定の条件で解析する。
②対象のメールに対して返信を行う。
というコードを書きたいんですが、HENNGEというセキュリティが入っており、
gmailにログインするためのコードが分かりません。
HENNGEが入っていなければネットで調べると下記コードがありました。

Gmailに接続

def send_gmail(msg):
# Gmailサーバーに接続
server = smtplib.SMTP_SSL(
'smtp.gmail.com', 465,
context=ssl.create_default_context())
server.set_debuglevel(1) # ログ出力
# ログインしてメールを送信
server.login(gmail.account, gmail.password)
server.send_message(msg)

if name == 'main':
send_test_email()
print('ok.')

そもそもHENNGEが入っているとPythonでログインするにはseleniumを使うしかないのでしょうか?

ちなみに通常の操作だと下記ステップがあります。
①gmailログイン画面(アドレスのみ)
イメージ説明

②HENNGEログイン画面(ユーザー名とパスワード)※googleアカウントとは異なる
イメージ説明

③本人確認画面
イメージ説明

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

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

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

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

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

guest

回答1

0

こんばんわ。

直接の回答ではないのですが、

HENNGEって業務用のセキュリティソリューションですよね?

もしかして提示のコードを会社のPCもしくはサーバーから実行しようとしていますか?

以下追記

質問者さんの上司の許可があり、かつメールを安全に送信できる仕組みがあるとのことなので

コードを以下に提示します。

python

1import smtplib 2from email.mime.text import MIMEText 3from email.header import Header 4 5charset = 'iso-2022-jp' 6text = '日本語の本文\n2行目\n3行目' # ここにメールの本文を記載 7subject = 'メールタイトル' # ここにメールのタイトルを設定 8to_address_list = ['xxxxxxxx@gmail.com','yyyyyyyy@gmail.com'] # 送信先メールアドレスのリストを設定 9from_address = 'zzzzzzzz@gmail.com' # 送信元メールアドレスを設定 10google_password = '********' # googleアカウントのパスワードを設定 11 12msg = MIMEText( text, 'plain', charset) 13msg['Subject'] = Header( subject.encode(charset), charset) 14smtp_obj = smtplib.SMTP('smtp.gmail.com', 587) 15smtp_obj.ehlo() 16smtp_obj.starttls() 17smtp_obj.login(from_address,google_password) 18 19for to_address in to_address_list: 20 smtp_obj.sendmail(from_address,to_address, msg.as_string()) # 送信処理を行う 21 22smtp_obj.quit()

なお、このスクリプトの実行にあたっては送信元Gmailアカウントの設定変更が必要です。
安全性の低いアプリの許可: 有効 に設定して下さい。

参考になれば幸いです。

投稿2022/01/06 09:40

編集2022/01/07 08:18
srsnsts

総合スコア508

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

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

pfpf

2022/01/06 23:46

はい、HENNGEは業務用のセキュリティソリューションで会社のpcで実行しようとしています。
srsnsts

2022/01/06 23:52

おはようございます。 コメントありがとうございます。 技術的に対応可能かどうかはさておき メールの自動送信なので、実行には相当危険を伴うと思います。 一旦送ってしまったら取り消しが効かない、とかね。 実施に当たり上司等の許可は得られていますか?
pfpf

2022/01/07 07:10

返信ありがとうございます。 実施にあたり上司の許可はいただいています。(上司からの依頼でもあります。。。) おっしゃる通りリスクもあるため、最終的なメール送信は担当者が内容を確認して行う予定です。 HENNGEでは、通常のメール送信後に保留フォルダにメールが溜まり、 再度内容を確認してメール送信する処理が必要になります。 Pythonではこの保留フォルダに送信予定メールを溜めるところまでを行う予定です。
srsnsts

2022/01/07 07:45

こんばんわ、コメントありがとうございます。 上司の許可があること及び安全にメール送信できる仕組みがあること、了解いたしました。 情報提供感謝です。 サンプルコードをUPしますのでもうしばらくお待ち下さい。
srsnsts

2022/01/07 08:19

サンプルコードをUPしました。ご確認下さい。
pfpf

2022/01/07 08:20

こちらこそご対応ありがとうございます! サンプルコード楽しみにしてます。
srsnsts

2022/01/07 08:23

あ〜たった今UPしたところです。 入れ違いになっちゃったかな。
pfpf

2022/01/07 09:41

サンプルコードありがとうございます。 しかし、実行してみましたがうまくいきませんでした。。。 「ログインができませんでした」というエラー文がでてきていました。 参考用に通常のログインの過程を質問文に追加してみました。 やはり、HENNGEが入っているとPythonでログインは難しいのでしょうか?
srsnsts

2022/01/07 09:52

コメントありがとうございます。 う〜んなんだろう。 どんなエラーメッセージが出たか教えてもらうことはできますか?
pfpf

2022/01/07 10:03

エラーメッセージをお送りします。 --------------------------------------------------------------------------- SMTPAuthenticationError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_3112/772559953.py in <module> 11 smtp_obj.ehlo() 12 smtp_obj.starttls() ---> 13 smtp_obj.login(from_address,google_password) 14 15 for to_address in to_address_list: ~\AppData\Local\Programs\Python\Python39\lib\smtplib.py in login(self, user, password, initial_response_ok) 748 749 # We could not login successfully. Return result of last attempt. --> 750 raise last_exception 751 752 def starttls(self, keyfile=None, certfile=None, context=None): ~\AppData\Local\Programs\Python\Python39\lib\smtplib.py in login(self, user, password, initial_response_ok) 737 method_name = 'auth_' + authmethod.lower().replace('-', '_') 738 try: --> 739 (code, resp) = self.auth( 740 authmethod, getattr(self, method_name), 741 initial_response_ok=initial_response_ok) ~\AppData\Local\Programs\Python\Python39\lib\smtplib.py in auth(self, mechanism, authobject, initial_response_ok) 660 if code in (235, 503): 661 return (code, resp) --> 662 raise SMTPAuthenticationError(code, resp) 663 664 def auth_cram_md5(self, challenge=None): SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials r10sm5072496pff.120 - gsmtp')
srsnsts

2022/01/07 10:09

エラーコードありがとうございます。 ちょっと調べてみますね。
srsnsts

2022/01/07 10:14

2段階認証プロセスを使用しているということはありますか? こちらの環境では 2段階認証プロセスを利用しておらず、なおかつ 安全性の低いアプリの許可: 有効 になっているので、そこらあたりの違いが原因かなと思います。
pfpf

2022/01/07 10:14

すみません。。 ありがとうございます。 自分でももう少し調べてみます!
pfpf

2022/01/07 10:20

2段階認証プロセス:オフ 安全性の低いアプリの許可:有効 でおそらくgoogleの環境は同じかと思われます。
srsnsts

2022/01/07 10:20

いえいえ。 MTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials r10sm5072496pff.120 - gsmtp') このメッセージが出ているってことは、おそらくgmailのサーバーにパケットが届いていて 認証エラーですって言われているので、手も足も出ないという状況ではないと思います。 https://koleoblog.info/python-gmail-auto/ 上記のサイトも設定の確認の参考になるかもしれません。
srsnsts

2022/01/07 10:22

失礼、入れ違いになってしましました。 なんだろう・・・・ もうちょっと理由を考えてみます。
pfpf

2022/01/07 10:30

ありがとうございます。 仮説ですが、 gamilでログインするときにアドレスを入力した後にパスワード入力画面には遷移せずに HENNGEのログイン画面に遷移するところが原因かと思われるのですが、どうでしょうか?
srsnsts

2022/01/07 10:32

可能性としてはありますね。 該当のpythonコードだけHENNGEの管理下から外すみたいなことはできるのかなぁ・・
pfpf

2022/01/07 10:37

ちなみにサンプルコードで私用googleアカウントで試したら メールは無事に送信できて実行できました。
srsnsts

2022/01/07 10:42

ご確認いただきありがとうございます。 HENNGEを導入した業者があるはずですから、 その業者に確かめてもらうというのはどうでしょう。 なにか技術的なサポートを受けられるかもしれません。
pfpf

2022/01/07 11:00

HENNGE株式会社に問い合わせてみるということですか?
srsnsts

2022/01/07 11:03

その通りです。 私はあくまでネット上のサンプルを見つけてきて、私の環境で動かし、 動作しましたと言っているに過ぎません。 でも、HENNGEを導入した会社ならば、 そこらへんのノウハウも持っていると考えられます。
pfpf

2022/01/07 11:09

そうですね。 一度問い合わせしてみます。 色々とご対応いただきありがとうございました!
srsnsts

2022/01/07 11:10

良い結果が得られるといいですね、成功を祈っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問