BPS C++ API  2.24.4
BpsSmtp Class Reference

A class for sending mail through a SMTP server. More...

#include <bpssmtp.h>

+ Inheritance diagram for BpsSmtp:

Public Types

enum  Auth { NoAuth = 0 , Plain = 1 , Login = 2 }
 Authentication used. More...
 
enum  Enc { NoEnc = 0 , SSL = 1 , TLS = 2 }
 Connection type used. More...
 
enum  Status { OK = 0 , Busy = 1 , ConnectionTimeout = 2 , ResponseTimeout = 3 , SendDataTimeout = 4 , AuthenticationFailed = 5 , StatusError = 6 , TempServerError = 7 , FatalServerError = 8 , DataError = 9 }
 Status code. More...
 

Signals

void status (int aStatus, const QString &aMessage)
 Status code and message emitted after completion. More...
 

Public Member Functions

Auth auth () const
 Get authentication mode. More...
 
 BpsSmtp (QObject *aParent=nullptr)
 Constructor for the BpsSmtp objects. More...
 
bool busy () volatile
 Check processing state. More...
 
Enc enc () const
 Get encryption mode. More...
 
QString host () const
 
int lastStatus () const
 
QString lastStatusMessage () const
 
QString password () const
 
int port () const
 Get host IP port number. More...
 
void sendMail (const BpsMail &aMail)
 Send a mail. More...
 
void sendMail (const QString &aFrom, const QString &aTo, const QString &aSubject, const QString &aText, const QStringList &aFiles=QStringList())
 Send a simple mail. More...
 
void setAuth (Auth aAuth)
 Set the authentication mode. More...
 
void setEnc (Enc aEnc)
 Set the encryption mode. More...
 
void setHost (const QString &aHost)
 Set SMTP server host name or IP address. More...
 
void setPassword (const QString &aPassword)
 Set the SMTP user password. More...
 
void setPort (int aPort)
 Set the SMTP servers IP port number. More...
 
void setTimeout (int aTimeout)
 
void setUser (const QString &aUser)
 Set the SMTP user name. More...
 
int timeout () const
 Get time out value. More...
 
QString user () const
 
void waitForCompletion ()
 Wait for sendMail completion. More...
 
- Public Member Functions inherited from QObject
bool blockSignals (bool block)
 
const QObjectListchildren () const const
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
void deleteLater ()
 
void destroyed (QObject *obj)
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectInfo ()
 
void dumpObjectInfo () const const
 
void dumpObjectTree ()
 
void dumpObjectTree () const const
 
QList< QByteArraydynamicPropertyNames () const const
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
bool inherits (const char *className) const const
 
void installEventFilter (QObject *filterObj)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
void killTimer (int id)
 
virtual const QMetaObjectmetaObject () const const
 
void moveToThread (QThread *targetThread)
 
QString objectName () const const
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
QVariant property (const char *name) const const
 
 Q_CLASSINFO (Name, Value)
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_EMIT Q_EMIT
 
 Q_ENUM (...)
 
 Q_ENUM_NS (...)
 
 Q_ENUMS (...)
 
 Q_FLAG (...)
 
 Q_FLAG_NS (...)
 
 Q_FLAGS (...)
 
 Q_GADGET Q_GADGET
 
 Q_INTERFACES (...)
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 
 Q_OBJECT Q_OBJECT
 
 Q_PROPERTY (...)
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SLOT Q_SLOT
 
 Q_SLOTS Q_SLOTS
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
 QObject (QObject *parent)
 
qobject_cast (const QObject *object)
 
