終於有了乙個晚上安靜的寫寫程式,最近一直忙著公司商務上的事情,一直想用qt實現乙個呼叫最底層socket通訊來實現的郵件傳送程式,以前用c#寫過,微軟都封裝好的,不知道底層是如何實現的,只知道呼叫方法,這次用c++實現了下,參考了很多網上的例子。
專案名稱:郵件傳送工具
開發環境:xp+qt4.7+qt creator2.8+mingw
已編譯通過測試平台:xp、win7、ubuntu、tiny210、te6410
技術實現:通過socket通訊實現smtp協議,根據應答解析協議並作出處理傳送郵件
基本功能:
1:支援主流郵箱例如163郵箱qq郵箱的傳送。
2:支援富文字傳送,可以傳送帶有html格式的文字。
說明: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...