Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Sending email issue.
Forum Updated to NodeBB v4.3 + New Features

Sending email issue.

Scheduled Pinned Locked Moved Solved General and Desktop
12 Posts 3 Posters 964 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J jenya7

    I try to send

    uint32_t COMMANDS::Mail(uint32_t argc, char** args)
    {
        QStringList files;
    
        Smtp* smtp = new Smtp("mail_from@gmail.com", "pass", "smtp.gmail.com", 465);
    
        smtp->sendMail("mail_from@gmail.com",  "mail_to@gmail.com" ,  "Test",  "Hello",  files);
    
        return MSG_OK;
    }
    

    But I get

    Server response code: "535"
    Server response: "535-5.7.8 Username and Password not accepted.

    What user name and password it expects?

    jsulmJ Online
    jsulmJ Online
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #2

    @jenya7 How is this related to Qt?
    "What user name and password it expects?" - well, from the mail account from which you want to send mails?

    https://forum.qt.io/topic/113070/qt-code-of-conduct

    J 1 Reply Last reply
    0
    • jsulmJ jsulm

      @jenya7 How is this related to Qt?
      "What user name and password it expects?" - well, from the mail account from which you want to send mails?

      J Offline
      J Offline
      jenya7
      wrote on last edited by
      #3

      @jsulm
      The only relation - I use a Qt class (smtp). So may be I do something wrong.

      I log with "pass" to "mail_from@gmail.com" and can send an email from it. So "mail_from@gmail.com" and "pass" seems perfectly valid to me.

      jsulmJ 1 Reply Last reply
      0
      • J jenya7

        @jsulm
        The only relation - I use a Qt class (smtp). So may be I do something wrong.

        I log with "pass" to "mail_from@gmail.com" and can send an email from it. So "mail_from@gmail.com" and "pass" seems perfectly valid to me.

        jsulmJ Online
        jsulmJ Online
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #4

        @jenya7 said in Sending email issue.:

        I use a Qt class (smtp)

        Smtp is not a Qt class.
        From where did you get it?

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        J 1 Reply Last reply
        0
        • jsulmJ jsulm

          @jenya7 said in Sending email issue.:

          I use a Qt class (smtp)

          Smtp is not a Qt class.
          From where did you get it?

          J Offline
          J Offline
          jenya7
          wrote on last edited by jenya7
          #5

          @jsulm said in Sending email issue.:

          @jenya7 said in Sending email issue.:

          I use a Qt class (smtp)

          Smtp is not a Qt class.
          From where did you get it?

          I meant - implemented in Qt.

          Smtp::Smtp( const QString &user, const QString &pass, const QString &host, int port, int timeout )
          {    
              socket = new QSslSocket(this);
          
              connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
              connect(socket, SIGNAL(connected()), this, SLOT(connected() ) );
              connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this,SLOT(errorReceived(QAbstractSocket::SocketError)));   
              connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(stateChanged(QAbstractSocket::SocketState)));
              connect(socket, SIGNAL(disconnected()), this,SLOT(disconnected()));
          
              this->user = user;
              this->pass = pass;
          
              this->host = host;
              this->port = port;
              this->timeout = timeout;
          }
          
          void Smtp::sendMail(const QString &from, const QString &to, const QString &subject, const QString &body, QStringList files)
          {
              message = "To: " + to + "\n";    
              message.append("From: " + from + "\n");
              message.append("Subject: " + subject + "\n");
          
              //Let's intitiate multipart MIME with cutting boundary "frontier"
              message.append("MIME-Version: 1.0\n");
              message.append("Content-Type: multipart/mixed; boundary=frontier\n\n");
          
              message.append( "--frontier\n" );
              //message.append( "Content-Type: text/html\n\n" );  //Uncomment this for HTML formating, coment the line below
              message.append( "Content-Type: text/plain\n\n" );
              message.append(body);
              message.append("\n\n");
          
              if(!files.isEmpty())
              {
                  qDebug() << "Files to be sent: " << files.size();
                  foreach(QString filePath, files)
                  {
                      QFile file(filePath);
                      if(file.exists())
                      {
                          if (!file.open(QIODevice::ReadOnly))
                          {
                              qDebug("Couldn't open the file");
                              QMessageBox::warning(nullptr, tr( "Qt Simple SMTP client" ), tr( "Couldn't open the file\n\n" ));
                                  return ;
                          }
                          QByteArray bytes = file.readAll();
                          message.append( "--frontier\n" );
                          message.append( "Content-Type: application/octet-stream\nContent-Disposition: attachment; filename="+ QFileInfo(file.fileName()).fileName() +";\nContent-Transfer-Encoding: base64\n\n" );
                          message.append(bytes.toBase64());
                          message.append("\n");
                      }
                  }
              }
              else
                  qDebug() << "No attachments found";
          
              message.append( "--frontier--\n" );
          
              message.replace( QString::fromLatin1( "\n" ), QString::fromLatin1( "\r\n" ) );
              message.replace( QString::fromLatin1( "\r\n.\r\n" ),QString::fromLatin1( "\r\n..\r\n" ) );
          
              this->from = from;
              rcpt = to;
              state = Init;
              socket->connectToHostEncrypted(host, static_cast<quint16>(port)); //"smtp.gmail.com" and 465 for gmail TLS
              if (!socket->waitForConnected(timeout)) {
                   qDebug() << socket->errorString();
               }
          
              t = new QTextStream( socket );
          }
          
          jsulmJ 1 Reply Last reply
          0
          • J jenya7

            @jsulm said in Sending email issue.:

            @jenya7 said in Sending email issue.:

            I use a Qt class (smtp)

            Smtp is not a Qt class.
            From where did you get it?

            I meant - implemented in Qt.

            Smtp::Smtp( const QString &user, const QString &pass, const QString &host, int port, int timeout )
            {    
                socket = new QSslSocket(this);
            
                connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
                connect(socket, SIGNAL(connected()), this, SLOT(connected() ) );
                connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this,SLOT(errorReceived(QAbstractSocket::SocketError)));   
                connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(stateChanged(QAbstractSocket::SocketState)));
                connect(socket, SIGNAL(disconnected()), this,SLOT(disconnected()));
            
                this->user = user;
                this->pass = pass;
            
                this->host = host;
                this->port = port;
                this->timeout = timeout;
            }
            
            void Smtp::sendMail(const QString &from, const QString &to, const QString &subject, const QString &body, QStringList files)
            {
                message = "To: " + to + "\n";    
                message.append("From: " + from + "\n");
                message.append("Subject: " + subject + "\n");
            
                //Let's intitiate multipart MIME with cutting boundary "frontier"
                message.append("MIME-Version: 1.0\n");
                message.append("Content-Type: multipart/mixed; boundary=frontier\n\n");
            
                message.append( "--frontier\n" );
                //message.append( "Content-Type: text/html\n\n" );  //Uncomment this for HTML formating, coment the line below
                message.append( "Content-Type: text/plain\n\n" );
                message.append(body);
                message.append("\n\n");
            
                if(!files.isEmpty())
                {
                    qDebug() << "Files to be sent: " << files.size();
                    foreach(QString filePath, files)
                    {
                        QFile file(filePath);
                        if(file.exists())
                        {
                            if (!file.open(QIODevice::ReadOnly))
                            {
                                qDebug("Couldn't open the file");
                                QMessageBox::warning(nullptr, tr( "Qt Simple SMTP client" ), tr( "Couldn't open the file\n\n" ));
                                    return ;
                            }
                            QByteArray bytes = file.readAll();
                            message.append( "--frontier\n" );
                            message.append( "Content-Type: application/octet-stream\nContent-Disposition: attachment; filename="+ QFileInfo(file.fileName()).fileName() +";\nContent-Transfer-Encoding: base64\n\n" );
                            message.append(bytes.toBase64());
                            message.append("\n");
                        }
                    }
                }
                else
                    qDebug() << "No attachments found";
            
                message.append( "--frontier--\n" );
            
                message.replace( QString::fromLatin1( "\n" ), QString::fromLatin1( "\r\n" ) );
                message.replace( QString::fromLatin1( "\r\n.\r\n" ),QString::fromLatin1( "\r\n..\r\n" ) );
            
                this->from = from;
                rcpt = to;
                state = Init;
                socket->connectToHostEncrypted(host, static_cast<quint16>(port)); //"smtp.gmail.com" and 465 for gmail TLS
                if (!socket->waitForConnected(timeout)) {
                     qDebug() << socket->errorString();
                 }
            
                t = new QTextStream( socket );
            }
            
            jsulmJ Online
            jsulmJ Online
            jsulm
            Lifetime Qt Champion
            wrote on last edited by
            #6

            @jenya7 said in Sending email issue.:

            Smtp::sendMail

            It looks like you're not using user name and password when sending mails.

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            J 1 Reply Last reply
            0
            • jsulmJ jsulm

              @jenya7 said in Sending email issue.:

              Smtp::sendMail

              It looks like you're not using user name and password when sending mails.

              J Offline
              J Offline
              jenya7
              wrote on last edited by jenya7
              #7

              @jsulm said in Sending email issue.:

              @jenya7 said in Sending email issue.:

              Smtp::sendMail

              It looks like you're not using user name and password when sending mails.

              I see. It was advised as a reliable source.

              Do we have any reliable example?

              J 1 Reply Last reply
              0
              • J jenya7

                @jsulm said in Sending email issue.:

                @jenya7 said in Sending email issue.:

                Smtp::sendMail

                It looks like you're not using user name and password when sending mails.

                I see. It was advised as a reliable source.

                Do we have any reliable example?

                J Offline
                J Offline
                jenya7
                wrote on last edited by
                #8

                Hmm...I try this example.
                The same problem. Here

                // Sending command: AUTH PLAIN base64('\0' + username + '\0' + password)
                 sendMessage("AUTH PLAIN " + QByteArray().append((char) 0).append(user).append((char) 0).append(password).toBase64());
                
                // Wait for the server's response
                waitForResponse();
                
                // If the response is not 235 then the authentication was faild
                 if (responseCode != 235)
                 {
                         emit smtpError(AuthenticationFailedError);
                       return false;
                 }
                

                I get responseCode = 535.

                J.HilkJ 1 Reply Last reply
                0
                • J jenya7

                  Hmm...I try this example.
                  The same problem. Here

                  // Sending command: AUTH PLAIN base64('\0' + username + '\0' + password)
                   sendMessage("AUTH PLAIN " + QByteArray().append((char) 0).append(user).append((char) 0).append(password).toBase64());
                  
                  // Wait for the server's response
                  waitForResponse();
                  
                  // If the response is not 235 then the authentication was faild
                   if (responseCode != 235)
                   {
                           emit smtpError(AuthenticationFailedError);
                         return false;
                   }
                  

                  I get responseCode = 535.

                  J.HilkJ Offline
                  J.HilkJ Offline
                  J.Hilk
                  Moderators
                  wrote on last edited by
                  #9

                  @jenya7 said in Sending email issue.:

                  this example

                  IIRC gmail, blocks IMAP ad pop3 by default, you have to log in to your gmail account and enable it in the settings

                  • Go to "Settings", e.g. click on the "Gears" icon and select "Settings".
                  • Click on "Forwarding and POP/IMAP".
                  • Enable "IMAP Access" and/or "POP Download"

                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                  Q: What's that?
                  A: It's blue light.
                  Q: What does it do?
                  A: It turns blue.

                  J 1 Reply Last reply
                  1
                  • J.HilkJ J.Hilk

                    @jenya7 said in Sending email issue.:

                    this example

                    IIRC gmail, blocks IMAP ad pop3 by default, you have to log in to your gmail account and enable it in the settings

                    • Go to "Settings", e.g. click on the "Gears" icon and select "Settings".
                    • Click on "Forwarding and POP/IMAP".
                    • Enable "IMAP Access" and/or "POP Download"
                    J Offline
                    J Offline
                    jenya7
                    wrote on last edited by
                    #10

                    @J-Hilk
                    email.png

                    This is what I have. Looks OK.

                    J.HilkJ 1 Reply Last reply
                    0
                    • J jenya7

                      @J-Hilk
                      email.png

                      This is what I have. Looks OK.

                      J.HilkJ Offline
                      J.HilkJ Offline
                      J.Hilk
                      Moderators
                      wrote on last edited by
                      #11

                      @jenya7 looks good.

                      have you seen this SO topic about response code 535?

                      https://stackoverflow.com/questions/42558903/expected-response-code-250-but-got-code-535-with-message-535-5-7-8-username

                      You can try the solution posted there, see if that helps


                      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                      Q: What's that?
                      A: It's blue light.
                      Q: What does it do?
                      A: It turns blue.

                      J 1 Reply Last reply
                      6
                      • J.HilkJ J.Hilk

                        @jenya7 looks good.

                        have you seen this SO topic about response code 535?

                        https://stackoverflow.com/questions/42558903/expected-response-code-250-but-got-code-535-with-message-535-5-7-8-username

                        You can try the solution posted there, see if that helps

                        J Offline
                        J Offline
                        jenya7
                        wrote on last edited by
                        #12

                        @J-Hilk
                        yeah, thank you. "Allow less secure apps" did the magic.

                        1 Reply Last reply
                        1

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved