This solution “injects” data, using JavaScript, into a custom list. This list has one purpose only: sending an email containing the injected data.
The custom list have the following fields:
- Title: The native Title field – holds the subject.
- To: Single line of text.
- Cc: Single line of text.
- EmailBody: Multiple lines of plain text.
With a workflow like this:
You could skip the part with “Store …. in Variable” for “To” and “Cc” if you like, this step was originally used for pulling values from a multi select people picker. This field cannot be used in “To” or “Cc” without this procedure.
As always we start like this:
Create a document library to hold your scripts (or a folder on the root created in SharePoint Designer). In this example i have made a document library with a relative URL of “/test/English/Javascript” (a sub site named “test” with a sub site named “English” with a document library named “Javascript”):
The jQuery-library is found here. The pictures and the sourcecode refers to jquery-1.4.2.min. If you use another version, remember to update the script “src”.
The scripts “interaction.js” and “stringBuffer.js” are created by Erucy and published on CodePlex.
Add this code to a CEWP – update the script “src”:
<input type="button" onclick="javascript:init_sendMailWithJavascript()" value="Send test-mail"> <script type="text/javascript" src="../../Javascript/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="../../Javascript/interaction.js"></script> <script type="text/javascript" src="../../Javascript/stringBuffer.js"></script> <script type="text/javascript"> var sendMailListGuid = '{68CC0B80-7013-41B2-B591-CBA3899B713D}'; function init_sendMailWithJavascript(){ sendMailWithJavascript("My custom subject","to@mail.com","cc@mail.com","<div>This is a div</div><a href='http://spjsblog.com'>SharePoint JavaScripts</a>"); } function sendMailWithJavascript(Subject,To,Cc,Body){ wsBaseUrl = L_Menu_BaseUrl + '/_vti_bin/'; var res = addItem(sendMailListGuid,{Title:Subject,To:To,Cc:Cc,EmailBody:Body}); if(!res.success){ alert(res.errorText); }else{ alert("Sending OK!"); } } </script>
This code inserts a button that calls the function “init_sendMailWithJavascript” and sends a test message. You must modify the variable “sendMailListGuid” to reflect your “send mail” list’s GUID. Refer to the link above the codeblock for instructions. Also modify the “To” and “Cc” addresses.
The function “init_sendMailWithJavascript” is just an example – you can call the function “sendMailWithJavascript” directly from your script.
NOTE: Starting Workflows is not possible for anonymous users (may be possible using a third party fix).
Ask if anything is unclear.
Alexander