簡體   English   中英

如何在電子郵件正文中添加文本?

[英]How to add text to body of e-mail?

我搜索了 StackOverflow 和其他沒有好的結果。

我必須通過 Access VBA 發送電子郵件。 我正在使用 Selenium 基本庫。

我可以,訪問電子郵件web頁面,點擊“新郵件”按鈕,填寫“收件人”、“主題”、“復制到”和“盲復制到”等參數,然后點擊“發送電子郵件”按鈕。

我不能,編輯電子郵件的富文本正文。 我可以發送電子郵件,但它們是空白的。

Public Sub sendEmail( _
    emailPage As String, _
    sendTo As String, _
    subject As String, _
    emailText As String, _
    Optional copyTo As String, _
    Optional blindCopyTo As String)
    
'Parameters above: emailPage is the intranet, corporative e-mail site from which the e-mails must be 
'sent; sendTo is the e-mail address to which the e-mail will be sent; subject is the subject of the 
'e-mail; emailText is the text that I want to go in the body of the e-mail. 

'Variables below: preparing variables to be used, like a webDriver. I tried to mingle Selenium and 
'Windows HTML objects to no vail, as one can infer from the commented variable

    Dim browser As WebDriver
    Dim webEle As WebElement
    Dim theKeys As selenium.Keys
    Dim por As By
    'Dim CurrentWindow As HTMLWindowProxy
    
'choosing the web browser driver. I chose firefox since it went farther than chrome*:

    Set browser = New FirefoxDriver

'with the browser driver, I go to the e-mail webpage:

    With browser
        .Get emailPage 

'Below I find the elements with the XPath to interact with

        .SwitchToFrame "s_MainFrame"
        .FindElementByXPath("/html/body/div[2]/div/div[4]/div/div/div[1]/div/div[1]/div/div[3]/div[2]/div[10]/table[1]/tbody/tr/td[2]/table/tbody/tr/td[1]/span").Click
        .FindElementByXPath("/html/body/div[2]/div/div[4]/div/div/div[1]/div/div[1]/div/div[3]/div[1]/div/div[5]/div/form/div/div/div[5]/table[1]/tbody/tr[3]/td[3]/div/textarea").SendKeys sendTo
        If IsMissing(copyTo) = False Then
            .FindElementByXPath("/html/body/div[2]/div/div[4]/div/div/div[1]/div/div[1]/div/div[3]/div[1]/div/div[5]/div/form/div/div/div[5]/table[1]/tbody/tr[4]/td[3]/div/textarea").SendKeys copyTo
        End If
        If IsMissing(blindCopyTo) - False Then
            .FindElementByXPath("/html/body/div[2]/div/div[4]/div/div/div[1]/div/div[1]/div/div[3]/div[1]/div/div[5]/div/form/div/div/div[5]/table[1]/tbody/tr[5]/td[3]/div/textarea").SendKeys blindCopyTo
        End If
        .FindElementByXPath("/html/body/div[2]/div/div[4]/div/div/div[1]/div/div[1]/div/div[3]/div[1]/div/div[5]/div/form/div/div/div[5]/table[1]/tbody/tr[6]/td[3]/div/textarea").SendKeys subject

'And here is the problem: I cannot access the e-mail body text to change it. SendKeys won't work. I also
'tried inserting HTML texts like <HTLM><BODY>email text goes here</BODY></HTML> and 
'<HTLM><H1>email text goes here</BODY></HTML>, to no vail.

        .FindElementByXPath("/html/body/div/div").SendKeys emailText
        '.SwitchToFrame "s_MainFrame"

'After that, I click the button to send the e-mail, close the browser driver, and set it to nothing.
        .FindElementByXPath("/html/body/div[2]/div/div[4]/div/div/div[1]/div/div[1]/div/div[3]/div[2]/div[14]/table[1]/tbody/tr/td[1]/span").Click
    End With
    browser.Close
    Set browser = Nothing
   
End Sub

這些是我在檢查正文時得到的元素。 在干凈的電子郵件正文的第一行中,元素是

<div><br></div>

而其XPath為:

/html/body/div/div

但是在我的測試中使用它作為訪問路徑是沒有用的。 下面是富文本正文文本元素的主要值:

<body role="main" id="e-$new-0-bodyrich-editor" class="s-mailbody-edit s-disable-inotesstyle">

它是 XPath:

/html/body

在 Chrome 中,我收到一個錯誤,它沒有打開 email 頁面。 我有 Chrome 87 版本和相應的驅動程序。

不好意思打擾大家了!

我做了更多測試,發現我必須為 iframe 引用 XPath:

    .FindElementByXPath("/html/body/div[2]/div/div[4]/div/div/div[1]/div/div[1]/div/div[3]/div[1]/div/div[5]/div/form/div/div/div[2]/div/div/div[1]/iframe").SendKeys emailText

我還使用 While DoEvents 更新了 function 以僅在電子郵件頁面寫入成功發送電子郵件的引用 HTML 元素后關閉瀏覽器驅動程序:

    Do While InStr(1, browser.FindElementByXPath("/html/body/div[2]/div/div[4]/div/div/div[1]/div/div[2]/div[1]/div/div[2]/div/table[1]/tbody/tr/td[2]/span").text, "Email sent successfully") = 0
        DoEvents
    Loop
    

此外,一些聲明的變量未使用並被刪除,例如 webEle。 最終代碼中僅聲明了瀏覽器變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM