1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| void Fen::sendEmail(QByteArray sendTo, QByteArray sujet, QString messageHTML, QString cheminPJ)
{
// **********************************************************************************
// création du message
// **********************************************************************************
QSslSocket socketSsl;
QString from = m_settings->value("Messagerie/mail","").toString();
QByteArray user = m_settings->value("Messagerie/user","").toByteArray();
QByteArray pass = m_settings->value("Messagerie/pass","").toByteArray();
QString smtp = m_settings->value("Messagerie/smtp","").toString();
QString message;
message.append("To: <"+sendTo+">\n");
message.append("From: \"sebmag\" <"+from+">\n");
message.append("Subject: "+sujet+"\n\n");
message.append("Mime-Version: 1.0\n");
message.append("Content-Type: multipart/mixed; boundary=frontier\n\n");
message.append("--frontier <br>Content-Type: text/html\n");
message.append(messageHTML);
message.append("\n\n");
QFile file(cheminPJ);
QByteArray pj;
if(file.exists())
{
if(!file.open(QIODevice::ReadOnly))
{
QMessageBox::warning(0, tr("Ouverture impossible"), tr("Impossible de lire le fichier !\n\n"));
}
pj = file.readAll();
qDebug() << "PJ =" << pj.toBase64().count();
message.append( "--frontier\n" );
message.append("Content-Type: application/octet-stream\n");
message.append("Content-Disposition: attachment; filename="+QFileInfo(file.fileName()).fileName()+";\nContent-Transfer-Encoding: base64\n\n");
message.append(pj.toBase64());
message.append("\n");
}
else
{
qDebug() << "FICHIER INTROUVABLE";
}
message.append("--frontier--\n");
qDebug() << "Message : " << message.length();
message.replace(QString::fromLatin1("\n"), QString::fromLatin1( "\r\n" ));
message.replace(QString::fromLatin1("\r\n.\r\n"),QString::fromLatin1("\r\n..\r\n"));
// **********************************************************************************
// Début de la connexion
// **********************************************************************************
socketSsl.connectToHost(smtp, 587);
socketSsl.waitForReadyRead(20000);
qDebug() << "Connected :" << QString(socketSsl.readAll());
socketSsl.write("EHLO localhost\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "EHLO :" << QString(socketSsl.readAll());
socketSsl.write("STARTTLS\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "STARTTLS :" << QString(socketSsl.readAll());
socketSsl.startClientEncryption();
if(!socketSsl.waitForEncrypted(10000))
{
qDebug() << "Erreur :" << socketSsl.errorString();
}
socketSsl.write("EHLO localhost\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "HELO encrypted :" << QString(socketSsl.readAll());
socketSsl.write("AUTH LOGIN\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "AUTH LOGIN :" << QString(socketSsl.readAll());
socketSsl.write(user.toBase64()+"\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "LOGIN :" << QString(socketSsl.readAll());
socketSsl.write(pass.toBase64()+"\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "PASS :" << QString(socketSsl.readAll());
socketSsl.write("MAIL FROM:<"+from.toLatin1()+">\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "MAIL FROM :" << QString(socketSsl.readAll());
socketSsl.write("RCPT TO:<"+sendTo+">\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "RCPT TO :" << QString(socketSsl.readAll());
socketSsl.write("DATA\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "DATA :" << QString(socketSsl.readAll());
socketSsl.write(message.toLatin1());
socketSsl.waitForReadyRead(20000);
qDebug() << "Message :" << QString(socketSsl.readAll());
socketSsl.write("QUIT\r\n");
socketSsl.waitForReadyRead(20000);
qDebug() << "QUIT :" << QString(socketSsl.readAll());
} |
Partager