最初に、title.txt、content.txt、smtp.py、qq.txt の 4 つのファイルを作成します。
その中で、title.txt のテキストにはメールの件名を入れます。例:
content.txt のテキストにはメールの内容を入れます。例:
qq.txt には送信するメールアドレスを入れます。例:
smtp.py のコード#
import smtplib
from email.mime.text import MIMEText
from email.header import Header
while True:
# メールログイン情報
email_user = 'あなたのQQメール'
email_password = 'あなたの認証コード'
# 受信者リストを読み込む
with open('qq.txt', 'r') as file:
recipient_list = file.readlines()
# 各受信者のメールアドレスの末尾の改行と空白文字を削除する
recipient_list = [recipient.strip() for recipient in recipient_list]
# メール本文と件名を読み込む
with open('content.txt', 'r', encoding='utf-8') as file:
body_text = file.read().strip()
with open('title.txt', 'r', encoding='gbk') as file:
title_text = file.read().strip()
# メールの内容を作成する
msg = MIMEText(body_text, _subtype='html', _charset='utf-8')
msg['From'] = email_user
msg['Subject'] = Header(title_text.encode('utf-8'), 'utf-8').encode()
# SMTPサーバーに接続する
with smtplib.SMTP_SSL('smtp.qq.com', 465) as server:
server.login(email_user, email_password)
# 各受信者にメールを送信する
for recipient in recipient_list:
try:
server.sendmail(email_user, recipient, msg.as_string())
print(f'[*] メールが {recipient} に正常に送信されました')
except smtplib.SMTPDataError as e:
if e.smtp_code == 550:
print(f'[!] {recipient} へのメール送信に失敗しました:{e.smtp_error}')
elif e.smtp_code == 501:
print(f'[!] {recipient} へのメール送信に失敗しました:受信者のアドレスに構文エラーがあります')
else:
print(f'[!] メールの送信中にエラーが発生しました:{e}')
print('[*] すべてのメールが送信されました。')
# ユーザーにyesまたはnoを入力して、さらにメールを送信するかどうかを確認するように促す
answer = input("もう一度メールを送信しますか?(yes/no) ")
# ユーザーが「no」を選択した場合、プログラムを終了し、それ以外の場合は引き続きメールを送信する
if answer.lower() == 'no':
print("プログラムを終了します。")
break
else:
continue
前提条件は、QQ メールの POP3、SMTP サービスとサービスの認証コード(パスワード)を有効にする必要があります。163 メールも同じです。
QQ メールにログインします。公式ウェブサイト:https://mail.qq.com/
ログイン / 登録後、メールホームページに移動し、左側の設定をクリックします。
アカウントをクリックします。
アカウントページをスクロールダウンし、赤い枠で囲まれた内容を見つけてクリックします。
この文字列が認証コードです。
認証コードとメールをコードブロックに入力します:
email_user = 'あなたのQQメール'
email_password = 'あなたの認証コード'
以下は、一括でメールアドレスを生成するための Python コードです。
import random
import string
def generate_random_email():
domain = 'qq.com'
username = ''.join(random.choices(string.ascii_letters + string.digits, k=8))
email = username + '@' + domain
return email
random_emails = []
for _ in range(100):
random_emails.append(generate_random_email())
for email in random_emails:
print(email)
#このコードは、100個のランダムなQQメールアドレスを生成し、それらを出力します。各メールアドレスのユーザー名の長さは8文字です。必要に応じてユーザー名の長さとドメイン名をカスタマイズできます
ここでは、8 桁の QQ メールを 100 個生成し、生成されたメールは qq.txt テキストファイルに保存されます。
バルクメール送信を開始します。存在しないメールはスキップされ、次のメールが送信されます。