2017-11-23 11 views
0

次の単純なpythonとmailclientを使用してGoogle SMTPサーバー経由でメールを送信しようとしています。Google SMTPセキュリティ保護されていないアプリケーション

私は、Googleがこのスクリプトを安全でないと判断した部分について少し混乱しており、安全性の低いアプリケーションで送信者のGmailアカウントにアクセスする必要があります。

安全性の低いアプリケーションで自分のGmailアカウントにアクセスする必要がなくても、この問題を解決する方法はありますか。

#Make necessary imports 

import mailclient 

#Craft the message 
msg = mailclient.Message("This will be the subject", "This will be the body content", '[email protected]', '[email protected]') 

#Create server object with gmail 

s = mailclient.Server('smtp.gmail.com', '587', '[email protected]', 'senderpassword', True) 

#Send email 

s.send(msg) 
+0

これはコードとは関係ありません。あなたはGoogleアカウントでそれを有効にする必要があります。 https://support.google.com/accounts/answer/6010255?hl=ja –

+0

アカウントの安全性の低いアプリケーションを有効にせずに他のメールクライアントを使用することも可能です。フラグを立てないために私のコードに含めるべきことは何ですか? – asla

+0

Googleではコードレベルで何もできません。 Outlookまたはビジネスsmtpサーバーの資格情報を使用してみてください。 –

答えて

1

Googleは、彼らがセキュアでないアプリケーション呼んでいるもののために非常に明示的ではありませんが、私は彼らがこれらのポート上のポート25または587を使用するアプリケーションであることを推測し、接続が最初に確立されているので、言うのは難しいです暗号化されていないチャネルが暗号化され、STARTTLSコマンドが発行されたときにのみ暗号化されます。

だから私は、私はそれがmailclientを使用して可能であるかどうかわからないが、標準ライブラリモジュールで、それはのように単純である必要があります。ポート465でSSL経由で直接接続を確立しようとする必要があることを推測する:

import smtplib 
from email.message import EmailMessage 

msg = EmailMessage() 
msg['Subject'] = "This will be the subject" 
msg['From'] = '[email protected]' 
msg['To'] = [ '[email protected]' ] 
msg.set_content("This will be the body content") 

server = smtplib.SMTP_SSL('smtp.gmail.com') 
server.login('[email protected]', 'senderpassword') 
server.send_message(msg) 
server.quit() 
関連する問題