In gmail, 2-step verification is turned off.
Account access is enabled.
Less secure app access is turned on.
There is a log file here: C:\\TestLog\\Log.mht
The script I am using:
function Test() { SendEmail("xxxxn@gmail.com", "xxxx@xxxxxxxxx.com", "Test", "TestMessage", "C:\\TestLog\\Log.mht"); } function SendEmail(mFrom, mTo, mSubject, mBody, mAttachment) { var smtpServer = "smtp.gmail.com" //"smtp.gmail.com"; var smtpPort = 587; //tried 587, 465, 26 & 25 as well var userLogin = "xxxx"; // e.g. "abc" if the address is abc@gmail.com var userPassword = "PASSWORD"; var autentificationType = 1; // cdoBasic var connectionTimeout = 30; var useSSL = true;// Required by Gmail try { var schema = "http://schemas.microsoft.com/cdo/configuration/"; var mConfig = Sys.OleObject("CDO.Configuration"); mConfig.Fields.Item(schema + "sendusing") = 2; // cdoSendUsingPort mConfig.Fields.Item(schema + "smtpserver") = smtpServer; mConfig.Fields.Item(schema + "smtpserverport") = smtpPort; mConfig.Fields.Item(schema + "sendusername") = userLogin; mConfig.Fields.Item(schema + "sendpassword") = userPassword; mConfig.Fields.Item(schema + "smtpauthenticate") = autentificationType; mConfig.Fields.Item(schema + "smtpconnectiontimeout") = connectionTimeout; mConfig.Fields.Item(schema + "smtpusessl") = useSSL; mConfig.Fields.Update(); var mMessage = Sys.OleObject("CDO.Message"); mMessage.Configuration = mConfig; mMessage.From = mFrom; mMessage.To = mTo; mMessage.Subject = mSubject; mMessage.HTMLBody = mBody; if(0 < mAttachment.length) { mMessage.AddAttachment(mAttachment); } mMessage.Send(); } catch(exception) { Log.Error("E-mail cannot be sent", exception.description); return false; } Log.Message("Message to <" + mTo + "> was successfully sent"); return true; }
Log reports: 'E-mail cannot be sent', Additional Info panel is blank.
Help is much appreciated.
Dave
What happens if you put a breakpoint in the code and step through? At what point does the exception get thrown?
Hi Robert,
Ran the test as suggested -
It steps through till -
mConfig.Fields.Item(schema + "sendusing") = 2;
Then jumps to:
Log.Error("E-mail cannot be sent", exception.description);
Thanks.
OK... did a quick experiement...
So, everywhere you have something of the pattern of
mConfig.Fields.Item(schema + "sendusing")
add .Value at the end. So, you should end up with
mConfig.Fields.Item(schema + "sendusing").Value = 2
and so on.
Okay, I changed them to:
mConfig.Fields.Item(schema + "sendusing").Value = 2; // cdoSendUsingPort mConfig.Fields.Item(schema + "smtpserver").Value = smtpServer; mConfig.Fields.Item(schema + "smtpserverport".Value) = smtpPort; mConfig.Fields.Item(schema + "sendusername").Value = userLogin; mConfig.Fields.Item(schema + "sendpassword").Value = userPassword; mConfig.Fields.Item(schema + "smtpauthenticate").Value = autentificationType; mConfig.Fields.Item(schema + "smtpconnectiontimeout").Value = connectionTimeout; mConfig.Fields.Item(schema + "smtpusessl").Value = useSSL; mConfig.Fields.Update();
Still getting the same error! 😞
Is the exception still popping at the same code line?
I think we are making some proress!
It is going through every line till -
mMessage.Send();
... and then the exception takes place at the above line? I guess for some reason it can't send the message!!
Change the Log.Error to change the word "description" to "message". Let's see if we can find out what the actual exception is.
Okay, now we got (Additional info):
"The transport failed to connect to the server."
Change the smtpPort back to 465 and try again
Subject | Author | Latest Post |
---|---|---|