PythonはQQメールボックスに基づいてSSL送信を実装します

1.QQメールボックスSSL送信

QQ認証コードを取得する

ssl送信方法では、メールボックスパスワードではなく、認証コードを使用します。具体的な手順は次のとおりです。

送信者のQQメールボックスにログインし、アカウントを設定すると、POP3 / STMPサービスが有効になり、認証コードが生成されます。

シークレットを確認する

16桁の認証コードをコピーする

qqメールボックス送信ソースコード

#! /usr/bin/python3
# encoding:utf-8'''
Created on 2020-04-2412:15
@ author: Administrator
'''
# coding:utf-8import smtplib
from email.mime.text import MIMEText #smtplibとMIMETextを導入します
from email.mime.multipart import MIMEMultipart

# SMTPアドレスを設定する
host ='smtp.qq.com'
# 発信サーバーのポート番号を設定します。SSLと非SSLの2つの形式があることに注意してください。qqSSLポートは465で、非SSLポートはデフォルトで25です。
port ="465"
# メールを設定する
sender ="[email protected]"
# 送信メールボックスの認証コードを設定します,qqメールボックスssl送信では、stmpを開いてパスワードを取得する必要があります
pwd ='sqmqweertyuiioplk' #16認証コード
# メールの受信者を設定する,複数の人に送信し、別々に
receiver ='[email protected],[email protected]' 
# メールccを設定,複数の人に送信し、別々に
cc ='[email protected]''''添付ファイルなしでメールを送信
# html形式のメールを設定する
# body ='<h1これはpythonテストメールです</h1 <p test</p ' 
# msg =MIMEText(body,'html') #メール形式に準拠したHTMLコンテンツに本文を設定します

# 通常の形式のメールを送信する
msg =MIMEText('Python通常形式、メール送信テスト...','plain','utf-8')'''

# 添付ファイルを送信する必要があるメソッドの例
msg =MIMEMultipart()
# 送信ヘッダー情報を設定する
msg.add_header('subject','テストメール') #メッセージタイトルを設定する
msg.add_header('from', sender)   #送信者を設定する
msg.add_header('to', receiver)   #受信者を設定する
msg.add_header('Cc',cc)       #Cc

# ボディコンテンツを設定する
msg.attach(MIMEText('Pythonメール送信テスト...','plain','utf-8'))
 
# アタッチメント1、Dをセット://cs.txtファイル
att1 =MIMEText(open('D://cs.txt','rb').read(),'base64','utf-8')
att1.add_header('Content-Type','application/octet-stream')
# ここでのファイル名は任意に書くことができ、どの名前を書くか、添付ファイルの名前が電子メールに表示されます
att1.add_header('Content-Disposition','attachment', filename='cs.txt')
msg.attach(att1)try:
 # 注意!非SSLポートを使用している場合は、ここでSMTPに変更してください
 smtpObj = smtplib.SMTP_SSL(host, port)
 # メールにログインする
 smtpObj.login(sender, pwd)
 # メールを送る,2番目のパラメーターは送信者のCCアドレスであることに注意してください
 smtpObj.sendmail(sender, receiver.split(',')+ cc.split(','), msg.as_string())print("正常に送信されました")
except smtplib.SMTPException as e:print("送信に失敗しました")print(e)finally:
 smtpObj.quit()

送信後の結果のスクリーンショット

2、163メールボックスの非SSL送信

非sslは認証コードを取得する必要はなく、電子メールパスワードを直接構成するだけです。

163 メールのソースコード

#! /usr/bin/python3
# encoding:utf-8'''
Created on 2020-04-2412:15
@ author: Administrator
'''
# coding:utf-8import smtplib
from email.mime.text import MIMEText #smtplibとMIMETextを導入します
from email.mime.multipart import MIMEMultipart
 
# SMTPアドレスを設定する
host ='smtp.163.com'
# 送信サーバーのポート番号を設定します。 SSLと非SSL、非SSLのデフォルトポート25には2つの形式があることに注意してください。
port =25
# メールを設定する
sender ="[email protected]"
# 送信者メールボックスのパスワードを設定する
pwd ='xxxx' 
# メールの受信者を設定する,複数の人に送信し、別々に
receiver ='[email protected]' 
# メールCCを設定,複数の人に送信し、別々に
cc ='[email protected]''''添付ファイルなしでメールを送信
# html形式のメールを設定する
# body ='<h1これはpythonテストメールです</h1 <p test</p ' 
# msg =MIMEText(body,'html') #メール形式に準拠したHTMLコンテンツに本文を設定します

# 通常の形式のメールを送信する
msg =MIMEText('Python通常形式、メール送信テスト...','plain','utf-8')'''

# 取り付け方法の例
msg =MIMEMultipart()

# ヘッダー情報を設定する
msg.add_header('subject','テストメール') #メッセージタイトルを設定する
msg.add_header('from', sender)   #送信者を設定する
msg.add_header('to', receiver)   #受信者を設定する
msg.add_header('Cc',cc)       #Cc

# ボディコンテンツを設定する
msg.attach(MIMEText('Pythonメール送信テスト...','plain','utf-8'))
 
# アタッチメント1、Dをセット://cs.txtファイル
att1 =MIMEText(open('D://cs.txt','rb').read(),'base64','utf-8')
att1.add_header('Content-Type','application/octet-stream')
# ここでのファイル名は任意に書くことができ、どの名前を書くか、添付ファイルの名前が電子メールに表示されます
att1.add_header('Content-Disposition','attachment', filename='cs.txt')
msg.attach(att1)try:
 # 注意! SSLポートを使用している場合は、ここでSMTPに変更する必要があります_SSL
 smtpObj = smtplib.SMTP(host, port) 
 # メールにログインする
 smtpObj.login(sender, pwd)
 # メールを送る,2番目のパラメーターは送信者のCCアドレスであることに注意してください
 smtpObj.sendmail(sender, receiver.split(',')+ cc.split(','), msg.as_string())print("正常に送信されました")
except smtplib.SMTPException as e:print("送信に失敗しました")print(e)finally:
 smtpObj.quit()

送信後の結果のスクリーンショット

三、問題

3.1 Pythonは、qqメールボックスSMTPを介してメールを送信できませんでした。

問題の説明:qqアカウントとパスワードSSLを使用して電子メールを送信します。エラー:(535、b 'ログインに失敗しました。ログインするには認証コードを入力してください。詳細については、http://service.mail.qq.com/cgi-bin/を参照してください。 help?subtype = 1 && id = 28 && no = 1001256 ′)

解決策:POP3 / SMTPサービスをオンにし、認証コードを取得して、qqソースコードのメールボックスパスワードを認証コードに変更します

3.2 html添付ファイルが.binファイルサフィックスに変更されました

問題の説明:図に示すように、添付ファイルをhtml形式で送信し、.binサフィックスが付いたファイルを受信します。

解決策:att1 ["Content-Disposition"] = 'attachment; filename = "' +" interface test report.html "をatt1.add_header( 'Content-Disposition'、 'attachment'、filename = 'interface testreportに変更します.html ')

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

PythonはQQメールボックスに基づいてSSL送信を実装します
Pythonはメールを送信するためのQQメールボックスを実装しています
PythonはSMTPメール送信を実装します
Pythonに基づいて個人のフットプリントマップを描く
pythonに基づいてマトリックスの計算結果を確認する
Pythonのインターフェースに基づいてプログラミングする方法
Pythonに基づくデータタイプの詳細な説明
FMEに基づくPythonプロセスの使用図
pythonに基づく名刺管理システムの実装