Page 1 of 1

CDO Once Again ...

PostPosted: Tue Apr 02, 2013 5:21 pm
by TimStone
I realize there are numerous threads on this but none of them has an answer to my specific question.

First, here is the code I am using:

Code: Select all  Expand view

Function CDOSendMail( aTabMail )
    Local oEmailCfg,oEmailMsg

/* Tabmail
01 = MAILSERVER  // A correct mail server address
02 = MAILFROM  // A valid originator of the message
03 = MAILTO  // Who it is being sent to
04 = SUBJECT  // The subect
05 = BODY  // The body in text format
06 = ATTACHMENT  // Attachment(s)
07 = BCC  // Usually NIL  NOT USED
08 = LAUTHORIZATION  // T or F logical for authentication
09 = USERID pour MAILSERVER  // The mail server Username
10 = PW     pour MAILSERVER  // The mail server password
11 = Mail port   defaut = 25  // The port, default is 25, set to 465 for SSL
12 = Mail HTML page  // An HTML page, usually not used
13 = ssl authentification  // T or F logical for SSL
14 = Mail sender  // Mail sender name  NOT USED
15 = Organisation sender  // Organization sender  NOT USED
16 = Host  // Host if needed  NOT USED
*/

    TRY
       oEmailCfg := CREATEOBJECT( "CDO.Configuration" )
      WITH OBJECT  oEmailCfg:Fields
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value :=   TRIM( aTabMail[01] ) //"mail.xxxxxxxx.com"
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value :=  aTabMail[11] // 25
         :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2   // Remote SMTP = 2, local = 1
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value :=  aTabMail[08] // .T.
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value :=  aTabMail[13]
         :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := TRIM( aTabMail[09] ) //  "xxanser@xxxxxxxx.com"
         :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := TRIM( aTabMail[10] ) // "xxxxxx"
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 30
         :Update()
      END WITH
    CATCH oError
      MsgInfo( "Could not create message configuration" + ";"  + ;
             "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + ;
             "SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + ;
             "OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + ;
             "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" + ;
             "Message: " + oError:Description )
       Return .F.
    END
    oError:=NIL

    TRY
     oEmailMsg := CREATEOBJECT ( "CDO.Message" )
     WITH OBJECT oEmailMsg
        :Configuration =  oEmailCfg
        :From = aTabMail[02] //chr(34)+" Anser K.K. "+chr(34)+ "<anser@xxxxxxxx.com>" // This will be displayed in the From (The email id does not appear)
        :To = TRIM( aTabMail[03] ) // "xxanserkk@xxxxx.com"    // <-----   Place the TO email address
        :Subject = aTabMail[04] // "This is a Tst message"
        :MDNRequested = .T.
        :TextBody =  TRIM( aTabMail[05] )
        IF LEN( aTabMail[06] ) > 0
            For nEle := 1 To Len( aTabMail[06] )
             :AddAttachment( ALLTRIM(aTabMail[06][nEle] )) // := AllTrim( aAttach[ nEle ] )
            Next
        ENDIF
     END WITH
     oEmailMsg:Send( )
    CATCH oError
       
       MsgInfo( "Could not send message" + ";"  + CRLF+ ;
         "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + CRLF+;
         "SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + CRLF+ ;
         "OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + CRLF +;
         "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" +CRLF+ ;
         "Message: " + oError:Description )
       Return .F.
   
    END

Return( .t. )

 


On my computer this works. However, on a client's computer ( and other client's also ), I get the following response to the send() action:

Could not send message
Error 1001
SubC 3
OSCode 0
SubSystem CDO_Message;
Message DISP_E_MEMBERNOTFOUND

I've run out of ideas on what might be causing the problem on some computers. Of course my clients think its something that I should fix in 2 minutes ! By the number of posts I've shown on this problem, its obvious I've spent a lot of time.

Also of note. I am using Windows 8 and it works. The machine I tested on this morning at a client's office is the same computer ( Samsung All In One, same model ) also with Windows 8.

Tim

Re: CDO Once Again ...

PostPosted: Tue Apr 02, 2013 9:19 pm
by James Bott
Tim,

I am guessing you are trying to send via gmail?

Can we see all the parameters in aTabMail (except for the username and password, of course)?

Were you using the exact same EXE on the client's computer that was running on yours? If so, I am guessing it is the configuration of the client's PC having to do with cdosys.dll. You could try this:

"To resolve the issue simply open a 32-bit instance of cmd.exe from the SysWow64 directory and run "regsvr32 cdosys.dll" to re-register the 32-bit CDOSYS."

The above is from here:
http://blogs.msdn.com/b/mstehle/archive ... tered.aspx

Also, it could be a problem with the paths of any attachments. Are you using attachments? If so were they also on the client's PC? I would suggest not using attachments until you get it working without attachments.

I would also suggest running the example program by Anser that I sent to your email a couple of days ago. This is a very simple program and it eliminates anything different in your code that could be causing the problem. It would be nice to just know if CDO is working on the client's PC.

James

Re: CDO Once Again ...

PostPosted: Tue Apr 02, 2013 9:38 pm
by TimStone
James,

