diff options
Diffstat (limited to 'src/core/smtp/MCSMTPSession.cc')
-rw-r--r-- | src/core/smtp/MCSMTPSession.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/core/smtp/MCSMTPSession.cc b/src/core/smtp/MCSMTPSession.cc index 52851a08..6d723cb4 100644 --- a/src/core/smtp/MCSMTPSession.cc +++ b/src/core/smtp/MCSMTPSession.cc @@ -482,6 +482,37 @@ void SMTPSession::login(ErrorCode * pError) * pError = ErrorNone; } +void SMTPSession::checkAccount(Address * from, ErrorCode * pError) +{ + int r; + + loginIfNeeded(pError); + if (* pError != ErrorNone) { + return; + } + r = mailsmtp_mail(mSmtp, MCUTF8(from->mailbox())); + if (r == MAILSMTP_ERROR_STREAM) { + * pError = ErrorConnection; + return; + } + else if (r != MAILSMTP_NO_ERROR) { + * pError = ErrorInvalidAccount; + return; + } + + r = mailsmtp_rcpt(mSmtp, "email@invalid"); + if (r == MAILSMTP_ERROR_STREAM) { + * pError = ErrorConnection; + return; + } + else if (r != MAILSMTP_NO_ERROR) { + * pError = ErrorInvalidAccount; + return; + } + + * pError = ErrorNone; +} + void SMTPSession::sendMessage(Address * from, Array * recipients, Data * messageData, SMTPProgressCallback * callback, ErrorCode * pError) { |