docs: public Object execute() throws Throwable {
  		try {
  			URL u = new URL("mailto:" + mailto);
  			URLConnection c = u.openConnection();
  			c.setDoInput(false);
  			c.setDoOutput(true);
  			c.connect();
  			outMail = new PrintWriter(c.getOutputStream(), true);
  			outMail.println("From: " + mailfrom);
  			outMail.println("To: " + mailto);
  			outMail.println("Subject: " + subject);
  			if (attachments == null) {
  				outMail.println("Content-Type: text/plain;");
  				outMail.println("	charset=\"UTF-8\"");
  				outMail.println();
  				if (message != null) {
  					outMail.println(message);
  				}
  			}
  			else {
  				String boundary = "----=" + KeyGenerator.generateKey();
  				outMail.println("MIME-Version: 1.0\n" +
  						"Content-Type: multipart/mixed; " +
  						"boundary=\"" + boundary + '\"');
  
  				outMail.println();
  				if (message != null) {
  					outMail.println("--" + boundary);
  					outMail.println("Content-Type: text/plain;");
  					outMail.println("	charset=\"UTF-8\"");
  	//				outMail.println("Content-Transfer-Encoding: quoted-printable");
  					outMail.println();
  					outMail.println(message);
  				}
  				for (int i = 0; i < attachments.length; i++) {
  					outMail.println();
  					outMail.println("--" + boundary);
  					outMail.println("Content-Type: " + attachments[i].getMimeType() + ';');
  					outMail.println("	name=\"" + attachments[i].getFileName() + '\"');
  					outMail.println("Content-Transfer-Encoding: base64");
  					outMail.println("Content-Disposition: attachment;");
  					outMail.println("	filename=\"" + attachments[i].getFileName() + '\"');
  					outMail.println();
  					outMail.println(attachments[i].getRawDataBase64Encoded());
  					outMail.println();
  				}
  				outMail.println("--" + boundary + "--");
  
  			}
  		}
  		catch (Throwable t) {
  			//failure of async action must be logged somewhere
  			t.printStackTrace();
  			throw new java.lang.RuntimeException("mailing " + mailto + " via " + mailserver + " failed", t);
  		}
  		finally {
  			if (outMail != null) {
  				outMail.close();
  			}
  		}
  		return null;
  	}