Mail küldés

2011.07.29. 10:00 | arabiata | 1 komment

Címkék: gmail hotmail smtp mail küldés

 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?
Date: Mon, 6 Aug 2001 10:04:11 –0500
From: alvernja@alverno.edu
To: anthonsb@alverno.edu

 

Indicates the header
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!
Indicates the body
Jane A. Alverno 
Student, Alverno College
Indicates the Signature

 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.

 

A bejegyzés trackback címe:

https://qtqt.blog.hu/api/trackback/id/tr23108969

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

bluetier9 · http://bluetiger9.x10.bz 2011.11.10. 22:30:37

Sziasztok!

Épp a nyáron írtam egy SMTP programkönyvtárat Qt-ban email küldésre. Komplex e-maileket is lehet küldeni vele elég egyszerűen. Támogatja többek közt a csatolt fájlokat, HTML-t (akár beagyazott képekkel), a magyar és sok más nyelvet. Az SMTP szerverhez lehet TCP vagy SSL kapcsolattal is csatlakozni. Bejelentkezni a szerveren PLAIN és LOGIN metódusokkal lehet.

Akit érdekel az itt többet megtudhat: github.com/bluetiger9/SmtpClient-for-Qt

Üdv,
Bluetiger9
süti beállítások módosítása