To send an email with attachments stored in a database field, use the following code in events like BeforeAdd/AfterAdd/BeforeEdit/AfterEdit.
Make sure to replace "Field that stores attachments" with the actual field name. This must be a TEXT or VARCHAR(max) field that is set up as File/Image in ASPRunner.NET.
Note: Attachments will only work when you selected "Use custom mailer server settings" under "Email settings".
dynamic attachments = XVar.Array(), fileArray = XVar.Array(), msg = null, ret = XVar.Array(), subject = null;
email = new XVar("[email protected]");
msg = new XVar("File Attached");
subject = new XVar("Attached some files");
fileArray = XVar.Clone(CommonFunctions.my_json_decode((XVar)(values["Field that stores attachments"])));
attachments = XVar.Clone(XVar.Array());
msg = new XVar("");
foreach (KeyValuePair<XVar, dynamic> f in fileArray.GetEnumerator())
{
attachments.InitAndSetArrayItem(new XVar("path", f.Value["name"]), null);
}
msg = MVCFunctions.Concat(msg, "Some field: ", values["Some field"], "\r");
msg = MVCFunctions.Concat(msg, "Some other field: ", values["Some other field"], "\r");
ret = XVar.Clone(MVCFunctions.runner_mail((XVar)(new XVar("to", email, "subject", subject, "body", msg, "attachments", attachments))));
if(XVar.Pack(!(XVar)(ret["mailed"])))
{
MVCFunctions.Echo(ret["message"]);
}
See also:
•How to email selected records as separate PDF files
•Send an email to selected users
•Send an email with updated fields only