Python获取公网IP并发送到QQ邮箱

作者:Nicky2024.01.05 15:15浏览量:13

简介:本文将介绍如何使用Python获取公网IP地址,并将该信息通过QQ邮箱发送给指定接收者。

获取公网IP地址可以使用Python的第三方库requestsipify。首先,需要安装这两个库,可以使用以下命令:

  1. pip install requests ipify

接下来,可以使用以下代码获取公网IP地址:

  1. import requests
  2. import ipify
  3. # 获取公网IP地址
  4. public_ip = ipify.get_public_ip()
  5. print(public_ip)

获取到公网IP地址后,可以使用Python的smtplibemail库将该信息发送到QQ邮箱。首先,需要安装这两个库,可以使用以下命令:

  1. pip install smtplib email

接下来,可以使用以下代码将公网IP地址发送到QQ邮箱:
```python
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import os

发件人电子邮箱账号、发件人电子邮箱密码、收件人电子邮箱账号、抄送电子邮箱账号(可选)

sender_email = ‘your_email@qq.com
sender_password = ‘your_email_password’
receiver_email = ‘recipient_email@qq.com
cc_email = ‘cc_email@qq.com’ # 可选

邮件主题、邮件正文内容、邮件接收者、抄送者(可选)

subject = ‘公网IP地址’
content = f’您的公网IP地址是:{public_ip}’
recipients = [receiver_email]
ccs = [cc_email] if cc_email else [] # 如果有抄送者,则添加抄送者邮箱地址

设置SMTP服务器和端口号、发件人电子邮箱账号和发件人电子邮箱密码(使用授权码登录QQ邮箱)

smtp_server = ‘smtp.qq.com’
smtp_port = 587 # 使用SSL加密时,端口号为465或994;使用TLS加密时,端口号为587或465。这里使用TLS加密。
auth_code = ‘your_auth_code’ # 使用授权码登录QQ邮箱,在QQ邮箱设置中生成授权码。

创建发件人电子邮箱账号和授权码的连接,并登录发件人电子邮箱账号(使用授权码登录QQ邮箱)

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.starttls() # 使用TLS加密连接SMTP服务器和端口号。
smtp_obj.login(sender_email, sender_password) # 使用授权码登录发件人电子邮箱账号。

创建邮件正文内容并添加邮件主题、邮件接收者、抄送者(可选),并发送邮件到收件人电子邮箱账号和抄送者电子邮箱账号(如果有)

msg = MIMEText(content, ‘plain’, ‘utf-8’) # 设置邮件正文内容为纯文本格式,编码方式为UTF-8。
msg[‘Subject’] = Header(subject, ‘utf-8’) # 设置邮件主题。这里使用utf-8编码方式。
msg[‘From’] = Header(sender_email, ‘utf-8’) # 设置发件人电子邮箱账号。这里使用utf-8编码方式。
msg[‘To’] = ‘, ‘.join(recipients) # 设置收件人电子邮箱账号。这里使用逗号分隔多个收件人电子邮箱账号。如果需要添加抄送者,则将抄送者电子邮箱账号添加到msg[‘To’]中。这里使用utf-8编码方式。
if ccs: # 如果需要添加抄送者,则将抄送者电子邮箱账号添加到msg[‘Cc’]中。这里使用utf-8编码方式。
msg[‘Cc’] = ‘, ‘.join(ccs) # 设置抄送者电子邮箱账号。这里使用逗号分隔多个抄送者电子邮箱账号。
smtp_obj.sendmail(sender_email, msg[‘To’].encode(), msg.as_string()) # 发送邮件到收件人电子邮箱账号和抄送者电子邮箱账号(如果有)。这里需要将msg[‘To’]和msg[‘Cc’]中的字符串编码为字节流,才能通过SMTP协议发送邮件。如果需要添加抄送者,则将抄送者电子邮箱账号添加到smtp_obj