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 ')
以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。