qobject_cast (QObject *object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 
void removeEventFilter (QObject *obj)
 
void setObjectName (const QString &name)
 
void setParent (QObject *parent)
 
bool setProperty (const char *name, const QVariant &value)
 
bool signalsBlocked () const const
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
QThreadthread () const const
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
- Public Attributes inherited from QObject
typedef QObjectList
 
- Protected Member Functions inherited from QObject
virtual void childEvent (QChildEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void customEvent (QEvent *event)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
int receivers (const char *signal) const const
 
QObjectsender () const const
 
int senderSignalIndex () const const
 
virtual void timerEvent (QTimerEvent *event)
 
- Properties inherited from QObject
 objectName
 

Detailed Description

A class for sending mail through a SMTP server.

A convenience sendMail method can be used to send simple emails, while a more powerful sendMail method uses a BpsMail object to support more enhanced features such as HTML body, email display names and CC or BSS recipients.

The sendMail methods are designed to work non-blocking and event driven. After completion a status signal is sent to inform about the result.

For convenience when blocking is not an issue, a waitForCompletion method may be called to wait until the operation has completed instead of reacting on the status signal.

Simle mail example with blocking wait for completion:

BpsSmtp smtp(this);
smtp.setHost(bStr("mail.gmx.net"));
smtp.setPort(587);
smtp.setEnc(BpsSmtp::TLS);
smtp.setAuth(BpsSmtp::Login);
smtp.setUser(bStr("testuser@gmx.net"));
smtp.setPassword(bStr("testpass"));
smtp.sendMail(
bStr("testuser@gmx.net"),
bStr("admin@mycompany.com"),
bStr("Testsubject"),
bStr("Testbody\nLine 2.")
);
smtp.waitForCompletion();
qDebug() << smtp.lastStatus() << smtp.lastStatusMessage();
#define bStr(aStr)
Encapsulation for string literals.
Definition: bpsglobals.h:125
A class for sending mail through a SMTP server.
Definition: bpssmtp.h:88
@ TLS
Transport Layer Security (SSL 3.1 ff.).
Definition: bpssmtp.h:100
@ Login
Use LOGIN mode.
Definition: bpssmtp.h:109

The following example shows how a HTML mail is composed and sent in a non-blocking mode. The mSmtp object is assumed to be created in the surrounding class constructor and deleted in the destructor. Also, the class is assumed to have a slot "smtpStatus" where the result of the asynchronous send operation is evaluated.

BpsMail mail;
mail.setSender(bStr("testuser@gmail.com"), bStr("BPS Notification"));
mail.addToRecipient(bStr("admin@mycompany.com"), bStr("BPS Administrator"));
mail.setSubject(bStr("Testsubject"));
"<html>\n"
"<head>\n"
"</head>\n"
"<body>\n"
" <h1>Testtitle</h1>\n"
" <img src=\"cid:image1\" />"
" <p>Testparagraph with some information.</p>\n"
" <img src=\"cid:image2\" />"
"</body>"
"</html>"
));
mail.addImage(bStr("C:/dev/desert.jpg"));
mail.addImage(bStr("C:/dev/ibklogo.png"));
mail.addFile(bStr("C:/dev/ibk/src/testgui/testsmtp.h"));
mail.addFile(bStr("C:/dev/ibk/src/testgui/testsmtp.cpp"));
mSmtp->setHost(bStr("smtp.googlemail.com"));
mSmtp->setPort(587);
mSmtp->setEnc(BpsSmtp::TLS);
mSmtp->setAuth(BpsSmtp::Login);
mSmtp->setUser(bStr("testuser@gmail.com"));
mSmtp->setPassword(bStr("testpass$51"));
connect(mSmtp, SIGNAL(status(int,QString)), this, SLOT(smtpStatus(int,QString)));
mSmtp->sendMail(mail);
// At this point the mail is sent asynchronous, driven by TCP events.
// When the process terminates the status event is emitted with the
// result of the operation.
Mail object used for BpsSmtp.
Definition: bpsmail.h:15
void setSender(const QString &aEmail, const QString &aName=QString())
Set email address and name of sender.
void setHtml(const QString &aHtml)
Set the message body HTML.
void setSubject(const QString &aSubject)
Set the subject.
void addToRecipient(const QString &aEmail, const QString &aName=QString())
Add a "TO" recipient.
void addImage(const QString &aFile)
Adds an image to embedd for use in HTML.
void addFile(const QString &aFile)
Adds a file to attach to the email.
void status(int aStatus, const QString &aMessage)
Status code and message emitted after completion.
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)

Member Enumeration Documentation

◆ Auth

Authentication used.

Enumerator
NoAuth 

No authentication.

Plain 

Use PLAIN mode.

Login 

Use LOGIN mode.

◆ Enc

Connection type used.

Enumerator
NoEnc 

Unencrypted.

SSL 

Secure Socket Layer.

TLS 

Transport Layer Security (SSL 3.1 ff.).

◆ Status

Status code.

Enumerator
OK 

Successfull completed.

Busy 

Sending in progress.

ConnectionTimeout 

