diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/clientmtms/src/SMTPSET.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/clientmtms/src/SMTPSET.CPP Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,949 @@ +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "SMTPSET.H" +#include // For KLinkLayerOpen + + +GLREF_C TPtrC8 LimitStringSize(const TPtrC8& aString, TInt aMaxSize); +GLREF_C TPtrC16 LimitStringSize(const TPtrC16& aString, TInt aMaxSize); + + +EXPORT_C CImSmtpSettings::CImSmtpSettings() +/** +Allocates and creates a new CImImap4Settings object initialised to +default values. +*/ + { + Reset(); + } + + +EXPORT_C CImSmtpSettings::~CImSmtpSettings() +/** +Destructor. +*/ + { + Reset(); + + delete iExtension; + iExtension=NULL; + } + + +EXPORT_C void CImSmtpSettings::Reset() +/** +Resets the settings to their default values. +*/ + { + CImBaseEmailSettings::Reset(); + + iPortNumber = KSMTPDefaultPortNumber; + iBodyEncoding = EMsgOutboxMIME; + + delete iEmailAlias; + iEmailAlias = NULL; + + delete iEmailAddress; + iEmailAddress = NULL; + + delete iReplyToAddress; + iReplyToAddress=NULL; + + if (Extension()) + { + delete Extension()->iReceiptAddress; + Extension()->iReceiptAddress=NULL; + + delete Extension()->iLoginName; + Extension()->iLoginName=NULL; + + delete Extension()->iTlsSslDomain; + Extension()->iTlsSslDomain=NULL; + + delete Extension()->iPassword; + Extension()->iPassword=NULL; + + Extension()->iToCcIncludeLimit=KSmtpToCcIncludeLimitDefault; + } + } + + +EXPORT_C const TPtrC CImSmtpSettings::EmailAlias() const +/** +Retrieves the configured email alias (display name) that will be sent +with outbound email. + +This is normally set to the real name of the user, e.g. "John Smith". +Set this value by calling SetEmailAliasL(). + +@return +The email alias (display name) if set, empty if not. +*/ + { + return iEmailAlias ? TPtrC(*iEmailAlias) : TPtrC(); + } + + +EXPORT_C const TPtrC CImSmtpSettings::EmailAddress() const +/** +Retrieves the configured SMTP email address of the user, +e.g. "john.smith@work.com". + +@return +SMTP email address of the user if set, empty if not. +*/ + { + return iEmailAddress ? TPtrC(*iEmailAddress) : TPtrC(); + } + + +EXPORT_C const TPtrC CImSmtpSettings::ReplyToAddress() const +/** Gets the internet email address that the user wishes replies to emails to be +sent to. + +This may be set to be the same as for EmailAddress(), or may be set to be +a different email address, e.g. "groupenquiries\@work.com". + +@return Internet email address that the user wishes replies to emails to be +sent to */ + { + return iReplyToAddress ? TPtrC(*iReplyToAddress) : TPtrC(); + } + + +EXPORT_C const TPtrC CImSmtpSettings::ReceiptAddress() const +/** Gets the internet email address that the user wishes receipts to be returned +to. + +This would normally be set to be the same as for ReplyToAddress(), e.g. "groupenquiries\@work.com". + +@return Internet email address that the user wishes receipts to be returned +to. */ + { + if (Extension() && Extension()->iReceiptAddress) + return TPtrC(*(Extension()->iReceiptAddress)); + return TPtrC(); + } + + +EXPORT_C TMsgOutboxBodyEncoding CImSmtpSettings::BodyEncoding() const +/** +Retrieves the method of encoding email messages if the encoding is not +specified when they are sent. + +The default value (EMsgOutboxMIME) is set so that text parts of the message +are sent as MIME multipart/alternative text/html parts, and are encoded using +UTF-8. + +@see TMsgOutboxBodyEncoding + +@return +Method of encoding. +*/ + { + return iBodyEncoding; + } + + +EXPORT_C const TUid CImSmtpSettings::DefaultMsgCharSet() const +/** +Retrieves which character set is used to send text in MIME email messages. + +The default character set is ISO-8859-1 (Latin 1). The UIDs used to identify +all character sets are defined in the Character Conversion API. + +@return +Character set identifier. +*/ + { + return iDefaultMsgCharSet; + } + + +EXPORT_C void CImSmtpSettings::SetEmailAliasL(const TDesC& aEmailAlias) +/** +Specifies the configured email alias (display name) that will be sent +with outbound email. + +This is normally set to the real name of the user. For example, "John Smith". + +@param aEmailAlias +The email alias (display name). +*/ + { + HBufC* newEmailAlias = aEmailAlias.AllocL(); + delete iEmailAlias; + iEmailAlias = newEmailAlias; + } + + +EXPORT_C void CImSmtpSettings::SetEmailAddressL(const TDesC& aEmailAddress) +/** +Specifies the SMTP email address of the user. + +@param aEmailAddress +SMTP email address of the user. +*/ + { + HBufC* newEmailAddress = aEmailAddress.AllocL(); + delete iEmailAddress; + iEmailAddress = newEmailAddress; + } + + +EXPORT_C void CImSmtpSettings::SetReplyToAddressL(const TDesC& aReplyToAddress) +/** +Specifies the email address that the user wishes replies to emails to be +sent to. If this is not specified, replies will be sent to the address +set by calling SetEmailAddressL(). + +@param aReplyToAddress +SMTP email address that the user wishes replies +to emails to be sent to. +*/ + { + HBufC* newReplyToAddress = aReplyToAddress.AllocL(); + delete iReplyToAddress; + iReplyToAddress = newReplyToAddress; + } + + +EXPORT_C void CImSmtpSettings::SetReceiptAddressL(const TDesC& aReceiptAddress) +/** +Specifies the SMTP email address that the user wishes email receipts to be +returned to. + +@param aReceiptAddress +SMTP email address that the user wishes receipts to be returned to. +*/ + { + CheckExtensionExistsL(); + HBufC* newReceiptAddress = aReceiptAddress.AllocL(); + delete Extension()->iReceiptAddress; + Extension()->iReceiptAddress = newReceiptAddress; + } + + +EXPORT_C void CImSmtpSettings::SetBodyEncoding(TMsgOutboxBodyEncoding aBodyEncoding) +/** +Specifies the default method of encoding email messages if the encoding is +not specified when sent. + +The default value (EMsgOutboxMIME) is set so that text parts of the message +are sent as MIME multipart/alternative text/html parts, and are encoded using +UTF-8. + +@see TMsgOutboxBodyEncoding + +@param aBodyEncoding +Default method of encoding +*/ + { + iBodyEncoding = aBodyEncoding; + } + + +EXPORT_C void CImSmtpSettings::SetDefaultMsgCharSet(TUid aDefaultMsgCharSet) +/** +Specifies which character set is used to send text in MIME email messages. + +The default character set is ISO-8859-1 (Latin 1). The UIDs used to identify +all character sets are defined in the Character Conversion API. + +@param aDefaultMsgCharSet +Character set identifier. +*/ + { + iDefaultMsgCharSet = aDefaultMsgCharSet; + } + + +EXPORT_C TBool CImSmtpSettings::AddVCardToEmail() const +/** +Retrieves whether email messages will have a VCard containing the user's +details from the Contacts Database when they are sent. + +This is supported as an alternative method of adding contact information into +email messages if the user does not wish to send signature text in their emails. + +@return +ETrue if the user's VCard is to be attached when sending. +*/ + { + return iFlags & KSmtpAddVCardToEmailFlag; + } + + +EXPORT_C void CImSmtpSettings::SetAddVCardToEmail(TBool aFlag) +/** +Specifies whether the email messages will have a VCard containing the user's +details from the Contacts Database when they are sent. + +@param aFlag +ETrue if the user's VCards will be added when the email is sent. +*/ + { + iFlags = (iFlags & ~KSmtpAddVCardToEmailFlag) | (aFlag ? KSmtpAddVCardToEmailFlag : KSmtpSettingsClearFlag); + } + + +EXPORT_C TBool CImSmtpSettings::AddSignatureToEmail() const +/** +Retrieves whether email messages will have the user's signature text appended +to the text of the messages when they are sent. + +The signature is stored in the SMTP service entry as a rich text body stream. + +If there is no signature body text stored in the SMTP service entry, then the +email is sent with no signature. This method does not check whether the signature +body text exists in the SMTP entry or not. + +This method is supported as an alternative method for adding contact +information into email messages if the user does not wish to send VCards in +emails. + +@return ETrue +If a signature text will be appended if it axists. +*/ + { + return iFlags & KSmtpAddSignatureToEmailFlag; + } + + +EXPORT_C void CImSmtpSettings::SetAddSignatureToEmail(TBool aFlag) +/** +Specifies whether email messages will have the user's signature text appended +to the text of the messages when they are sent. + +The signature is stored in the SMTP service entry as a rich text body stream. + +If there is no signature body text stored in the SMTP service entry, then the +email is sent with no signature. This method does not check whether the signature +body text exists in the SMTP entry or not. + +This method is supported as an alternative method for adding contact +information into email messages if the user does not wish to send VCards in +emails. + +@param aFlag +ETrue if a signature text should be attempted to be appended to outbound email. +*/ + { + iFlags = (iFlags & ~KSmtpAddSignatureToEmailFlag) | (aFlag ? KSmtpAddSignatureToEmailFlag : KSmtpSettingsClearFlag); + } + + +EXPORT_C TBool CImSmtpSettings::RequestReceipts() const +/** +Retrieves whether outbound email messages will contain a header that requests +receipts to be returned to the address identified by ReceiptAddress(). + +If no receipt address has been set,then no receipt is requested. It is entirely +up to the receiving mail client whether or not it will comply with this request. + +@return +ETrue if receipts are requested. +*/ + { + return iFlags & KSmtpRequestReceipts; + } + + +EXPORT_C void CImSmtpSettings::SetRequestReceipts(TBool aFlag) +/** +Specifies whether outbound email messages will have a header added that requests +a receipt from the recipient. + +If no receipt address has been set,then no receipt is requested. It is entirely +up to the receiving mail client whether or not it will comply with this request. + +@param aFlag +ETrue if receipts will be requested. +*/ + { + iFlags = (iFlags & ~KSmtpRequestReceipts) | (aFlag ? KSmtpRequestReceipts : KSmtpSettingsClearFlag); + } + + +EXPORT_C TImSMTPSendCopyToSelf CImSmtpSettings::SendCopyToSelf() const +/** +Retrieves the setting of the option that allows the user to automatically email +themselves a copy of all emails that are sent. + +@see TImSMTPSendCopyToSelf + +@return +Option setting. +*/ + { + return iSendCopyToSelf; + } + + +EXPORT_C void CImSmtpSettings::SetSendCopyToSelf(TImSMTPSendCopyToSelf aSendCopyToSelf) +/** +Specifies the option that allows the user to automatically email themselves a copy +of all emails that are sent. + +@see TImSMTPSendCopyToSelf + +@param aSendCopyToSelf +Option setting. +*/ + { + iSendCopyToSelf = aSendCopyToSelf; + } + + +EXPORT_C TImSMTPSendMessageOption CImSmtpSettings::SendMessageOption() const +/** +Retrieves the setting of the sending option for new email messages if it is not +specified while sending. + +This option is intended to be acted on by the message client. +The default value is send the message immediately (ESendMessageImmediately). + +@see TImSMTPSendMessageOption + +@return +Default sending option. +*/ + { + return iSendMessageOption; + } + + +EXPORT_C void CImSmtpSettings::SetSendMessageOption(TImSMTPSendMessageOption aSendMessageOption) +/** +Specifies the sending option for outbound email messages if it is not +specified while sending. + +The default value is to send the message immediately (ESendMessageImmediately). + +@see TImSMTPSendMessageOption + +@param aSendMessageOption +Default sending option. +*/ + { + iSendMessageOption = aSendMessageOption; + } + + +EXPORT_C CImSmtpSettings& CImSmtpSettings::CopyL(const CImSmtpSettings& aCImSmtpSettings) +/** +Copies the configuration settings from another SMTP settings object into this object. + +@param aCImSmtpSettings +Specifies the object to copy. + +@return +This object after copying. +*/ + { + // CheckExtensionExistsL() called at the start of the function, since it's allocation will be longer lived + CheckExtensionExistsL(); + Reset(); + CImBaseEmailSettings::CopyL(aCImSmtpSettings); + iEmailAlias = aCImSmtpSettings.EmailAlias().AllocL(); + iEmailAddress = aCImSmtpSettings.EmailAddress().AllocL(); + iReplyToAddress = aCImSmtpSettings.ReplyToAddress().AllocL(); + Extension()->iReceiptAddress= aCImSmtpSettings.ReceiptAddress().AllocL(); + iBodyEncoding = aCImSmtpSettings.BodyEncoding(); + iDefaultMsgCharSet = aCImSmtpSettings.DefaultMsgCharSet(); + iSendCopyToSelf = aCImSmtpSettings.SendCopyToSelf(); + iSendMessageOption = aCImSmtpSettings.SendMessageOption(); + Extension()->iLoginName = aCImSmtpSettings.LoginName().AllocL(); + Extension()->iPassword = aCImSmtpSettings.Password().AllocL(); + Extension()->iTlsSslDomain = aCImSmtpSettings.TlsSslDomain().AllocL(); + Extension()->iToCcIncludeLimit = aCImSmtpSettings.ToCcIncludeLimit(); + return (*this); + } + + +EXPORT_C TBool CImSmtpSettings::operator==(const CImSmtpSettings& aCImSmtpSettings) const +/** +Equality operator. + +@param aCImSmtpSettings +Specifies the SMTP settings object to compare with. + +@return +ETrue if the settings are the same. +*/ + { + return ((CImBaseEmailSettings::operator==(aCImSmtpSettings)) && + !((EmailAlias().Compare(aCImSmtpSettings.EmailAlias())) || + (EmailAddress().Compare(aCImSmtpSettings.EmailAddress())) || + (ReplyToAddress().Compare(aCImSmtpSettings.ReplyToAddress())) || + (ReceiptAddress().Compare(aCImSmtpSettings.ReceiptAddress()))) && + (BodyEncoding() == aCImSmtpSettings.BodyEncoding()) && + (DefaultMsgCharSet() == aCImSmtpSettings.DefaultMsgCharSet()) && + (SendCopyToSelf() == aCImSmtpSettings.SendCopyToSelf()) && + (SendMessageOption() == aCImSmtpSettings.SendMessageOption()) && + (ToCcIncludeLimit() == aCImSmtpSettings.ToCcIncludeLimit()) && + !(LoginName().Compare(aCImSmtpSettings.LoginName())) && + !(Password().Compare(aCImSmtpSettings.Password()))); + } + + +EXPORT_C const TPtrC8 CImSmtpSettings::LoginName() const +/** +Retrieves the login user name used when SMTP authentication is enabled by +calling SetSMTPAuth(). + +@return +The login user name. +*/ + { + if (Extension() && Extension()->iLoginName) + return TPtrC8(*(Extension()->iLoginName)); + return TPtrC8(); + } + + +EXPORT_C void CImSmtpSettings::SetLoginNameL(const TDesC8& aLoginName) +/** +Specifies the login user name used when SMTP authentication is enabled by +calling SetSMTPAuth(). + +@param aLoginName +The login user name. +*/ + { + CheckExtensionExistsL(); + HBufC8* newLoginName = aLoginName.AllocL(); + delete Extension()->iLoginName; + Extension()->iLoginName = newLoginName; + } + + +EXPORT_C const TPtrC8 CImSmtpSettings::Password() const +/** +Retrieves the password used when SMTP authentication is enabled by +calling SetSMTPAuth(). + +@return +The password. +*/ + { + if (Extension() && Extension()->iPassword) + return TPtrC8(*(Extension()->iPassword)); + return TPtrC8(); + } + + +EXPORT_C void CImSmtpSettings::SetPasswordL(const TDesC8& aPassword) +/** +Specifies the password used when SMTP authentication is enabled by +calling SetSMTPAuth(). + +@param aPassword +The password. +*/ + { + CheckExtensionExistsL(); + HBufC8* newPassword = aPassword.AllocL(); + delete Extension()->iPassword; + Extension()->iPassword = newPassword; + } + + +EXPORT_C TBool CImSmtpSettings::SMTPAuth() const +/** +Retrieves whether SMTP authentication will be used when sending emails. +Read RFC 2554 "SMTP Service Extension for Authentication" for more details. + +@return +ETrue if SMTP authentication is enabled. +*/ + { + return iFlags & KSmtpSmtpAuthFlag; + } + + +EXPORT_C void CImSmtpSettings::SetSMTPAuth(TBool aFlag) +/** +Enables or disables SMTP authentication when sending emails. +Read RFC 2554 "SMTP Service Extension for Authentication" for more details. + +@param aFlag +ETrue to enable SMTP authentication. +*/ + { + iFlags = (iFlags & ~KSmtpSmtpAuthFlag) | (aFlag ? KSmtpSmtpAuthFlag : KSmtpSettingsClearFlag); + } + + +EXPORT_C TBool CImSmtpSettings::InboxLoginDetails() const +/* +This function should not be used. Use SMTPAuth() for testing if +SMTP authentication should be used. +@return Unused +@deprecated +*/ + { + return iFlags & KSmtpInboxLoginDetails; + } + + +EXPORT_C void CImSmtpSettings::SetInboxLoginDetails(TBool aFlag) +/* +This function should not be used. Use SetSMTPAuth() for flagging that +SMTP authentication should be used. +@param aFlag Unused +@deprecated +*/ + { + iFlags = (iFlags & ~KSmtpInboxLoginDetails) | (aFlag ? KSmtpInboxLoginDetails : KSmtpSettingsClearFlag); + } + +/** +Retrieves the setting for inclusion of original To and CC email addresses +in the body text of reply and forwarded emails. + +@return +The maximum number of addresses to include in either field. +*/ +EXPORT_C TInt CImSmtpSettings::ToCcIncludeLimit() const + { + if (Extension()) + { + return (Extension()->iToCcIncludeLimit); + } + else + { + return KSmtpToCcIncludeLimitDefault; + } + } + +/** +Specifies maximum number of original To and CC addresses to include in +the body header when replying-to and forwarding emails. +The default (0) indicates that no addresses should be included. + +@param aLimit +The maximum number of addresses to include in each field. +*/ +EXPORT_C void CImSmtpSettings::SetToCcIncludeLimitL(TInt aLimit) + { + __ASSERT_DEBUG( aLimit>=0, User::Invariant() ); + CheckExtensionExistsL(); + if (aLimit<0) + { + Extension()->iToCcIncludeLimit = KSmtpToCcIncludeLimitDefault; + } + else + { + Extension()->iToCcIncludeLimit = aLimit; + } + } + +/** +Sets the domain name to use during TLS/SSL certificate validation. + +@param aDomainName Domain name +*/ +EXPORT_C void CImSmtpSettings::SetTlsSslDomainL(const TDesC8& aDomainName) + { + CheckExtensionExistsL(); + HBufC8* newTlsSslDomain = aDomainName.AllocL(); + delete Extension()->iTlsSslDomain; + Extension()->iTlsSslDomain = newTlsSslDomain; + } + +/** +Gets the domain name used during TLS/SSL certificate validation. + +@return Domain name +*/ +EXPORT_C TPtrC8 CImSmtpSettings::TlsSslDomain() const + { + if (Extension() && Extension()->iTlsSslDomain) + return TPtrC8(*(Extension()->iTlsSslDomain)); + return TPtrC8(); + } + + +/** Gets the sending status of the SMTP operation. + +@return Sending status +*/ +EXPORT_C TMsgImOutboxSendState TImSmtpProgress::Status() const + { + return iStatus; + } + + +/** Sets the sending status of the SMTP operation + +@param aStatus New sending status +*/ +EXPORT_C void TImSmtpProgress::SetStatus(TMsgImOutboxSendState aStatus) + { + iStatus = aStatus; + } + + +/** Sets an error code for the operation. + +@param anError Error code +*/ +EXPORT_C void TImSmtpProgress::SetError(TInt anError) + { + iError=anError; + } + + +/** Gets an operation error code. + +This is set only when a send operation has completed. + +@return Operation error code +*/ +EXPORT_C TInt TImSmtpProgress::Error() const + { + return iError; + } + + +/** Gets the index of the message that is currently being sent. + +The index range is from 0 to SendTotal(). + +@return Index of the message being sent +*/ +EXPORT_C TInt TImSmtpProgress::MsgNo() const + { + if (Status() == EMsgOutboxProgressConnecting) + { + // While the status is EMsgOutboxProgressConnecting, the iMsgNo variable contains + // the connection progress value. Therefore return 0 instead. + return 0; + } + else + { + return iMsgNo; + } + } + + +/** Sets the index of the message that is currently being sent. + +@param aMsgNo Index of the message being sent +*/ +EXPORT_C void TImSmtpProgress::SetMsgNo(TInt aMsgNo) + { + iMsgNo = aMsgNo; + } + + +/** Gets the number of messages sent so far in this SMTP session. + +@return Number of messages +*/ +EXPORT_C TInt TImSmtpProgress::Sent() const + { + if (Status() == EMsgOutboxProgressConnecting) + { + // While the status is EMsgOutboxProgressConnecting, the iSent variable contains + // the connection IAP value. Therefore return 0 instead. + return 0; + } + else + { + return iSent; + } + } + + +/** Gets the number of messages that the MTM did not attempt to send in this session. + +A possible reason is because the message store was locked by another client. + +@return Number of messages +*/ +EXPORT_C TInt TImSmtpProgress::NotSent() const + { + return iNotSent; + } + + +/** Gets the number of messages that the MTM failed to send this session. + +For example, failure could be because the SMTP server refused to accept a message. + +@return Number of messages +*/ +EXPORT_C TInt TImSmtpProgress::FailedToSend() const + { + return iFailedToSend; + } + + +/** Gets the total number of messages that the MTM is attempting to send in this session. + +The following equation is always true: Sent() + NotSent() + FailedToSend() = SendTotal(). + +@return Number of messages +*/ +EXPORT_C TInt TImSmtpProgress::SendTotal() const + { + return iSendTotal; + } + + +/** Set the progress variables to initial values. + +The "send total" and "not sent" variables are set to aTotal. Other counter +variables are set to 0. The initial status is set to EMsgOutboxProgressWaiting. + +@param aTotal Number of messages to send +*/ +EXPORT_C void TImSmtpProgress::InitialiseTotal(const TInt& aTotal) + { + iNotSent=aTotal; + iSendTotal=aTotal; + iSent=0; + iFailedToSend=0; + iError=0; + iMsgNo=0; + iSendFileProgress.iBytesSent=0; + iSendFileProgress.iBytesToSend=0; + iSendFileProgress.iSessionState=EConnectingToSmtp; + iStatus=EMsgOutboxProgressWaiting; + } + + +/** Updates progress variables for when a message is successfully sent. + +The "message sent" count is incremented; the "not sent" count is decremented. +*/ +EXPORT_C void TImSmtpProgress::UpdateSent() + { + iNotSent--; + iSent++; + } + + +/** Updates progress variables for when a message fails to be sent. + +The "failed to send" count is incremented; the "not sent" count is decremented. +*/ +EXPORT_C void TImSmtpProgress::UpdateFailedToSend() + { + iNotSent--; + iFailedToSend++; // only changed if message was couldn't be sent + } + + +/** Decrements the send total. + +This can be used to adjust the total if a message is found to be deleted +before it can be sent. +*/ +EXPORT_C void TImSmtpProgress::DecrementSendTotal() + { + // used to lower send total when I discover one message in collection + // which has been deleted before I had a chance to send it. + iSendTotal--; + iNotSent--; + } + + +/** Gets the message server entry ID of the SMTP service being used. + +@return Message server entry ID of the SMTP service +*/ +EXPORT_C TMsvId TImSmtpProgress::ServiceId() const + { + return iServiceId; + } + + +/** Sets the message server entry ID of the SMTP service being used. + +@param aServiceId Message server entry ID of the SMTP service +*/ +EXPORT_C void TImSmtpProgress::SetServiceId(TMsvId aServiceId) + { + iServiceId = aServiceId; + } + + +EXPORT_C TInt TImSmtpProgress::ConnectionState() const +/** +Retrieves the stage of the connection process as defined in nifvar.h and csdprog.h +while the service is connecting to the SMTP server. + +@return +KLinkLayerOpen if the SMTP service has successfully connected, or +KErrNotFound if the SMTP service is disconnected, or +the current connection stage (declared in nifvar.h and csdprog.h) while +establishing a connection. +*/ + { + switch(iStatus ) + { + case EMsgOutboxProgressConnecting: + // Return the connection state temporarily stored in iMsgNo + // while connection is in progress + return iMsgNo; + case EMsgOutboxProgressWaiting: + // If we're definately in a disconnected state, return KErrNotFound + return KErrNotFound; + default: + // If we're in one of the connected states, return KLinkLayerOpen + return KLinkLayerOpen; + } + } + +EXPORT_C TInt TImSmtpProgress::ConnectionIAP() const +/** +Retrieves the internet access point that is used when connecting to the +SMTP service. + +@return +KErrNotFound if the SMTP service is not connecting, otherwise the +internet access point number. +*/ + { + if (Status() == EMsgOutboxProgressConnecting) + { + // Return the connection IAP temporarily stored in iSent + // while connection is in progress + return iSent; + } + else + { + return KErrNotFound; + } + } + +EXPORT_C void TImSmtpProgress::SetConnectionIAP(TInt aConnectionIAP) +/** +Sets the ConnectionIAP value. + +@param aConnectionIAP +The value that the ConnectionIAP will be set to. +*/ + { + // Only store the Connection IAP value in iSent if we're in the Connectiong state + if (Status() == EMsgOutboxProgressConnecting) + { + iSent = aConnectionIAP; + } + }