ranranxiaowanzi 发表于 2023-7-21 09:27

python如何调用一个链接网页,作为邮件的内容去发送呢?

本帖最后由 涛之雨 于 2023-7-21 11:26 编辑

import smtplib
from email.mime.text importMIMEText
from email.header import Header
import requests
from bs4 import BeautifulSoup
def sead_email():
    accout='**'
    destination='**'
    password='**'
      # 获取百度页面的内容
    response = requests.get("https://www.baidu.com/")
    response.encoding = 'utf-8'
    baidu_content = response.text

    soup=BeautifulSoup(baidu_content,'html.parser')

    body_content=str(soup.body)
    #'''
    #with open('www.baidu.com','r',encoding='utf8') as f:
   #   file_content=f.read()

    # 将邮件内容设置为HTML格式
    message = MIMEText(body_content, 'html', 'utf-8')
    message['From']=Header(destination,'utf-8')
    message['Subject']=Header('Python SMTP 测试','utf8')
    print('准备发送')
    try:
      server = smtplib.SMTP_SSL("smtp.qiye.163.com",465)
      print('已经连接正在登入')
      server.login(accout,password)
      print('账号登入成功')
      server.sendmail(accout,destination,message.as_string())
      print('succsesfully')
    except Exception as e:
      print('失败',str(e))
    finally:
      if server:
            server.quit()
sead_email()


邮件内容是这样的,但是我想要的是百度页面完整的


ranranxiaowanzi 发表于 2023-7-21 09:31

写错主题了是python不是php{:1_937:}

qingsoft 发表于 2023-7-21 11:23

iframe 能行不呢?

StockGeek 发表于 2023-7-21 11:24

import smtplib
from email.mime.text import MIMEText
from email.header import Header

def send_email(subject, content):
    # 邮件发送方邮箱地址
    sender = '我的邮箱地址'
    # 邮件接收方邮箱地址
    receivers = ['收件邮箱地址1', '收件邮箱地址2']

    # 创建一个带有内容和标题的邮件实例
    message = MIMEText(content, 'plain', 'utf-8')
    message['Subject'] = Header(subject, 'utf-8')
    message['From'] = sender
    message['To'] = ','.join(receivers)

    # 登录SMTP服务器
    smtpObj = smtplib.SMTP_SSL('smtp.qq.com', 465)
    smtpObj.login(sender, '邮箱授权码')

    # 发送邮件
    smtpObj.sendmail(sender, receivers, message.as_string())

    # 关闭连接
    smtpObj.quit()

# 调用函数发送邮件
send_email('邮件标题', '邮件内容')

邮箱已开启SMTP服务,否则需要在邮箱的设置中开启。

涛之雨 发表于 2023-7-21 11:31

帮你编辑了一下帖子,以后请自行编辑,帖子左下角有编辑按钮,代码块和插入图片等说明详情请在顶部菜单中查看帮助。

页面的HTML组件都是加载出来了,应该是css和js加载失败导致无法正常显示,

这是因为email的安全限制,应该无法解决(顶多布局一样,但是应该只能手动添加css,js应该无法在邮件里正常执行)

daniel7785 发表于 2023-7-21 12:05

我来试一下

亡屿歌 发表于 2023-7-21 22:36

你请求到的页面应该是完整的,只是在邮箱内禁止了JavaScript脚本的执行,如果js可以在邮件里执行很容易被用作js注入攻击,这是出于安全策略的考虑。貌似无解,当前还没想到好的解决方式。

亡屿歌 发表于 2023-7-21 22:53

亡屿歌 发表于 2023-7-21 22:36
你请求到的页面应该是完整的,只是在邮箱内禁止了JavaScript脚本的执行,如果js可以在邮件里执行很容易被用 ...

如果拿下来的是html格式,放进去用webbrowser解析试试看能不能满足你的要求吧。

whh19921024 发表于 2023-7-22 22:12

还是截个图发送邮件最方便,css,js这些渲染邮件不太会都允许的。

ranranxiaowanzi 发表于 2023-7-24 11:45

涛之雨 发表于 2023-7-21 11:31
帮你编辑了一下帖子,以后请自行编辑,帖子左下角有编辑按钮,代码块和插入图片等说明详情请在顶部菜单中查 ...

谢谢大佬
页: [1] 2
查看完整版本: python如何调用一个链接网页,作为邮件的内容去发送呢?