Is it possible to get a sharing link (to non SFDC users) from 'files'/'content' via apex?

The idea thread mentioned by @crmprogdev is now realized.

As of winter 15 there is now programmatic access to content deliveries.

ContentDistribution cd = new ContentDistribution();
cd.name = 'test';
cd.ContentVersionId = '12312132abad';
cd.PreferencesAllowOriginalDownload = false;
cd.PreferencesAllowPDFDownload = false;
cd.PreferencesAllowViewInBrowser = true;
insert cd;

cd = [SELECT DistributionPublicUrl FROM ContentDistribution WHERE ID = :cd.Id];
System.debug(cd.DistributionPublicUrl);

Basically you can do anything the standard Content Delivery UI will allow you to do.

enter image description here

There doesn't yet seem to be any official documentation on the object, but you can explore it using workbench. Just make sure your API version is set to 32

screenshot ContentDistribution Object in workbench


According to this post, the answer to your question about using content packs would be "no".

On the IdeaExchange you'll find a submission titled Allow Content Deliveries to be programmatically generated via Apex which has some related links on it you may also want to look at. Regardless, I believe this "idea" covers the gist of your question.

It seems to me that you might want to go and vote for this idea.

With a bit more effort, I believe I've found something in another post that you might be able to utilize the techniques from for getting a download link in it to accomplish your task. There are references to a blog post titled Salesforce: How to make a Document public? and some other useful discussion.

Based on the above referenced post, I'd say the answer to your final question is "yes". Implementation will be a matter of how you design your trigger and email template(s).

For future reference, you might find FindSF Info to be a very helpful search engine.