融界2023年12月30日消息,據國家知識產權局公告,中航(成都)無人機系統股份有限公司申請一項名為“一種基于HTML文件格式的Qt界面及樣式自動生成方法及系統“,公開號CN117311692A,申請日期為2023年9月。
專利摘要顯示,本發明涉及Qt界面應用程序開發領域,尤其涉及一種基于HTML文件格式的Qt界面及樣式自動生成方法及系統,通過獲取界面原型設計軟件導出的HTML文件數據及其對應的資源文件數據;對HTML文件及其文件關聯關系進行解析,得到預編譯生成界面;對預編譯生成界面中的圖元、圖元屬性、圖元與圖元之間的邏輯關系進行類文件解析,得到界面圖元列表數據;構建Qt界面的圖元與控件類型的映射關系,得到圖元與控件映射關系數據;基于預編譯生成界面、界面圖元列表數據和圖元與控件映射關系數據,自動生成Qt界面文件和Qt界面樣式文件。通過對原型設計軟件的導出的HTML格式文件的自動解析,減少了繁瑣的界面布局及界面樣式調試,極大的提高了Qt界面應用軟件的開發效率。
本文源自金融界
<html><head/><body><p style=\"height:16px;line-height:24px;color:#787878\"> helloWorld</p></body></html>
SMTP協議:全稱為 Simple Mail Transfer Protocol,簡單郵件傳輸協議。它定義了郵件客戶端軟件和SMTP郵件服務器之間,以及兩臺SMTP郵件服務器之間的通信規則。
SMTP是一個相對簡單的基于文本的協議。在其之上指定了一條消息的一個或多個接收者(在大多數情況下被確認是存在的),然后消息文本會被傳輸??梢院芎唵蔚赝ㄟ^telnet程序來測試一個SMTP服務器。SMTP使用TCP端口25。
SMTP協議的工作過程可分為如下3個過程:
(1)建立連接:在這一階段,SMTP客戶請求與服務器的25端口建立一個TCP連接。一旦連接建立,SMTP服務器和客戶就開始相互通告自己的域名,同時確認對方的域名。
(2)郵件傳送:利用命令,SMTP客戶將郵件的源地址、目的地址和郵件的具體內容傳遞給SMTP服務器,SMTP服務器進行相應的響應并接收郵件。
(3)連接釋放:SMTP客戶發出退出命令,服務器在處理命令后進行響應,隨后關閉TCP連接。
【領QT開發教程學習資料,點擊下方鏈接免費領取↓↓,先碼住不迷路~】
點擊→領取「鏈接」
SMTP 協議中一共定義了18條命令,但是發送一封電子郵件的過程通常只需要6條命令,我將這6調命令/響應的語法格式總結如下:
注意:SMTP命令不區分大小寫,但參數區分大小寫。<>內代表參數,<SP>是空格,<CRLF>代表\r\n
SMTP命令及格式 | 描述 |
EHLO <domain><CRLF> | ehlo命令是SMTP郵件發送程序與SMTP郵件接受程序建立簡介后必須發送的第一條SMTP命令,參數<domain>表示SMTP郵件發送者的名稱(郵箱名) |
AUTH <para><CRLF> | 告訴SMTP服務器認證方式,參數para表示回應的認證方式,通常是AUTH LOGIN |
MAIL FROM:<reverse-path><CRLF> | 此命令用于指定郵件發送者的郵箱地址,參數reverse-path表示發件人的郵箱地址 |
RCPT TO:<forword-path><CRLF> | 此命令用于指定郵件接受者的郵箱地址,參數forword-path表示發件人的郵箱地址,如果郵件要發送給多個接受者,那么應該使用多條RCPT TO命令來分別指定每一個接受者的郵箱地址 |
DATA<CRLF> | 此命令用于表示SMTP郵件發送程序準備開始傳送郵件內容,在這個命令后面發送的所有數據都將被當做郵件內容,直到遇到<CRLF>.<CRLF>表示符,則表示郵件內容結束 |
QUIT<CRLF> | 此命令表示要結束郵件發送過程,SMTP郵件接受程序接收到此名后,將關閉與SMTP郵件服務器的連接 |
大家可能光看這些命令不太清楚,下面我總結了一下使用Smtp協議手工發送郵件的步驟:
①、和SMTP服務器建立連接,telnet smtp.163.com 25。這條命令是和163郵箱建立連接,如果是和QQ,那么將163換成qq即可,同理別的郵箱也是一樣。后面的數字25表示SMTP服務器的端口號。
②、ehlo 發件人用戶名。這沒什么好說的,就是告訴SMTP服務器發送者的用戶名。
③、選擇登錄認證方式,一般我們在第二步執行完后,會提示有幾種認證方式,我們一般選擇的是login。即輸入命令:auth login
④、分別輸入經過Base64加密后的用戶名和密碼。注意必須是要經過 Base64加密后的用戶名和密碼,大家可以Base64 在線編碼解碼
⑤、指明郵件的發送人和收件人
mail from:<xxx@163.com>
rcpt to:<xxx@qq.com>
⑥、輸入data命令,然后編寫要發送的郵件內容,郵件的編寫格式規則如下:
第一步:輸入data
第二步:輸入郵件內容
⑦、輸入“.”表示郵件內容輸入完畢
⑧、輸入quit命令斷開與郵件服務器的連接
【領QT開發教程學習資料,點擊下方鏈接免費領取↓↓,先碼住不迷路~】
點擊→領取「鏈接」
①、執行 telent smtp.163.com 25 命令時,報如下錯誤:
解決辦法是:控制面板----程序------啟動或關閉 Windows 功能----將Telnet勾上,然后點擊確定即可
②、用戶名和密碼必須要base64加密
③、每一步驟之間輸入命令要盡量快,不然會自動斷開連接
④、163郵箱可以使用用戶名和密碼,但是QQ郵箱必須使用用戶名和授權碼。
⑤、輸入郵件內容時,空行不要忘記了,還有結束輸入是以“.”結束的。
RFC822文檔存在兩個問題:
?、?、定義了郵件內容的主體結構和各種郵件頭字段的詳細細節,但是,它沒有定義郵件體的格式,RFC822文檔定義的郵件體部分通常都只能用于表述一段普通的文本,而無法表達出圖片、聲音等二進制數據。
?、?、SMTP服務器在接收郵件內容時,當接收到只有一個“.”字符的單獨行時,就會認為郵件內容已經結束,如果一封郵件正文中正好有內容僅為一個“.”字符的單獨行,SMTP服務器就會丟棄掉該行后面的內容,從而導致信息丟失。
上面兩個問題是致命的,當今的電子郵件,人們希望在電子郵件中嵌入圖片、聲音、動畫和附件。但是,由于圖片和聲音等內容是非ASCII碼的二進制數據,而RFC822郵件格式只適合用來表達純文本的郵件內容,所以,要使用RFC822郵件格式發送這些非ASCII碼的二進制數據時,必須先采用某種編碼方式將它們“編碼”成可打印的ASCII字符后再作為RFC822郵件格式的內容。郵件閱讀程序在讀取到這種經過編碼處理的郵件后,再按照相應的解碼方式解碼出原始的二進制數據,這樣就可以借助RFC822郵件格式來傳遞多媒體數據了。這種做法需要解決一下兩個技術問題:
一、郵件閱讀程序如何知道郵件中嵌入的原始二進制數據所采用的編碼方式;
二、郵件閱讀程序如何知道每個嵌入的圖像或其他資源在整個郵件內容中的起止位置。
為了解決上面兩個問題,人們后來專門為此定義了MIME(Multipurpose Internet Mail Extension,多用途Internet郵件擴展)協議。
Content-Type(內容類型),用于定義文件的類型和編碼,Content-Type字段中的內容以“主類型/子類型”的形式出 現,主類型有 text、image、audio、video、application、multipart、message等,分別表示文本、圖片、音頻、視頻、應用 程序、組合結構、消息等。每個主類型下面都有多個子類型,例如text主類型包含plain、html、xml、css等子類型。multipart主類 型用于表示MIME組合消息,它是MIME協議中最重要的一種類型。
一封MIME郵件中的MIME消息可以有三種組合關系:混合、關聯、選擇,它們對應 MIME類型如下:
類型 | 描述 |
multipart/mixed | 表示消息體中的內容是混和組合類型,內容可以是文本、聲音和附件等不同郵件內容的混和體(整封郵件的MIME類型就必須定義為multipart/mixed) |
multipart/related | 表 示消息體中的內容是關聯(依賴)組合類型,郵件正文要使用HTML代碼引用內嵌的圖片資源,它們組合成的MIME消息的MIME類型就應 該定義為multipart/related |
multipart/alternative | 表 示消息體中的內容是選擇組合類型,例如一封郵件的郵件正文同時采用HTML格式和普通文本格式進行表達時,就可以將它們嵌套在一個 multipart/alternative類型的MIME組合消息中。這種做法的好處在于如果郵件閱讀程序不支持HTML格式時,可以采用其中的文本格 式進行替代。 |
總結:如果要在郵件中要添加附件,就必須將整封郵件的MIME類型定義為multipart/mixed;如果要在HTML格式的正文中引用內嵌資 源,那就要定義multipart/related類型的MIME消息;如果普通文本內容與HTML文本內容共存,那就要定義multipart /alternative類型的MIME消息。
【領QT開發教程學習資料,點擊下方鏈接免費領取↓↓,先碼住不迷路~】
點擊→領取「鏈接」
在Content-type頭字段中除了可以定義消息體的MIME類型外,還可以在MIME類型后面包含相應的屬性,屬性以“屬性名=屬性值”的形式出現,屬性與MIME類型之間采用分號(;)分隔,如下所示:
主類 型 | 屬 性 名 | 說 明 |
text | charset | 用于說明文本內容的字符集編碼 |
image | name | 用于說明圖片文件的文件名 |
application | name | 用于說明應用程序的文件名 |
multipart | boundary | 用于定義MIME消息之間的分隔符 |
除了 Content-Type頭字段之外,MIME協議中還定義Content- Transfer-Encoding、Content-Disposition、Content-ID、Content-Location、 Content-Base等幾個重要的頭字段,這幾個頭字段需要與Content-type頭字段配合使用,它們的作用如下:
Content-Transfer-Encoding頭字段用于指定MIME消息體中的內容所采用的郵件編碼方式。
Content- Disposition頭字段用于指定郵件閱讀程序處理數據內容的方式,有inline和attachment兩種標準方式,inline表示直接處理, 而attachment表示當做附件處理。如果將Content-Disposition設置為attachment,在其后還可以指定filename 屬性,如下所示:
Content-Disposition: attachment; filename="1.bmp"
上面的MIME頭字段表示MIME消息體的內容為郵件附件,附件名"1.bmp"。
Content- ID頭字段用于為“multipart/related”組合消息中的內嵌資源指定一個唯一標識號,在HTML格式的正文中可以使用這個唯一標識號來引用 該內嵌資源。例如,假設將一個表示內嵌圖片的MIME消息的Content-ID頭字段設置為如下形式:
Content-ID: maye520_gif
那么,在HTML正文中就需要使用如下HTML語句來引用該圖片資源:
注意,在引用Content-ID頭字段標識的內嵌資源時,要在資源的唯一標識號前面加上“cid:”,以說明要采用唯一標識號對資源進行引用。
Content- Location頭字段用于為內嵌資源設置一個URI地址,這個URI地址可以是絕對或相對的。當使用Content- Location頭字段為一個內嵌資源指定一個URI地址后,在HTML格式的正文中也可以使用這個URI來引用該內嵌資源。例如,假設將一個表示內嵌圖 片的MIME消息的Content-Location頭字段設置為如下形式:
Content-Location:http://www.maye.com/images/maye520.gif
那么,在HTML正文中就可以使用如下HTML語句來引用該圖片資源:
<img src="http://www.maye.com/images/maye520.gif">
Content- Base頭字段用于為內嵌資源設置一個基準路徑,只有這樣,Content-Location頭字段中設置的URI才可以采用相對地址。例如,假設將一個 表示內嵌圖片的MIME消息的Content-Base和Content-Location頭字段設置為如下形式:
Content-Base: http://www.maye.org/images/
Content-Location: maye520.gif
那么,內嵌資源的完整路徑就是Content-Base頭字段設置的基準路徑與Content-Location頭字段設置的相對路徑相加的結果,在HTML正文中就可以使用如下HTML語句來引用該圖片資源:
<imgsrc="http://www.maye.com/images/maye520.gif">
*請認真填寫需求信息,我們會在24小時內與您取得聯系。