QT開發之旅四郵件傳送工具

2021-06-29 03:48:02 字數 1948 閱讀 5856

終於有了乙個晚上安靜的寫寫程式,最近一直忙著公司商務上的事情,一直想用qt實現乙個呼叫最底層socket通訊來實現的郵件傳送程式,以前用c#寫過,微軟都封裝好的,不知道底層是如何實現的,只知道呼叫方法,這次用c++實現了下,參考了很多網上的例子。

專案名稱:郵件傳送工具

開發環境:xp+qt4.7+qt creator2.8+mingw

已編譯通過測試平台:xp、win7、ubuntu、tiny210、te6410

技術實現:通過socket通訊實現smtp協議,根據應答解析協議並作出處理傳送郵件

基本功能:

1:支援主流郵箱例如163郵箱qq郵箱的傳送。

2:支援富文字傳送,可以傳送帶有html格式的文字。

3:支援多個附件傳送,附件可以是。

說明:163郵箱和126郵箱,傳送埠都是25,不使用ssl協議,而qq郵箱必須使用ssl協議,埠為465。如果是qq郵箱傳送的話,前提要在qq郵箱設定中將smtp協議開通,否則傳送不成功,我就困在這裡半個小時,結果收到qq郵箱發過來的一封郵件,內容如下:

你妹啊,預設qq郵箱沒有開啟smtp服務。

執行截圖:

粗略步驟:

第一步:布局好介面,控制項命名好,建議用pascal命名法。

第二步:準備好sendemailapi資料夾,裡面存放的公開的第三方的支援傳送附件和富文字的mime協議檔案。新增到專案中。

第三步:例項化郵件傳送物件

smtpclient smtp(ui->cboxserver->currenttext(),

ui->cboxport->currenttext().toint(),

ui->ckssl->ischecked()?smtpclient::sslconnection:smtpclient::tcpconnection);

smtp.setuser(ui->txtsender->text());

smtp.setpassword(ui->txtsenderpwd->text());

第四步:構建郵件主題,包含發件人收件人附件等

mimemessage message;

message.setsender(new emailaddress(ui->txtsenderaddr->text()));

//逐個新增收件人

qstringlist receiver = ui->txtreceiveraddr->text().split(';');

for (int i = 0; i 

//構建郵件標題

message.setsubject(ui->txttitle->text());

//構建郵件正文

mimehtml text;

text.sethtml(ui->txtcontent->tohtml());

//    //如果直接傳送簡單文字,使用以下方法

//    mimetext text;

//    text.settext("測試簡單文字傳送!");

message.addpart(&text);

//構建附件

qstring atta=ui->txtatta->text();

if (atta!="") }

}第五步:登入伺服器傳送郵件

if (!smtp.connecttohost())

if (!smtp.login())

if (!smtp.sendmail(message))else

smtp.quit(); :

QT開發之旅四郵件傳送工具

終於有了乙個晚上安靜的寫寫程式,最近一直忙著公司商務上的事情,一直想用qt實現乙個呼叫最底層socket通訊來實現的郵件傳送程式,以前用c 寫過,微軟都封裝好的,不知道底層是如何實現的,只知道呼叫方法,這次用c 實現了下,參考了很多網上的例子。專案名稱 郵件傳送工具 開發環境 xp qt4.7 qt...

python Flask(四) 郵件傳送

電子郵件傳送和接收的過程 flask mail傳送郵件的配置資訊 配置傳送郵件的相關資訊 指定郵件伺服器的網域名稱或者ip 指定埠,預設25,但qq郵箱預設為 埠號465或587 此處的密碼並非郵箱登入密碼,而是開啟pop3 def send mail to,subject,info msg mes...

QT開發之旅二TCP除錯工具

tcp除錯工具顧名思義用來除錯tcp通訊的,網上這樣的工具n多,之前用.net寫過乙個,無奈在xp下還要安裝個.net框架才能執行,索性這次用qt重寫,發現qt寫tcp通訊比.net還要便捷一些,執行效率貌似要高,還能識別客戶端斷開,這個真神奇,除了斷電之外。專案名稱 tcp除錯工具 開發環境 wi...