Smartermail API wrapper for coldfusion - version 1.3.1

smartermail iconFor all of you who have Smartermail as their mailserver software, I just made your life a bit easier!
You probably already know that it is not possible inside of smartermail, to change user settings for all existing customers in one time? You can change the Defaults for new users, but existing, nehh.
Since I needed to do some global changes for a few hundred accounts, I decided to check out the Smartermail API. And what began as a simple task, turned into my newest opensource Coldfusion project: the Smartermail API wrapper for coldfusion, complete with a UI for everyone!

The main file that cfml developers will use is smartermail.cfc , which does the actuall call to the webservice.
All other people (also non-coldfusion-people) can use the API wrapper UI which I also built.


17 june 2011: Version 1.3.1
Fixes a bug which made some API calls fail: all arguments were xmlFormatted, while some of these arguments needed to actually be shown as xml (i.e. <string></string>).

26 february 2011: Version 1.3.0
Added extra no-compression headers to the http api call, to fix an Adobe CF bug. Updated the UI to allow domain admins to login and use the functionality.

01 december 2010: Version 1.2

Added debugging options in the Smartermail.cfc file; added optional extra debugging in the UI files; enhanced the UI a bit.

28 march 2010: Version 1.1

Changes in the smartermail API wrapper code, to make it CF7/8 compatible. (it used to be Railo + CF9 only)

9 may 2010: Version 1.1.1

The api wrapper now uses the xmlFormat() function for all values in the soap call. The smartermail api wrapper UI now shows a textarea when the field for an api function has 'description' in it's name. Also, all form values are now escaped with htmleditformat() when the form is shown again after submit. Also, some minor text/layout change.

Download the code

WSDL? No, just cfhttp ;-)

One of the biggest irritations with webservices is the wsdl itself, and the flunky way some versions of coldfusion handle it. For me, the simpler you can do it, the better. Web services are just a way of communication: I send an xml package with a question inside, and I get an xml package returned with the answer. That's it.
So, I decided to not use <cfinvoke>, but just <cfhttp>:

<cfhttp method="post" url="#this.serverURL#/Services/" throwonerror="yes" result="cfhttpReturn_struct">
    <cfhttpparam type="header" name="Content-Type" value="application/soap+xml" />
    <cfhttpparam type="body" value="#soapBody#" />

The UI

As you can see in the example pages, all the methods are there, complete with the documentation and an example of the soap xml which is used. If you just want to use the UI, then just don't care about the xml; it's all done for you. Just fill in the displayed form, and you're fine!

For starters, you have to login with your server credentials. After that, a check is done to see if the credentials are correct.
Then, you are ready to go!

