To set up sending and receiving email messages via the Gmail account, you have to enable SSL.
1C:Enterprice 8.3 provides tools for this. The article contains a simple example based on 1C:Subsystems Library 2.0 that shows you how to set up sending and receiving email messages using your Gmail account.
To set up sending and receiving email messages via Gmail account
1. Add the POP3UseSSL and SMTPUseSSL attributes of Boolean type to the EmailAccounts catalog (see Fig.1).
Fig.1. Adding the POP3UseSSL and SMTPUseSSL attributes to the configuration
2. Add the POP3UseSSL and SMTPUseSSL attributes of Boolean type to the AdditionalAccountParameters form of the EmailAccounts catalog, and then add them to the form (see Fig. 2).
Fig.2. Adding the POP3UseSSL and SMTPUseSSL attributes to the form
3. Add the script that passes the attributes from the ItemForm to the AdditionalAccountParameters form and back:
- Make the changes specified in Listing 1 to the ItemForm module.
- Make the changes specified in Listing 2 and Listing 3 to the AdditionalAccountParameters form module.
- Make the changes specified in Listing 4 to the Email common module.
Procedure NotificationProcessing(EventName, Parameter, Source) If EventName = "SetAdditionalAccountParameters" And Source = Object.Ref Then Object.Timeout = Parameter.ServerTimeout; Object.KeepMessageCopiesAtServer = Parameter.KeepMessageCopiesAtServer; Object.KeepMessageAtServerPeriod = Parameter.KeepMessageAtServerPeriod; Object.SMTPUser = Parameter.SMTPUser; Object.SMTPPassword = Parameter.SMTPPassword; Object.POP3Port = Parameter.POP3Port; Object.SMTPPort = Parameter.SMTPPort; Object.SMTPAuthentication = Parameter.SMTPAuthentication; Object.SMTPAuthenticationMode = Parameter.SMTPAuthenticationMode; Object.POP3AuthenticationMode = Parameter.POP3AuthenticationMode; // Passing Use SSL flags to the object attributes Object.POP3UseSSL = Parameter.POP3UseSSL; Object.SMTPUseSSL = Parameter.SMTPUseSSL; // SSL Modified = True; EndIf; EndProcedure //////////////////////////////////////////////////////////////////////////////// // FORM COMMAND HANDLERS &AtClient Procedure AdditionalSettingsExecute() AccountStructure = New Structure; AccountStructure.Insert("Timeout", Object.Timeout); AccountStructure.Insert("KeepMessageCopiesAtServer", Object.KeepMessageCopiesAtServer); AccountStructure.Insert("KeepMessageAtServerPeriod", Object.KeepMessageAtServerPeriod); AccountStructure.Insert("SMTPUser", Object.SMTPUser); AccountStructure.Insert("SMTPPassword", Object.SMTPPassword); AccountStructure.Insert("POP3Port", Object.POP3Port); AccountStructure.Insert("SMTPPort", Object.SMTPPort); AccountStructure.Insert("SMTPAuthentication", Object.SMTPAuthentication); AccountStructure.Insert("SMTPAuthenticationMode", Object.SMTPAuthenticationMode); AccountStructure.Insert("POP3AuthenticationMode", Object.POP3AuthenticationMode); // Including Use SSL flags into the account structure AccountStructure.Insert("POP3UseSSL", Object.POP3UseSSL); AccountStructure.Insert("SMTPUseSSL", Object.SMTPUseSSL); // SSL CallParameters = New Structure("Ref, AccountStructure, ReadOnly", Object.Ref, AccountStructure, ReadOnly); OpenForm("Catalog.EmailAccounts.Form.AdditionalAccountParameters", CallParameters); EndProcedure |
&AtServer Procedure OnCreateAtServer(Cancel, StandardProcessing) // Skipping the initialization to guarantee that the form will be received if the SelfTest parameter is passed. If Parameters.Property("SelfTest") Then Return; EndIf; Ref = Parameters.Ref; Fill_ListSMTPAuthentication(); Fill_ListSMTPAuthenticationMode(); AccountStructure = Parameters.AccountStructure; ServerTimeout = AccountStructure.Timeout; KeepMessageCopiesAtServer = AccountStructure.KeepMessageCopiesAtServer; KeepMessageCopiesDayCount = AccountStructure.KeepMessageAtServerPeriod; DeleteMessagesFromServer = ?(KeepMessageCopiesDayCount = 0, False, True); SMTPPort = AccountStructure.SMTPPort; POP3Port = AccountStructure.POP3Port; // Passing Use SSL flags POP3UseSSL = AccountStructure.POP3UseSSL; SMTPUseSSL = AccountStructure.SMTPUseSSL; // SSL POP3AuthenticationMode = AccountStructure.POP3AuthenticationMode; SMTPAuthenticationMode = AccountStructure.SMTPAuthenticationMode; SMTPUser = AccountStructure.SMTPUser; SMTPPassword = AccountStructure.SMTPPassword; SMTPAuthentication = AccountStructure.SMTPAuthentication; SMTPAuthenticationSet = ?(SMTPAuthentication = Enums.SMTPAuthenticationVariants.NotDefined, False, True); Items.SMTPAuthenticationGroup.CurrentPage = ?(SMTPAuthentication = Enums.SMTPAuthenticationVariants.SetWithParameters, Items.ParametersGroup, Items.EmptyPageGroup); EndProcedure |
&AtClient
Function FillExtendedParameters()
Result = New Structure;
Result.Insert("SMTPPort", SMTPPort);
Result.Insert("POP3Port", POP3Port);
Result.Insert("KeepMessageCopiesAtServer", KeepMessageCopiesAtServer);
If DeleteMessagesFromServer Then
KeepMessageCopiesDayCount = KeepMessageCopiesDayCount;
Else
KeepMessageCopiesDayCount = 0;
EndIf;
Result.Insert("KeepMessageAtServerPeriod", KeepMessageCopiesDayCount);
Result.Insert("ServerTimeout", ServerTimeout);
If SMTPAuthenticationSet Then
Result.Insert("SMTPAuthentication", SMTPAuthentication);
If SMTPAuthentication = (SMTPAuthentication_SetWithParameters()) Then
Result.Insert("SMTPUser", SMTPUser);
Result.Insert("SMTPPassword", SMTPPassword);
Result.Insert("SMTPAuthenticationMode", SMTPAuthenticationMode);
Else
Result.Insert("SMTPUser", "");
Result.Insert("SMTPPassword", "");
Result.Insert("SMTPAuthenticationMode", SMTPAuthenticationMode_None());
EndIf;
Else
Result.Insert("SMTPAuthentication", SMTPAuthentication_NotDefined());
Result.Insert("SMTPUser", "");
Result.Insert("SMTPPassword", "");
Result.Insert("SMTPAuthenticationMode", SMTPAuthenticationMode_None());
EndIf;
Result.Insert("POP3AuthenticationMode", POP3AuthenticationMode);
// Including Use SSL flags into the result structure
Result.Insert("POP3UseSSL", POP3UseSSL);
Result.Insert("SMTPUseSSL", SMTPUseSSL);
// SSL
Return Result;
EndFunction |
Function GenerateInternetProfile(Val Account, Val Password = Undefined, Val GenerateSMTPProfile = True, Val GeneratePOP3Profile = True) Export Profile = New InternetMailProfile; Profile.User = Account.User; Profile.Timeout = Account.Timeout; If ValueIsFilled(Password) Then Profile.Password = Password; Else Profile.Password = Account.Password; EndIf; If GenerateSMTPProfile Then Profile.SMTPServerAddress = Account.OutgoingMailServerSMTP; Profile.SMTPPort = Account.SMTPPort; If Account.SMTPAuthentication = Enums.SMTPAuthenticationVariants.SimilarlyPOP3 Then Profile.SMTPAuthentication = SMTPAuthenticationMode.Default; Profile.SMTPUser = Account.User; Profile.SMTPPassword = Profile.Password; ElsIf Account.SMTPAuthentication = Enums.SMTPAuthenticationVariants.SetWithParameters Then If Account.SMTPAuthenticationMode = Enums.SMTPAuthenticationModes.CramMD5 Then Profile.SMTPAuthentication = SMTPAuthenticationMode.CramMD5; ElsIf Account.SMTPAuthenticationMode = Enums.SMTPAuthenticationModes.Login Then Profile.SMTPAuthentication = SMTPAuthenticationMode.Login; ElsIf Account.SMTPAuthenticationMode = Enums.SMTPAuthenticationModes.Plain Then Profile.SMTPAuthentication = SMTPAuthenticationMode.Plain; ElsIf Account.SMTPAuthenticationMode = Enums.SMTPAuthenticationModes.None Then Profile.SMTPAuthentication = SMTPAuthenticationMode.None; Else Profile.SMTPAuthentication = SMTPAuthenticationMode.Default; EndIf; Profile.SMTPUser = Account.SMTPUser; Profile.SMTPPassword = Account.SMTPPassword; ElsIf Account.SMTPAuthentication = Enums.SMTPAuthenticationVariants.POP3BeforeSMTP Then Profile.SMTPAuthentication = SMTPAuthenticationMode.None; Profile.POP3BeforeSMTP = True; Else Profile.SMTPAuthentication = SMTPAuthenticationMode.None; EndIf; EndIf; If GeneratePOP3Profile Then Profile.POP3ServerAddress = Account.IncomingMailServerPOP3; Profile.POP3Port = Account.POP3Port; If Account.POP3AuthenticationMode = Enums.POP3AuthenticationModes.APOP Then Profile.POP3Authentication = POP3AuthenticationMode.APOP; ElsIf Account.POP3AuthenticationMode = Enums.POP3AuthenticationModes.CramMD5 Then Profile.POP3Authentication = POP3AuthenticationMode.CramMD5; Else Profile.POP3Authentication = POP3AuthenticationMode.General; EndIf; EndIf; // Passing Use SSL flags to the profile settings Profile.POP3UseSSL = Account.POP3UseSSL; Profile.SMTPUseSSL = Account.SMTPUseSSL; // SSL Return Profile; EndFunction |
Now you can select the POP3 requires SSL and SMTP requires SSL checkboxes when you need to send or receive email messages using your Gmail account (see Fig. 3).
Fig. 3. Checkboxes added by the POP3UseSSL and SMTPUseSSL