I have spent so much time in trial and error. Surely there is some way to know what that error message means.

No, I am not using gmail. I do nothing Google. Anything that passes through a Google server, no matter what it is, is open ( according to their very public license ) to the public domain. They can use the data in any way they wish, including selling or trading it. I deal with confidential information a lot, so I have absolutely no Google connectivity in my system.

n my case, I used the settings for Cox SSL and it worked fine. So, that means the program works fine ... even with attachments.

My client has AT&T and they route through Yahoo ! Other clients with problems are in Arizona and use Qwest, and I have no idea what some others are using.

Re: CDO Once Again ...

PostPosted: Tue Apr 02, 2013 10:10 pm
by James Bott
Tim,

>I have spent so much time in trial and error. Surely there is some way to know what that error message means.

Just about any parameter can cause that error--it is generic from my experience, so it doesn't help much. This is why I suggested eliminating as many variables as possible such as attachments.

RE: gmail - I just wanted to know if you were using a SSL server.

I just found that CDO is apparently installed when Outlook is installed, and starting with Outlook 2007 CDO was no longer installed. I am running XP PRO SP3 and Outlook is not installed on my PC and CDO is, so this is confusing. I do have Outlook Express, however.

Here is a link to the CDO download page.

http://www.windows8appstore.com/windows ... 50407.html

Unfortunately, this may mean that you will need to install CDO on your client's computer. It would be nice if there was a simple way to determine if CDO was installed. Perhaps looking for the cdosys.dll?

James

Re: CDO Once Again ...

PostPosted: Wed Apr 03, 2013 1:07 am
by TimStone
OK ... so I went online, CDO was there ... and then I looked at the obvious.

I compared Outlook settings with our email settings.

The guy guaranteed me over and over and over again that it was exactly the same.

Except the user name was not. He omitted the "@hisserver.com" section !

I corrected the error.

Now the CDO is working perfectly. Want to know how its implemented ? Check out the code section in the original post of this thread.

Thanks to everyone who helped along the way. I guess I need to go visit the client and collect a beer !

Tim

Re: CDO Once Again ...

PostPosted: Wed Apr 03, 2013 1:49 pm
by James Bott
Tim,

Glad to hear you got it working.

The guy guaranteed me over and over and over again that it was exactly the same.

Except the user name was not. He omitted the "@hisserver.com" section !


This is why I kept suggesting reducing the number of variables. I would compile a test EXE hardcoded with your email and email server info and with no runtime inputs that you know is working on your PC. Then you can just run this on any client's PC to make sure CDO is working on their PC.

After that you can install and configure your app and if it errors out, then you know it is a configuration issue rather than wondering if CDO is working.

Again, so glad you got it working.

Regards,
James

Re: CDO Once Again ...

PostPosted: Mon Nov 02, 2015 4:47 pm
by QAZWSX2K
how you resolve?, can you sharing with me? thanks

Re: CDO Once Again ...

PostPosted: Mon Nov 02, 2015 4:56 pm
by TimStone
My implementation is shared in the original post. It is correct.

The problem was that the user did not setup the server connection correctly. When I remotely took over his computer, and saw that, I fixed his entry and it all worked.

In most cases, when it asks for user name, it actually uses the full email.

He had: Username: John Doe
It wanted Username : JohnDoe@server.com

I made the change and all worked fine. If you want to implement CDO, my code in the original post works perfectly.

Tim

Re: CDO Once Again ...

PostPosted: Mon Nov 02, 2015 6:17 pm
by lucasdebeltran
Hello,

CDO does not work with latest TLS servers, and it´s blocked by many antivirus!.

Re: CDO Once Again ...

PostPosted: Mon Nov 02, 2015 7:15 pm
by TimStone
CDO resolved the issues I've had with SMTP over the years. It continues to work fine for all of my clients, and I hear absolutely no complaints.

I recommend the built in security in Windows 10 which has no problems with it, or Security Essentials for older OS versions.

Re: CDO Once Again ...

PostPosted: Mon Nov 02, 2015 8:41 pm
by Enrico Maria Giordano
TimStone wrote:CDO resolved the issues I've had with SMTP over the years. It continues to work fine for all of my clients, and I hear absolutely no complaints.

I recommend the built in security in Windows 10 which has no problems with it, or Security Essentials for older OS versions.


I agree.

EMG

Re: CDO Once Again ...

PostPosted: Mon Dec 30, 2019 9:15 pm
by MOISES
Hi,

How do you send emails via TLS smtp server?

Thank you.

Re: CDO Once Again ...

PostPosted: Wed Jan 01, 2020 3:23 pm
by MOISES

Re: CDO Once Again ...

PostPosted: Thu Jan 02, 2020 3:02 am
by Jimmy
MOISES wrote:I guess it is not possible:

https://social.technet.microsoft.com/Fo ... forum=ITCG

have you try Port 465 (mail.gmx.net) :?:
also there are Combination with Port 25 and SSL to work with TLS smtp server. (smtp.web.de)

both need
Code: Select all  Expand view
".../smtpauthenticate",   .t.