Skip to main content
Whatevermajorloser
Inspiring
December 3, 2015
Question

Launching mailto from Photoshop

  • December 3, 2015
  • 2 replies
  • 1419 views

Is this at all possible? Either when a user presses a button or just getting the script to do it automatically? Would love to be able to do this with recipient address, subject and message.

This topic has been closed for replies.

2 replies

JJMack
Community Expert
Community Expert
December 3, 2015

I use windows am an old f a r t...  I wrote one for myself to launch what old men use Thunderbird  a cheep drunk I am and still use DOS bat files. send email with the document I working on attached.

/* ==========================================================

// 2014  John J. McAssey (JJMack)

// ======================================================= */

// This script is supplied as is. It is provided as freeware.

// The author accepts no liability for any problems arising from its use

/* Help Category note tag menu can be used to place script in automate menu

<javascriptresource>

<about>$$$/JavaScripts/email/About=JJMack's email .^r^rCopyright 2014 Mouseprints.^r^rScript email active document if saved</about>

<category>JJMack's Script</category>

</javascriptresource>

*/

// enable double-clicking from Mac Finder or Windows Explorer

#target photoshop // this command only works in Photoshop CS2 and higher

// bring application forward for double-click events

app.bringToFront();

// ensure at least one document open

if (!documents.length) alert('There are no documents open.', 'No Document');

else {

  // declare Global variables

  main(); // at least one document exists proceed

  }

///////////////////////////////////////////////////////////////////////////////

//                            main function                                  //

///////////////////////////////////////////////////////////////////////////////

function main() {

  // declare local variables

  var orig_ruler_units = app.preferences.rulerUnits;

  app.preferences.rulerUnits = Units.PIXELS; // Set the ruler units to PIXELS

  try {code();}

  catch(e) {alert(e + ': on line ' + e.line, 'Script Error', true);} // display error message if something goes wrong

  app.preferences.rulerUnits = orig_ruler_units; // Reset units to original settings

}

///////////////////////////////////////////////////////////////////////////////

//                           main function end                               //

///////////////////////////////////////////////////////////////////////////////

function code() {

  var to="";

  //var to="jjmacks@hotmail.com";        // Bypass prompt and send home

  var cc="";

  var cc="jjmacks@hotmail.com";        // Copy Myself

  var att = "";                        // declare attachment var                      

  try {att=decodeURI(app.activeDocument.fullName);}

  catch(e) {alert("Document " + app.activeDocument.name + " needs to be saved"); return;}

  if (!app.activeDocument.saved) {alert("Document " + app.activeDocument.name + " needs to be saved"); return;}

 

  var testatt = new File(att);                                                         // Test if backing file still exists

  if(testatt.exists){                                                                       // convert full file name and path to windows standard form

  att = att.replace("/","");                                                              // Strip off leading "/" or the one after the leading "~"

  if (att.substr(0,1)== "~" ) {att=att.replace("~", $.getenv("USERPROFILE") +"\\");}      // user space

  else {att = att.replace("/",":\\");}                                                   // Device root :\\

  while (att.indexOf("/")!=-1 ) { att = att.replace("/","\\"); }                 // Replace "/" with "\" need two to get one

  if (to=="") {to=prompt("Enter email address",to);}                           // Prompt for email address if no default

  if (to!="" && to!=null) {emailer(to,cc,att);}                                       // If addressed emails current document backing file

  }

  else{alert('File = "' + att +'" not found');}

}

///////////////////////////////////////////////////////////////////////////////

//                                emailer  function                          //

///////////////////////////////////////////////////////////////////////////////

function emailer(to,cc,file){

  var pgm = "C:\\Program Files (x86)\\Mozilla Thunderbird\\thunderbird.exe";  // Hard coded need to be correct

  var mailer = new File(pgm);

  if(!mailer.exists){alert("Unable to find Thunderbird\rYou will need to modify Emailer.jsx\rand correct the path"); return; }

  //thunderbird -compose "to='john@example.com,kathy@example.com',cc='britney@example.com',subject='dinner',body='How about dinner tonight?',attachment='C:\temp\info.doc,C:\temp\food.doc'"

  var option ="";

  option += " -compose";

  option += ' "';

  option += "to='"

  option += to;

  option += "'";

  if(cc!="") {

  option += ",cc='"

  option += cc;

  option += "'";

  }

  option += ",subject='" ;

  option +=  "The file you requested" ;

  option += "'";

  option += ",body='";

  option +=  file ;

  option += "'";

  option += ",attachment='";

  option +=  file ;

  var file2 = "E:\\My Files\\Pictures\\JJMack.png";

  option +=  "," + file2 ;

  option += "'";

  option +='"';

  //alert('app.system("CMD /Q /C Start "Thunderbird" /B /MIN "' + pgm + '" '  + option);

  //app.system('CMD /Q /C Start "Thunderbird" /B /MIN "' + pgm + '" '  + option );

  //alert('app.system(Start "Thunderbird" /B /MIN "' + pgm + '" '  + option);

  app.system('Start "Thunderbird" /B /MIN "' + pgm + '" '  + option );

/*

  var batch_file = new File(Folder.temp + "/send_email.bat");

  batch_file.open("w");

  //alert('"Start "Thunderbird" /B /MIN "' + pgm + '" '  + option);

  batch_file.write('Start "Thunderbird" /B /MIN "' + pgm + '" '  + option );

  batch_file.close;

  batch_file.execute();

*/

};

JJMack
Whatevermajorloser
Inspiring
December 3, 2015

Thanks JJMack, this looks interesting. I'll have a play around with it and see if I can get it to work for me!

matias.kiviniemi
Legend
December 3, 2015

In general if you can "launch an URL" then a "mailto:name@domain.com?subject=title&body=body" _should_ open default mail app with that address and title/body prefilled. I have never tried this from inside a .jsx script, but from a HTML panel CSInterface.openURLInDefaultBrowser(url) should do it.

Note that it's not 100%, user/OS needs to have a mail client and an account ready.

Whatevermajorloser
Inspiring
December 3, 2015

Yup, you are right! This launches a mailto in my default app:

function openURL(url) {

  var fname = "shortcut.url";

  var shortcut = new File(Folder.temp + '/' + fname);

  shortcut.open('w');

  shortcut.writeln('[InternetShortcut]');

  shortcut.writeln('URL=' + url);

  shortcut.writeln();

  shortcut.close();

  shortcut.execute();

};

openURL('mailto:name@domain.com?subject=title&body=body')

Only annoying thing is, it also opens safari, which then becomes the forefront window instead of Outlook.

SuperMerlin
Inspiring
December 3, 2015

You could try using vb script

VBScript:-

Dim strTo, strSubject

Dim objoutlookApp, objmessage

strTo = Wscript.Arguments.Item(0)

strSubject = Wscript.Arguments.Item(1)

strMessage = Wscript.Arguments.Item(2)

Set objoutlookApp = CreateObject("Outlook.Application")

Set objmessage = objoutlookApp.CreateItem(olMailItem)

objmessage.TO = strTo

objmessage.Subject = strSubject

objmessage.HTMLBody = strMessage

objmessage.display

set objmessage = Nothing

set objoutlookApp = Nothing

wscript.quit

Javascript:-

#target photoshop;

//path to vbs script

var cmd = "e:/vbs/outlook.vbs ";

var To =  "supermerlin@wizard.com";

var Subject = "Subject Line";

var Message = "Outlook Message";

cmd += " \"" + To + "\" \"" + Subject + "\" \"" + Message + "\"";

app.system(cmd);