Important: Please read the Qt Code of Conduct -

Sending mail via in QT on OSX

  • Hi,

    I'm trying to do something that should be quite straightforward.
    My application should send an e-mail to a list of addresses. Since it will be a simple message containing some text I thought smtp would be enough to get the job done, and google provides an smtp server (

    I based my code on an example I found online which was very helpful.

    When I tested my code everything seemed to go well until I got to the point where the connection was supposed to be made my debug output shows this: QSslSocket: cannot resolve SSL_set_psk_client_callback QSslSocket: cannot resolve TLSv1_1_client_method QSslSocket: cannot resolve TLSv1_2_client_method QSslSocket: cannot resolve TLSv1_1_server_method QSslSocket: cannot resolve TLSv1_2_server_method QSslSocket: cannot resolve SSL_select_next_proto QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
    stateChanged  QAbstractSocket::HostLookupState
    stateChanged  QAbstractSocket::ConnectingState
    stateChanged  QAbstractSocket::ConnectedState
    error  QAbstractSocket::SocketError(13)
    stateChanged  QAbstractSocket::ClosingState
    stateChanged  QAbstractSocket::UnconnectedState
    error  "The issuer certificate of a locally looked up certificate could not be found"

    I thought maybe the fault was in my code so I tested the example provided online and got the same issue.
    I googled for a while and found out that OSX has some issues with OpenSSL, and that's why the connection can't be made.
    I have absolutely no experience with SSL or anything like it so I was wondering if anyone could tell me how to work around this issue on mac.
    Any help would be much appreciated.

  • Lifetime Qt Champion


    This bug report might interest you

  • @SGaist

    Thank you very much, I used the work-around they proposed
    (storing a copy of the certificate in the local resources of the app & adding that to the default CACertificate list before opening the socket)
    I'm afraid this won't be a clean long term solution though (the certificate will stay valid for a while, but eventually expires I guess).
    If anyone has any idea's for a more clean/permanent solution I'm very much open to suggestions.
    In the mean time this will have to do.
    Thanks again, I appreciate the comment

Log in to reply