自动化发送163邮件

方法一:

import time
import datetime
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By def login(user, pwd):
""" 登录163邮箱 """
# 由于可以扫码登录,而我们选择用户名和密码登录,所以,要点击 密码登录
time.sleep(1)
wait.until(EC.presence_of_element_located((By.ID, 'switchAccountLogin'))).click()
# 进入iframe,因为有多个iframe,所以获取的是数组,在分析页面后,数组0索引的iframe是登陆的iframe
time.sleep(3)
iframe = driver.find_elements_by_tag_name('iframe')
driver.switch_to.frame(iframe[0])
# 获取用户名和密码标签,并输入对应的值
time.sleep(1)
driver.find_element_by_class_name('dlemail').send_keys(user)
time.sleep(2)
driver.find_element_by_class_name('dlpwd').send_keys(pwd)
time.sleep(2)
driver.find_element_by_id('dologin').click() def send_mail():
""" 发送163邮件,需要传递163的用户名和密码,收件人和内容 """
try:
# 第1步,执行登陆
login(user, pwd) # 第2步,点击写信按钮
wait.until(EC.presence_of_element_located((By.ID, '_mail_component_24_24'))).click() # 第3步,获取收件人,主题,内容框标签,写入内容
time.sleep(1)
# 3.1 填写收件人
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'nui-editableAddr-ipt'))).send_keys(addr) # 收件人
time.sleep(2)
# 3.2 填写主题
title = driver.find_elements_by_class_name('nui-ipt-input')
title[2].send_keys(theme) # 主题
# 3.3 进入content所在iframe,填写内容
time.sleep(1)
content_iframe = driver.find_element_by_class_name('APP-editor-iframe')
driver.switch_to.frame(content_iframe)
# 虽然nui-scroll这个类名在整个网页中有多个,但是这个iframe中只有一个,所以我们直接send_keys就行
nui_scroll = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'nui-scroll')))
nui_scroll.send_keys(content) # 第4步,因为发送按钮不在此时的iframe中,所以要先退出iframe,才能点击发送按钮
# 4.1 退出iframe
time.sleep(1)
driver.switch_to.default_content()
# 4.2 点击发送按钮
time.sleep(1)
# 这个发送按钮的类名有多个,最好for循环一下,因为有坑,发送按钮是第3个,前面还有两个空标签,但是前端检查中看不到
driver.find_elements_by_class_name('nui-btn-text')[2].click() finally:
# 关闭浏览器
time.sleep(3)
# driver.quit() if __name__ == '__main__':
from getpass import getpass
user = input("邮箱: ").strip() # 填写你的163账号
# pwd = getpass('密码: ') # 填写你的163密码 #getpass在pycharm中无法使用
pwd = input('密码: ') # 填写你的163密码
# 获取driver
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 5)
# driver.maximize_window()
# 发请求
driver.get('https://mail.163.com/')
addr = "1986109019@qq.com" # 收件人
theme = '我是你爸爸' # 主题
content = '天不生我李淳罡,剑道万古如长夜 ————\n{}'.format(datetime.datetime.now()) # 发送内容
send_mail()

方法二:

import time
from selenium import webdriver
def worker():
driver.get(url)
driver.find_element_by_id('switchAccountLogin').click()
iframe = driver.find_elements_by_tag_name('iframe')
driver.switch_to.frame(iframe[0])
driver.find_element_by_class_name('dlemail').send_keys(user) #用户
driver.find_element_by_class_name('dlpwd').send_keys(pwd) #密码
driver.find_element_by_id('dologin').click() #登录按钮
time.sleep(3)
driver.find_element_by_xpath('//*[@id="_mail_component_24_24"]/span[2]').click() #写信按钮
driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys(to) #收件人
driver.find_elements_by_class_name('nui-ipt-input')[2].send_keys(theme) #邮件主题
driver.find_element_by_class_name('nui-close').click()
content_iframe = driver.find_element_by_class_name('APP-editor-iframe') #找到iframe窗口
driver.switch_to.frame(content_iframe) #切到写内容的iframe窗口
driver.find_element_by_class_name('nui-scroll').send_keys(content) #邮件内容
driver.switch_to.default_content() #切换到之前的页面中
driver.find_element_by_class_name('nui-mainBtn-hasIcon').click()
if __name__ == '__main__':
url = 'https://mail.163.com/'
theme = '测试邮件主题'
to = '1986109019@qq.com'
content = '测试邮件内容.................................'
user = input('用户名: ').strip()
pwd = input("密码: ")
driver = webdriver.Chrome()
driver.implicitly_wait(3)
worker()
time.sleep(10)
driver.quit()

死循环发送:

import time
from selenium import webdriver
def worker():
driver.get(url)
driver.find_element_by_id('switchAccountLogin').click()
iframe = driver.find_elements_by_tag_name('iframe')
driver.switch_to.frame(iframe[0])
driver.find_element_by_class_name('dlemail').send_keys(user) #用户
driver.find_element_by_class_name('dlpwd').send_keys(pwd) #密码
driver.find_element_by_id('dologin').click()
time.sleep(3)
m = 0
while 1:
m += 1
content = '波波牛逼,欧力给!!!测试{}'.format(m)
driver.find_element_by_xpath('//*[@id="_mail_component_24_24"]/span[2]').click()
print(to)
driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys(to) #收件人
driver.find_elements_by_class_name('nui-ipt-input')[2].send_keys(theme) #邮件主题
driver.find_element_by_class_name('nui-close').click()
content_iframe = driver.find_element_by_class_name('APP-editor-iframe') #找到写信的iframe
driver.switch_to.frame(content_iframe) #切换iframe窗口
driver.find_element_by_class_name('nui-scroll').send_keys(content) #邮件内容
driver.switch_to.default_content()
driver.find_element_by_class_name('nui-mainBtn-hasIcon').click() #发送
time.sleep(2)
driver.find_elements_by_class_name('nui-ico-close')[2].click() #关闭已发送界面
time.sleep(2)
driver.find_element_by_id('_mail_tabitem_0_3text').click() #首页按钮
time.sleep(2)
if __name__ == '__main__':
url = 'https://mail.163.com/'
theme = '测试邮件主题'
to = '2604133307@qq.com'
user = input('用户名: ').strip()
pwd = input("密码: ")
driver = webdriver.Chrome()
driver.implicitly_wait(3)
worker()
time.sleep(10)
driver.quit()

Selenium自动化发送163邮箱的更多相关文章

  1. 自动化测试基础篇--Selenium简单的163邮箱登录实例

    摘自https://www.cnblogs.com/sanzangTst/p/7472556.html 前面几篇内容一直讲解Selenium Python的基本使用方法.学习了什么是selenium: ...

  2. python selenium模拟登录163邮箱和QQ空间

    最近在看python网络爬虫,于是我想自己写一个邮箱和QQ空间的自动登录的小程序, 下面以登录163邮箱和QQ空间和为例: 了解到在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用, ...

  3. springboot整合邮件发送(163邮箱发送为例)

    先登录163邮箱获取授权  勾选后安装提示会叫你设置授权密码之类的:记住授权的密码 1.引入maven依赖 <dependency> <groupId>org.springfr ...

  4. python selenium模拟登陆163邮箱。

    selenium是可以模拟浏览器操作. 有些爬虫是异步加载的,通过爬取网页源码是得不到需要的内容.所以可以模拟浏览器去登陆该网站进行爬取操作. 需要安装selenium通过pip install xx ...

  5. selenium数据驱动模式实现163邮箱的登录及添加联系人自动化操作

    项目结构如下: 要求python3.0 selenium3.0 下面是代码: appModubles:addContactPersonActtion.py和LoginAction.py addCont ...

  6. Selenium+Python之163邮件发送

    今晚写了一个163邮箱登录的脚本,由于不停的访问163登录主页导致直接访问163邮箱主页登录需要输入验证码,因为无法获取到验证码,就这导致直接访问主页登录脚本不可行,为了绕过验证码,现在先访问hao1 ...

  7. 5、Selenium+Python自动登录163邮箱发送邮件

    1.Selenium实现自动化,需要定位元素,以下查看163邮箱的登录元素 (1)登录(定位到登录框,登录框是一个iframe,如果没有定位到iframe,是无法定位到账号框与密码框) 定位到邮箱框( ...

  8. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  9. java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例

    研究了近一天的时间,通过查阅相关资料,终于对java发送邮件的机制,原理有了一点点的理解,希望能够帮到大家! 1.首先要向你的项目里导入1个jar包:mail-1.4.4.jar即可(实现qq和163 ...

随机推荐

  1. MySql 部分字段去重

    select * from personal_question_answer where answer_id in ( select min(answer_id) from personal_ques ...

  2. 利用 serviceStack 搭建web服务器

    1,资料地址 参考资料 https://docs.servicestack.net/ https://docs.servicestack.net/create-your-first-webservic ...

  3. #AcWing系列课程Level-2笔记——2. 归并排序算法

    归并排序算法 编写归并排序,记住下面的思路,代码也就游刃有余了! 1.首先确定数组的中间位置的分界点(下标),也就是mid=(left+right)>>1,分成left,right两段. ...

  4. 洛谷P1880 [NOI1995]石子合并 纪中21日c组T4 2119. 【2016-12-30普及组模拟】环状石子归并

    洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石 ...

  5. c#FTP基本使用

    public class FtpHelper { //基本设置 private static string ftppath = @"ftp://" + "192.168. ...

  6. 三维偏序[cdq分治学习笔记]

    三维偏序 就是让第一维有序 然后归并+树状数组求两维 cdq+cdq不会 告辞 #include <bits/stdc++.h> // #define int long long #def ...

  7. Centos 7 安装配置git

    Centos 7 安装配置git 1.安装git yum install git 2.验证git git -version 3.配置基本信息

  8. c++编程之内存模型

    我们在编程的时候,无可避免要申明变量,在这个变量可以是在()中,可以在{}中,也可以直接在外面,也可以用new的方式.那么当我们在申明变量的时候,实质上我们所做的工作是:关联了一个内存模型! 上代码: ...

  9. IntelliJ IDEA 如何彻底删除项目的步骤

    原文参考链接:https://www.jb51.net/article/129473.htm 本文介绍了IntelliJ IDEA 如何彻底删除项目的步骤,分享给大家,顺便给自己留个笔记,具体如下: ...

  10. PAT (Basic Level) Practice (中文)1087 有多少不同的值 (20 分) (set)

    当自然数 n 依次取 1.2.3.…….N 时,算式 ⌊ 有多少个不同的值?(注:⌊ 为取整函数,表示不超过 x 的最大自然数,即 x 的整数部分.) 输入格式: 输入给出一个正整数 N(2). 输出 ...