All of the options can also be done in your smartermail administrator, but I've made a few extras...
You can manage the settings for multiple email addresses in one time, and even for multiple domains in one time. If, for example, you want to change the mailbox size of 200 users, you only have to do one call! (hmm, wasn't that the thing I originally just needed to do?)

How to use the API wrapper yourself.

First, create the smartermail-object with the admin details:

<cfset variables.smartermail_obj = createObject("component", "Smartermail").init(serverURL="", wsUsername="your admin username", wsPassword="your admin password") />

Then, you can call any function you like, like this:

<cfset return_xml = variables.smartermail_obj.callWs(page='svcDomainAdmin', method='GetAllDomains') />

In case you need to give extra arguments to the page you are calling, you supply the extra argument 'args', like this:

<cfset extraArguments_struct = structNew() />
<cfset extraArguments_struct['DomainName'] = "" />
<cfset return_xml = variables.smartermail_obj.callWs(page='svcUserAdmin', method='GetUsers', args=extraArguments_struct) />

If you want to find out which arguments you need, then just check the UI test pages!

In the example pages I created an option to manage the settings for multiple domains and email addresses in one time. This is actually pretty simple to do, since you only have to loop over a list, like this:

<cfset emailList = ",," />
<cfloop list="#emailList#" index="email">
<cfset form.EmailAddress = email />
<cfset extraArguments_struct = structNew() />
<cfset extraArguments_struct['EmailAddress'] = email />
<cfset return_xml = variables.smartermail_obj.callWs(page="svcUserAdmin", method="GetUser", args=extraArguments_struct) />
<!--- you might want to do something with the xml you retrieved here --->

When one of the parameters has multiple values (i.e. 3 mail addresses for 1 alias), then you need to send the 3 mailaddresses as an CRLF-delimited list, like this:

<cfset extraArguments_struct = structNew() />
<cfset extraArguments_struct['DomainName'] = "" />
<cfset extraArguments_struct['AliasName'] = "allclients" />
<cfset extraArguments_struct['Addresses'] = "" />
<cfset return_xml = variables.smartermail_obj.callWs(page="svcAliasAdmin", method="AddAlias", args=extraArguments_struct) />

Debugging (new since version 1.2.0)

In case you need to debug the API calls, you can now simply save all request and response data to any scope you want.
To start, you need to add 2 arguments to the init function like this:

<cfset variables.smartermail_obj = createObject("component", "Smartermail").init(
, wsUsername="your admin username"
, wsPassword="your admin password"
, debugMode=true
, debugDataScopeName="request / application / this / server"
) />

By default, debugMode is off. The default for the debugDataScopeName is "this", which means that the debug data will be stored inside the cfc.

The debug data will be stored as "SMDebugData", so for example application.SMDebugData. It is an array with structs, containing the keys Date, Title, and Data. But you can access this debug data even more easily, by calling

<cfset myDebugData = variables.smartermail_obj.getDebugData() />


I hope you like and use the code! If so, leave me a comment; I'd like it!

Better yet, if you need a coldfusion (or Railo!) developer, hire me! Digg StumbleUpon Facebook Technorati Fav reddit Google Bookmarks
| Viewed 6704 times
  1. Ricardo

    #1 by Ricardo - januari 13, 2010 at 17:27

    Hi Paul,
    I downloaded the package and tried to run, but it seems to miss a folder required by the Application.cfm, /wddx/methodArguments.wddx
    Can you send that to me ?
  2. Paul Klinkenberg

    #2 by Paul Klinkenberg - januari 13, 2010 at 17:44

    Hi Ricardo, well, that's just got to mean you're the first one who wanted to use it ;-)
    I updated the zip file to include *all* the files:

    Let me know if you have any questions!
    Regards, Paul
  3. Ricardo

    #3 by Ricardo - januari 13, 2010 at 17:51

    Thanks for your attention. I'm hoping to successfully access our mail server though the API, since the tests I've done by reading SmarteTools documents were a failure.
    I'll keep you posted of my results.
    By the way, do you want a free email account at our domain CFDEVELOPERS.NET ? Just let me know which username you want.
    Best regards,
  4. Paul Klinkenberg

    #4 by Paul Klinkenberg - januari 13, 2010 at 18:08

    Hi Ricardo, Thanks for the offer, but I am already using too much email addresses :)
    (and is also quite catchy I think ;)

    Hope to hear about your results!
  5. Ricardo

    #5 by Ricardo - januari 15, 2010 at 18:06

    I am using your API successfully to check email accounts, get a list of users and aliases, add new user and add new alias.
    One thing that I need to know is how to pass multiple addresses for an alias. When I send just one address in "params.Addresses" it works fine, but if I send multiple addresses in a comma or pipe delimited list, it creates the alias with none addresses.
    I tried to send them as an array, then I got an error from your API.
    Any light on that ?
  6. Paul Klinkenberg

    #6 by Paul Klinkenberg - januari 15, 2010 at 18:31

    You can add multiple '[string]email[/string]' tags inside the Addresses tag.
    You could've also found out by using the API UI btw :)

    Good luck, Paul
  7. Ricardo

    #7 by Ricardo - januari 15, 2010 at 19:20

    Here is the deal, I receive the operations request from a PHP page in a XML-RPC package, which I transform into ColdFusion structure, then do my validations, modify some parameters and then I call your API which converts my parameters into a SOAP and communicates with SmarterMail.
    I found out that if I send the multiple addresses in my parameter "params.Addresses" as a CR-LF delimited list, IT WORKS!.
    Then I transform your results back into XML-RPC for the PHP page to understand it.
    I'm very happy with your API, it solved our big problem here.
    I will blog about it in the near future and link to your blog.
    Thanks for your good job.
  8. Paul Klinkenberg

    #8 by Paul Klinkenberg - januari 17, 2010 at 15:34

    Yes that's true, if you made your own implementation based on the cfc, then you need to delimite the list by line-breaks (\r and/or \n)
    Well, hope to see your blog post in the near future!
  9. Ty Whalin

    #9 by Ty Whalin - maart 10, 2010 at 3:32

    Okay, I'm going to spend some time looking at the wrapper which may come to use for me since all the site I host use Smarter Mail. But I got one for ya that I can't seem to get right just yet.

    Do you possibly have a simple solution for checking domain name availability? I have spent several days trying to make the code work but no luck yet.

    I've done extensive searching for this type of process with CF but not much has came up. As a matter of fact that's how I found your wrapper. Is to complex for me at the moment buy I'm gaining CF speed.

    THX in advance.
  10. Paul Klinkenberg

    #10 by Paul Klinkenberg - maart 10, 2010 at 11:15

    Hi Ty, I don't know what your search words were, but when I do a google search, this is the first result:

    Good luck!
  11. Ty Whalin

    #11 by Ty Whalin - maart 11, 2010 at 15:59

    That's the only one I could find for checking domain name availability. I've tried to get that to work but it keeps returning domain name available no matter what site I search for availability.

    What I'm trying to do is run a CGI_SCRIPT_NAME on my form and then output the information on my page instead of using the hardcoded url's Ben supplied.

    At first there was an error with the <pre></pre> part in the MatchNoCase Expression and was getting a position not found error. After I got past that catch error it continues to say every name is available.

    Thinking it might be something to do with the way my form submits. Set to get method by the way. If you've ever used beens code and got it to work let me know.

    THX for your time.
  12. Paul Klinkenberg

    #12 by Paul Klinkenberg - maart 11, 2010 at 17:13

    Did you check the url that is used to get the domain check report? It is
    On that page, it says "Search (.aero, .arpa, .asia, .biz, .cat, .com, .coop, .edu, .info, .int, .jobs, .mobi, .museum, .name, .net, .org, .pro, or .travel)"
    I guess you're trying to check another extension, which is simply not supported.

    If you check .com domains, it will work; I tested.
  13. Jack

    #13 by Jack - maart 26, 2010 at 7:12

    Hi Paul,
    I have installed your zip and I am unable to view the index.cfm in my browser. The error is
    "Template Exception - in SMadminWrapper\index.cfm : line 83
        Missing argument name.'"

    I have not changed anything or added any code yet... Just tring to get it to load right now. Could you help.
  14. Paul Klinkenberg

    #14 by Paul Klinkenberg - maart 26, 2010 at 7:50

    Hi Jack, could you provide some more details? What Coldfusion version are you running? Or better: can you pass me a link to your install? You can mail it if you want, to paul at
  15. Jack

    #15 by Jack - maart 29, 2010 at 16:58

    Thank you Paul for the updated backward compatible ver 1.1. I installed it and there does not seem to be any issues on CF 8 or CF 9 Enterprise Servers (not running Railo). I will continue testing each method and let you know if I find any issues.
  16. Sarah

    #16 by Sarah - april 28, 2010 at 10:44

    Hi, is this a way to send paragraphed text, ie. each line would be a list item? is there a different way to send paragraphed text that would usually be wrapped in <![CDATA[]>
    when making say a SOAP call?
  17. Pardeep

    #17 by Pardeep - mei 2, 2010 at 21:02

    @Paul Klinkenberg

    This API is frickin awesome time saver man. Thanks so much:)
  18. Paul Klinkenberg

    #18 by Paul Klinkenberg - mei 5, 2010 at 23:56

    @pardeep thanks :-)
    @Sarah: I have made a new version of the cfc and the ui files, with which you can use paragraphed text (html text and/or line breaks). You can only find it in the svn browser, since I have had no time to make an official new release. Good luck with it!
  19. paul

    #19 by paul - mei 9, 2010 at 21:31


    I'm new to this - I'm trying to use the API to update a single email address

    Can you give me a sample cfinvoke and relevant arguments that are needed to get going on this?


  20. Paul Klinkenberg

    #20 by Paul Klinkenberg - mei 9, 2010 at 21:49

    Hi Paul, so which part of the "How to use the API wrapper yourself." section is unclear? Do you only need the "relevant arguments", or is anything else unclear as well?
    The arguments, you can find when looking at the UI. You probably need UpdateUser in the svcUserAdmin:
    Hope it works for you! Paul
  21. Grant B.

    #21 by Grant B. - mei 12, 2010 at 19:49

    What versions of SmarterMail is this for? I am trying to use it with SM 4.3 but the web service does not seem to recognize the 'disablegreylisting' key for the SetRequestedUserSettings function in svcUserAdmin.

    I even tried GetRequestedUserSettings but smartermail simply ignores the 'disablegreylisting' value. It returns other string/value pairs but not 'disablegreylisting' ... actually also does the same with 'lockpassword'.

    Any idea where I would find a list of the keys for version 4.3?
  22. Paul Klinkenberg

    #22 by Paul Klinkenberg - mei 13, 2010 at 11:31

    Hi Grant, I have only tested this on the most recent smartermail, 6.5?
    You can find instructions for your own api interface by going to those pages... By default it shows you the soap xml. The urls are shown when you use the UI available from this post.
    Good luck!
  23. Clay Owensby

    #23 by Clay Owensby - december 1, 2010 at 14:11

    Hi Paul, I am looking through your api and it looks great. I have downloaded what I think is the latest version of the application and I contiune to get an error on the index page. You can see it at . I saw a post earlier in the blog with the same issue. Invalid construct: Either argument or name is missing. I am running cf 9. Your help is greatly appreciated.
  24. Paul Klinkenberg

    #24 by Paul Klinkenberg - december 1, 2010 at 14:23

    Hi Clay, the error you are having is from an earlier version. The current verion 1.1.1 does not have this problem:
    Good luck, Paul
  25. Clay Owensby

    #25 by Clay Owensby - december 1, 2010 at 19:10

    Paul, thank you for the help. I am now getting a Error occured in smartermail.cfc:
    Connection Failure: Status code unavailable error. I have tried the domain and administrators credentials in the smartermail.cfc and either seem to work. Suggestions?
  26. Clay Owensby

    #26 by Clay Owensby - december 1, 2010 at 19:29

    HI, Ricardo. I too am tried to access my SmarterMail server with Paul's api. I can't seem to connect. I continue to get a connection failure. Did you see this issue when setting up this api in your system?
  27. Paul Klinkenberg

    #27 by Paul Klinkenberg - december 1, 2010 at 22:38

    Hi all, I just released version 1.2.0 of the API wrapper! The changes: "Added debugging options in the Smartermail.cfc file; added optional extra debugging in the UI files; enhanced the UI a bit."
  28. Paul Klinkenberg

    #28 by Paul Klinkenberg - december 1, 2010 at 22:45

    @Clay: I tried to login to my own smartermail server from the code hosted on your server, and also got the Connection failure. It is definately a problem with your server or hosting company. It gives the error within 1 second or so, that's abs. not normal. Is it in general possible to use cfhttp on that server?
    Regards, paul
  29. Clay Owensby

    #29 by Clay Owensby - december 1, 2010 at 22:48

    @Paul Klinkenberg Yes I can use cfhttp with other sites on this server.
  30. Jacki

    #30 by Jacki - december 14, 2010 at 17:07

    REMEMBER if you are using cfhttp over SSL ... directly import your SSL certificate into the Keystore in the JRun Server. Maybe that will help. I have found that to get rid of my connection errors in the passed.
  31. Clay Owensby

    #31 by Clay Owensby - december 14, 2010 at 17:31

    Thanks Jackie. You are right. This situation was a bit more simple. I merely needed to add the following headers to my http post

    <cfhttpparam type="Header" name="Accept-Encoding" value="deflate;q=0" />
    <cfhttpparam type="Header" name="TE" value="deflate;q=0" />
    <cfhttpparam type="header" name="Content-Type" value="application/soap+xml" />
  32. Clay owensby

    #32 by Clay owensby - december 16, 2010 at 22:44

    Hey guys I think I have worked out a lot of bugs. I can now contact my sm server and can see information contained in lists, subscribers, domains, ect. I am having one issue. I cant add a subscriber to a list. I get back the xml struct giving me a response code of -2 and the text that goes along saying that the process failed. Does anyone have experience with this?
  33. Jacki

    #33 by Jacki - december 17, 2010 at 0:15

    It took me a while to remember that JAVA is case sensitive, so make sure your values are "True" instead of "true". That also keep me from getting lots or return errors.
  34. Clay Owensby

    #34 by Clay Owensby - december 17, 2010 at 0:26

    @Jacki You know I bet you are right... I just went into Paul's wrapper and copied what he had.... I bet that was it.
  35. Paul Klinkenberg

    #35 by Paul Klinkenberg - december 18, 2010 at 18:12

    @Jacki: why do you say JAVA? Smartermail is built with .net, and coldfusion/railo is not case-sensitive. If you need to set boolean values, just use 1 and 0. That will always work.
  36. Jacki

    #36 by Jacki - december 20, 2010 at 18:36

    YOU are correct Paul. It is the JRUN server that is Java and thats what is powering the ColdFusion. I have just found that when using your wrapper with "True" or "true" it has made a difference in returning an error or not. Just letting people in on what helped for me.
  37. Clay Owensby

    #37 by Clay Owensby - december 23, 2010 at 16:47

    Can anyone point me in the direction of how to retrieve a list of bounces from an active mailing list?
  38. Eric Do

    #38 by Eric Do - februari 25, 2011 at 16:55

    I recevied connection failure everytime when I try to call the object to login:

    <cfset variables.smartermail_obj = createObject("component", "Smartermail").init(serverURL="";, wsUsername="== REMOVED ===", wsPassword="== REMOVED ==") />

    Is this because that SmarterMail server is running on port 9998 instead of 80?

    If you go to this mail client address: and type in
    password: XXXXXXXX

    it will allow you to login. Can you please let me what I am missing.

    Also, assume that I can login, what API that I need to call to create/add a New User from my CF page.

    Please advice. Thank you in advance. Great works for putting this together.
  39. Eric Do

    #39 by Eric Do - februari 25, 2011 at 17:35

    After reading the previous thread, append below code to the cfhttp post, now I got an Invalid Permissions response. Any idea on how this may happen?

    <cfhttpparam type="Header" name="Accept-Encoding" value="deflate;q=0" />
    <cfhttpparam type="Header" name="TE" value="deflate;q=0" />

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap=""; xmlns:xsi=""; xmlns:xsd="">;
    <GetAllDomainsResponse xmlns="">;
    <Message>Invalid Permissions.</Message>
    <DomainNames />
  40. Eric Do

    #40 by Eric Do - februari 25, 2011 at 17:46

    Received 500 Internal Server Error error when trying to call the method to AddUser. Can you please let me know on how get rid of this error and how to AddUser from the CF template.


    The error occurred in C:\Inetpub\wwwroot\CRM\_wwb\api\SmarterMail\Smartermail.cfc: line 88

    86 :          <cfhttpparam type="Header" name="TE" value="deflate;q=0" />
    87 :          <cfhttpparam type="header" name="Content-Type" value="application/soap+xml" />
    88 :          <cfhttpparam type="body" value="#soapBody#" />
    89 :       </cfhttp>
    90 :
  41. Eric Do

    #41 by Eric Do - februari 25, 2011 at 17:56

    After reviewing the API and the params that required to AddUser, IsDomainAdmin set to 0 or 1. I was typed in True/False, Yes/No, therefore I didn't get any response from the post.

    Great works Paul. You guys are awesome! This will save our time from having to get on the SmarterMail UI.
  42. Paul Klinkenberg

    #42 by Paul Klinkenberg - februari 26, 2011 at 1:21

    Hi Eric, great to see that you got it working in the end!
    Due to your messages, I did 2 actions:
    - I (finally) updated the code to include the "deflate" headers, which fixes a bug in Adobe CF, which gave you the "connection failure" message.
    - I now made it more clear in the example pages, that the only valid logins you can use for the api wrapper, are Smartermail's "Domain admins" and "System admins".

    @Everyone: a new version 1.3 is now available for download :-)
  43. Eric Do

    #43 by Eric Do - februari 26, 2011 at 6:13

    Paul, thank you for your response. About the API wrapper, did you have a chance to test with the latest version of SmarterMail?

    I tested with the 5.0 version, everything seem to work perfect but for the 7.1 version, I can't seem to get pass the login page.

    I received the 500 error message when try to login to the 7.1 version.
  44. Paul Klinkenberg

    #44 by Paul Klinkenberg - februari 26, 2011 at 13:18

    Hi Eric, I am currently running SmarterMail Enterprise 7.4, which is working for me. Have you tried it using the new version I just released?
    Also, you could check to see if the error is specific to your server / CF version, by testing the login via my test environment:
    If you want professional assistance, you can mail me at paul at
    Cheers, Paul
  45. Eric Do

    #45 by Eric Do - februari 28, 2011 at 18:54

    Hello Paul, thank you for your support. I just downloaded the latest version of your API (1.3) and test it against our new version of SmarterMail; it is working really well.

    Now that we know are you the expert in SmarterMail and the CF bridge, when our guys need any professional consultant in the near future, we will inform you.

    Your help is much appreciated, Eric.
  46. Russ Michaels

    #46 by Russ Michaels - maart 21, 2011 at 4:21

    Cool stuff Paul, I just started writing a SmarterMail API myself and came across this by accident, so will save me several hours work.
    Interesting way of generating the SOAP requests too, certainly a lot less code than the way I was doing it anyway :-)
    I have noticed one issue though, the smartermail.cfc can't find the wddx file if the calling template is in a different folder as the ExpandPath() function is working relative to the calling template and not the CFC.
    You get around this by using a cfinclude instead.

    <cfsavecontent variable="q"><cfinclude template="wddx/methodArguments.wddx"></cfsavecontent>
  47. Russ Michaels

    #47 by Russ Michaels - maart 21, 2011 at 4:40

    One other minor niggle Paul, it can't be called with CFINVOKE (yes some of us do still like to use cfinvoke so there) as the methods also require a method arg, and you can't have 2 args with the same name.
  48. Paul Klinkenberg

    #48 by Paul Klinkenberg - maart 21, 2011 at 16:11

    Hi Russ, what CFML engine and version are you using? The cfinclude solution works, as long as there is no cfml code in the included template.
    I also use cfinvoke a lot, and then mostly use cfinvokeargument to add the arguments. I do not yet understand how the 'args' attribute could lead to problems with cfinvoke; could you explain? Cheers, Paul
  49. Russ Michaels

    #49 by Russ Michaels - maart 26, 2011 at 1:10

    Hey Paul, do you by any chance know where you set the catch-all address for a domain, I can't seem to find this in DomainAdmin or UserAdmin params, unless I am just being blind.
  50. Paul Klinkenberg

    #50 by Paul Klinkenberg - maart 26, 2011 at 16:06

    Nope, I don't know. You could search the API documentation pdf for "catchall" I guess...
  51. Eric Do

    #51 by Eric Do - maart 28, 2011 at 22:24

    Hello Paul,

    When call the AddUser method to add a new user email account (assume that the new email account that I wish to create is, how do I make/specify '' automatically insert into the Reply-To Email Address.

    The reason because when the Reply-To Email Address is blank and when try to send email from to a Gmail or other client, it show 'eric123' instead of the actual Display Name (FirstName LastName) that is set when setup a new account.

    Please advice and thank you in advance,

  52. Humberto Fujitani

    #52 by Humberto Fujitani - juni 16, 2011 at 20:56

    Hello Paul,

    This API is very good. I would just like to clarify a doubt about "SetSubscriberList" method:

    I submit to my script a list of emails, separated by commas. My script uses the code below to handle this list and send it to the SmarterMail mailing list:

    <cfsavecontent variable="listsub">
    <cfloop index="destination" list="#form.emails#" delimiters=",">
    </ cfloop>
    </ cfoutput>
    </ cfsavecontent>

    <cfset setList_struct = structNew() />
    <cfset setList_struct['DomainName'] = "" />
    <cfset setList_struct['ListName'] = "newsrti" />
    <cfset setList_struct['Subscribers'] = "#listsub#" />
    <cfset return_xml = variables.smartermail_obj.callWs(page="svcMailListAdmin", method="SetSubscriberList", args=setList_struct) />

    However, when I look at subscribers of mailing list "newsrti", the list is empty. May you help me solve this?


  53. Paul Klinkenberg

    #53 by Paul Klinkenberg - juni 17, 2011 at 9:34

    Hi Humberto, thanks for reporting this. It was a bug in the code.
    See the new version 1.3.1, which should fix this.

  54. Humberto Fujitani

    #54 by Humberto Fujitani - juni 17, 2011 at 14:20

    @Paul Klinkenberg

    Hello Paul,

    Thanks for the new version, the "SetSubscriberList" method seems to work fine now.

    Best regards,

  55. Andor Admiraal

    #55 by Andor Admiraal - september 24, 2011 at 21:42

    Hi Paul,

    Great little tool. Really a big time saver for me, thanks! Did not encounter any bugs at all, works very smoothly for me.

    One hint that other people might find useful. An easy way to directly use the XML the tool outputs, is the following:

    1. Copy the XML code to the clipboard
    2. Paste it into a new text file
    3. Give the text file an .xml extension
    4. Now you can open it as an XML table in Excel

    Thanks again, regs from India
  56. Paul Klinkenberg

    #56 by Paul Klinkenberg - september 25, 2011 at 20:27

    Hi Andoor, I really appreciate your comment, thanks!
    Normally, if I get a "new comment" email, I prepare myself for some bug fixing or explaining ;-)
    Kind regards, Paul
  57. Akos

    #57 by Akos - januari 18, 2012 at 11:59

    Hi, I've listed and added users successfully with the svcUserAdmin service.
    But now I'm trying to delete a user using the DsvcUserAdmin.DeleteUser().
    The API comes back with DeleteUserResult, ResultCode 0, Result True.
    I assume that means it's successful yet the user is not deleted from smartermail.
    Any suggestions please?
  58. Akos

    #58 by Akos - oktober 31, 2012 at 15:32

    Does anyone have any solution to the above post #57 please ?
(will not be published)
Leave this field empty