Ez ott van a soros port kezelés mellett:), vagyis sehol. De van megoldás. A megoldás forráskódja itt található. Mivel a blog.hu nem engedi zip file feltöltését, így átneveztem txt-re. Letöltés után kéretik zip-re visszacsinálni a kiterjesztést. A programmal csatolni nem lehet (nem is erre a célra készült), viszont helyesen konvertálja az ékezetes karaktereket. Gmail és hotmail alatt kipróbáltam.
Egy nagyon jó összefoglalás a témában itt. A kész programot valahol ki is kell próbálni, lehetőleg könnyen elérhető mail serverről. Innen letölthető, windows alatt fut.
A mail részei (forrás):
Subject: When can we meet?
| ![]() |
When can we get together to work on our project? I am available any time this week after 5:00 PM. But I do have some other appointments next week. I would like to meet before we have our next class so email me and let me know what would work for you. Thanks! | ![]() |
Jane A. Alverno Student, Alverno College | ![]() |
Nézzük a megvalósítást:
- nyitunk egy client = new QTcpSocket;-et
- kapcsolódunk a mail serverhez
client->connectToHost("smtp.live.com", 25);if (client->waitForConnected(3000) == false) {
qDebug() << "Error: " << client->errorString();
Cleaner();
}
- megvárjuk a választ:
connect(client, SIGNAL(readyRead()), this, SLOT(readyRead()));
waitTimeout = client->waitForReadyRead(3000);
if (responseFromServer != 220 || waitTimeout == false) {
qDebug() << "CONN" << messageFromServer;
Cleaner();
}
A connect-es sorban beállított slot akkor áll be, ha jön valami a serverről. A waitForReadyRead-el várunk a válaszra, vagy timeout.
- minden adatforgalmazásnál ezt a sémát követjük
*ts << "EHLO mail.sturm.xxx" << "\r\n";
ts->flush();
waitTimeout = client->waitForReadyRead(3000);
if (responseFromServer != 250 || waitTimeout == false) {
qDebug() << "EHLO" << messageFromServer;
Cleaner();
}
A letöltött main.cpp fileban látható a küldő azonosításának módja is. Ez benne maradhat a programban, nem kell akkor sem kivenni, ha nincs rá szükség. Másik dolog, hogy érdemes html-ben hagyni a levél törzsét, fölösleges több részre bontani Példa itt.
Mire van ez az egész, ha nem lehet csatolni file-t? Mondjuk arra, ha egy program részeként kell hírleveleket, értesítéseket kiküldeni.