登录公司网易邮箱,发邮件

一、发送文本类型的邮件

踩坑:

1、使用selenium定位时,

定位时使用某一种方法无法定位到,所以多种定位交叉使用

参考文档:selenium之如何定位iframe中的元素 

'''

初级版本:
    登录公司网易邮箱,向指定对象发送文本类型的邮件
思路:
    1、登录邮箱
    2、点击【写信】
    3、输入收件人、标题、内容
    4、点击【发送】

'''

import time
import datetime
from selenium import webdriver



# 登录网易邮箱
def longin(url, username, password):
    
    # 进入登录页面
    driver.get(url=url)
    
    # 登录
    driver.find_element_by_id('accname').send_keys(username)  # 输入用户名
    driver.find_element_by_id('accpwd').send_keys(password)  # 输入用户名
    driver.find_element_by_class_name('loginbtn').submit()  # 点击登录BTN
    
    
# 写邮件并发送
def send_email(title, addressee, msg):
    
    try:
        # 先登录
        longin(url, username, password)
        
        # 1、点击【写信】
        driver.find_element_by_class_name('p-edit').click()
        
        '''
        2、输入收件人和标题
           定位时使用某一种方法无法定位到,所以多种定位交叉使用
        '''
        driver.find_elements_by_class_name('right-inner')[0].find_element_by_name('to').find_element_by_tag_name(
            'input').send_keys(addressee)  # 输入收件人
        driver.find_elements_by_class_name('right-inner')[0].find_element_by_name('to').find_element_by_tag_name(
            'input').click()  # 点击一下收件人输入框,避免下拉框遮挡主题输入框
        driver.find_element_by_class_name('subject').find_element_by_tag_name('input').send_keys(title)  # 输入主题
        
        '''
        3、输入邮件内容(只有文本)
           因为文本框是在ifrme内的,ifrme是内嵌的网页元素,所以要先进入到ifrme内,再操作
        '''
        iframe = driver.find_element_by_id('ueditor_0')  # 先获取iframe
        driver.switch_to.frame(iframe)  # 切换到iframe中
        driver.find_element_by_xpath('/html/body').send_keys(msg)  # 在ifrme中操作元素,因为没有id也没有class,所以使用xpath
        driver.switch_to.default_content()  # 切换到iframe上之后,就无法对iframe以外的元素进行操作了,我们需要退出iframe再继续
        
        # 点击【发送】
        driver.find_element_by_id('main').find_element_by_class_name('g-mnc').find_element_by_xpath(
            '//*[@class="g-mnc"]/div[1]/div[1]/div[1]/div[1]').click()
        
    finally:
        time.sleep(3)
        driver.close()  # 不管之前能否成功发送邮件,最后都关闭浏览器


if __name__ == '__main__':
    
    chrome = r'XXX/chromedriver'  # chrome驱动文件的路径
    
    url = 'https://qiye.163.com/login/?from=ym'                         # 邮箱地址
    username = 'XXXXXXXXXXXXXXXXXXXX'                                   # 邮箱账号
    password = 'XXXXXXXXX'                                              # 邮箱密码
    title = '测试邮件,收到请忽略'                                         # 邮件标题
    addressee = 'XXXXXXXXXXXXXXXX'                                      # 收件人邮箱
    '''
    邮件内容
        datetime.datetime.now() 当前时间小数点后还有6位
        datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') 当前时间,只精确到秒
    '''
    msg = '最好等待5s再点击【发送】,否则可能会被定为垃圾邮件\n{}'.format(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    
    driver = webdriver.Chrome(executable_path=chrome)  # 获取到driver
    driver.implicitly_wait(3)   # 设置全局的隐式等待,超出3s未找到元素,则报异常
    send_email(title, addressee, msg)
单个收件人,纯文本内容

结束。。。

猜你喜欢

转载自www.cnblogs.com/caoyinshan/p/12125045.html