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

Questions about Outages

Routine CMS maintentance windows are from 6pm - 7pm, every Monday and Wednesday. Generally, the system is still available during these times, but may be unavailable for a few minutes during that period. There are other times where maintenance must be performed outside these windows due to unforeseen circumstances. We aim to provide as much notice as possible for these events, typically via email and via an alert on the login page. The routine maintenance is also mentioned on the login page on the day of maintenance.

Checking / Creating New Folders from an SMTP Import

To check if a folder exists in the CMS already you have to create a folder list. There is no direct commands to do this. dim folderExists folderExists = false set folderlist = asset.getFolderList("/path/") 'loop through folder list do while folderlist.nextEntry() if folderlist.item("_cmsLabel") = "foldername" folderExists = true exit do end if loop To create a folder in the CMS, first make a Model that only contains a folder. Then do the following: if folderExists = false then 'create folder set dict = system.createDictionary() fId = asset.create(folderName, "/Site/Global/Picture of the Week/", "/System/Models/Directory Builder", dict) end if The parameters for the asset.create("label", "Path", "Model to use", content or dictionary)

Laravel 5.1 - Posting and Retrieving JSON

This is how you can use jQuery to POST data and retrieve it within the controllers. To Send Data: First off on the page where you are POSTing data from, you need to have a CSRF_TOKEN as a meta tag. <meta name="csrf_token" content="{{ csrf_token() }}" /> Then in the JavaScript, pull the token and send it along with the POST as headers. <script type="text/javascript"> var CSRF_TOKEN = $('meta[name="csrf_token"]').attr('content');    var jsonData = "{ 'data' : 'data' }";   $.ajax({     url: '/route/path',         type: 'POST',     data: jsonData,     headers: {      'X-CSRF-TOKEN': CSRF_TOKEN     },        dataType: 'JSON',     success: function (data) { } }); </script> To Retrieve Data: Setup a post route in /app/Http/routes.php Route::post('/route/path', 'ControllerName@controllerMethod' ); Then setup the controller