aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/smtp/MCSMTPSession.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/smtp/MCSMTPSession.cc')
-rw-r--r--src/core/smtp/MCSMTPSession.cc31
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)
{