Forum Discussion

royd's avatar
royd
Regular Contributor
6 years ago

SendMail not working. Tried everything I found in documentation and forum. Need help.

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

  • tristaanogre's avatar
    tristaanogre
    Esteemed Contributor

    What happens if you put a breakpoint in the code and step through?  At what point does the exception get thrown?

    • royd's avatar
      royd
      Regular Contributor

      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.

      • tristaanogre's avatar
        tristaanogre
        Esteemed Contributor

        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.