Skip to main content

Creating an Asset via Email i.e. SMTP Import

In order to create an SMTP Import, you first need to configure it within the CMS.

Goto: System -> Configure -> Import -> SMTP
Create the import: File -> New Email Import

Set it up with these settings:

Document User = CrownPeak Admin
Folder = Folder to create the asset in.
Model = Model that will be used to create the asset
Send Errors = Specifies what to do if errors occur.

It will give you a token that you need to use in the subject line of your email. It is also possible to use it in the body of the email but I have never tried it. Seems the subject line is more suited for this.

Next you need to setup the smtp_import.asp template file:

If this asset doesn't depend on the input being recieved, then you can just execute the following a couple of times to populate the asset:

content.add "fieldname", "value"

However if the asset does depend on the input being recieved perhaps to create an asset in a certain directory depending on the input, you can stop the creation of the asset using the following at the end of the file:

content.add "_cmsStop", true

You can then dynamically create the asset using:

asset.create("label", "in_folder", "use_model", content_fields)

set assetId = asset.create "label", "in_folder", "use_model", content_fields

Where content_fields is the current content object. Prior to calling this you would be doing a bunch of content.add "fieldname", "value". Notice that if you want the id of the asset created you must not include parenthesis for the function. It is weird like that.

Comments

Popular posts from this blog

Parsing XML in .NET

Let's say you have XML as <root>    <item>       <name1>value1</name1>       <name2>value2</name2>       <name3>value3</name3>    </item>    <item>       <name1>value1</name1>       <name2>value2</name2>    </item> </root> To parse it we use the .NET XmlDocument class: // Create the XmlDocument object XmlDocument xmlDoc = new XmlDocument(); // Load the Xml into the object xmlDoc.Load(objResponse.GetResponseStream()); // Get the element like it was a path XmlNode errorNode = xmlDoc.SelectSingleNode("root/item/name1"); if (errorNode != null) { litResult.Text = errorNode.InnerText; return; }

Passing values from Javascript to Asp.Net

The trick to passing data from Javascript and Asp.Net is to use hidden inputs in the html. The hidden inputs should have the runat="server" attribute. For example: <input type="hidden" runat="server" id="hiddenfield" value="" /> Then in the Javascript, whatever value you are trying to pull from Asp.Net, set the hidden field using: document.getElementById("hiddenfield").value = "whatever value you want to set" And in the Asp.net form, you can just access the hiddenfield by using its id. string x = hiddenfield.value.text Thats all there is to it. You might need to check the syntax of it first as this is just all from my head.

Parsing XML Documents in the CMS: 2 Methods

To start off with do this: Dim txt Dim fieldStart, fieldEnd Dim xml Dim fields Dim ltxt Dim key Dim value txt = trim(content.item("_cmsEmailBody")) ltxt = lcase(txt) fieldStart = inStr(ltxt, "<root>") fieldEnd = inStr(ltxt, "</root>") if fieldStart >= fieldEnd then content.add "_cmsError", "Invalid email format. No XML data detected." exit Sub end if ' skip the end /root fieldEnd = fieldEnd + 6 set xml = system.createXML() if not xml.loadXML(mid(txt, fieldStart, fieldEnd)) then content.add "_cmsError", "Invalid XML format." exit Sub end if Now there are two ways to parse it. Method 1: set fields = xml.selectSingleNodeAsContent("root") Method 2: set fields = xml.selectSingleNodeAsDic("root") Check to make sure we have the root node: if not isObject(fields) then content.add "_cmsError", "Invalid xml format. Missing root /root node." exit Sub end if If Method 1 ...