Connect to host not completed in time.

ResponseTimeout 

Response from server not received in time.

SendDataTimeout 

Send from client not completed in time.

AuthenticationFailed 

Username and password rejected by server.

StatusError 

Unexpected status from server.

TempServerError 

4xx SMTP temporary error (repeat could work).

FatalServerError 

5xx SMPT fatal error.

DataError 

Something wrong with the data.

Constructor & Destructor Documentation

◆ BpsSmtp()

BpsSmtp::BpsSmtp ( QObject aParent = nullptr)

Constructor for the BpsSmtp objects.

Parameters
aParentPointer to an optional parent object.

Member Function Documentation

◆ auth()

Auth BpsSmtp::auth ( ) const

Get authentication mode.

The default is NoAuth.

Returns
Authentication mode.

◆ busy()

bool BpsSmtp::busy ( ) volatile

Check processing state.

Returns
True = in progress, false = completed.

◆ enc()

Enc BpsSmtp::enc ( ) const

Get encryption mode.

The default is NoEnc.

Returns
Current encryption mode.

◆ host()

QString BpsSmtp::host ( ) const
Returns
Host IP name or address.

◆ lastStatus()

int BpsSmtp::lastStatus ( ) const
Returns
The last status code.

◆ lastStatusMessage()

QString BpsSmtp::lastStatusMessage ( ) const
Returns
The last status message.

◆ password()

QString BpsSmtp::password ( ) const
Returns
SMTP user password.

◆ port()

int BpsSmtp::port ( ) const

Get host IP port number.

The default is 25.

Returns
Host IP port number.

◆ sendMail() [1/2]

void BpsSmtp::sendMail ( const BpsMail aMail)

Send a mail.

The method does not wait for completion, but returns immediately. The event loop must be processed in the application to allow the communication. After completion the status signal is emitted.

Parameters
aMailThe mail to send.

◆ sendMail() [2/2]

void BpsSmtp::sendMail ( const QString aFrom,
const QString aTo,
const QString aSubject,
const QString aText,
const QStringList aFiles = QStringList() 
)

Send a simple mail.

This is a convenience method for:

  • One single "TO" recipient
  • Plain email address for sender and recipient
  • Plain text body

The method does not wait for completion, but returns immediately. The event loop must be processed in the application to allow the communication. After completion the status signal is emitted.

Parameters
aFromThe sender email address.
aToThe recipient email address.
aSubjectSubject text.
aTextBody as plain text.
aFilesOptional files to attach.

◆ setAuth()

void BpsSmtp::setAuth ( Auth  aAuth)

Set the authentication mode.

If the mode is set to Plain or Login, user and password need to be given.

Parameters
aAuthThe auth mode.

◆ setEnc()

void BpsSmtp::setEnc ( Enc  aEnc)

Set the encryption mode.

Parameters
aEncNew encryption mode.

◆ setHost()

void BpsSmtp::setHost ( const QString aHost)

Set SMTP server host name or IP address.

Parameters
aHostSMTP server host name or IP address.

◆ setPassword()

void BpsSmtp::setPassword ( const QString aPassword)

Set the SMTP user password.

Parameters
aPasswordPassword of the user on the SMTP server.

◆ setPort()

void BpsSmtp::setPort ( int  aPort)

Set the SMTP servers IP port number.

Parameters
aPortSMTP port number on server.

◆ setTimeout()

void BpsSmtp::setTimeout ( int  aTimeout)
Parameters
aTimeoutNew timeout value in milliseconds.

◆ setUser()

void BpsSmtp::setUser ( const QString aUser)

Set the SMTP user name.

Parameters
aUserName of the user on the SMTP server.

◆ status

void BpsSmtp::status ( int  aStatus,
const QString aMessage 
)
signal

Status code and message emitted after completion.

Parameters
aStatusThe status code.
aMessageThe status message to display.

◆ timeout()

int BpsSmtp::timeout ( ) const

Get time out value.

The default is 30000ms (30 seconds).

Returns
Time out value in milliseconds.

◆ user()

QString BpsSmtp::user ( ) const
Returns
SMPT user name.

◆ waitForCompletion()

void BpsSmtp::waitForCompletion ( )

Wait for sendMail completion.

Use lastStatus() and lastStatusMessage() to get the last status code and message.


The documentation for this class was generated from the following file: