CRM_Mailing_BAO_Mailing - Error 500 trying to view Draft, Unscheduled, Scheduled, and Sent Mailings
I just looked at a stock install of Civi 4.7.15, and the getPublicViewUrl() method is present in &lt;civiroot&gt;/CRM/Mailing/BAO/Mailing.php.  So if you're getting an "undefined method" error, I would assume that your CRM_Mailing_BAO_mailing class is getting overridden.  My wild guess is you have an extension installed that isn't compatible with 4.7.

Here's what I would do:


Ensure that the file &lt;civiroot&gt;/CRM/Mailing/BAO/Mailing.php exists, and the line public static function getPublicViewUrl($id, $absolute = TRUE) { is present in it.  This is pretty much guaranteed unless you're doing something really wacky, but it's a good sanity check.
Look for any PHP overrides you might have.  Go to Administer menu » System Settings » Directories and locate both your "extensions" and "PHP overrides" directory.
Go into your PHP overrides directory.  Is there a subdirectory CRM/Mailing/BAO?  If so, and it has a file Mailing.php, then you need to figure out why.  The resolution should be either to remove the override, or to copy the latest version of Mailing.php into the folder and incorporate your override.  PHP overrides are difficult to maintain because they're not upgrade-safe; if you have one, I suggest finding a way to remove it.
Any of your extensions may also have a CRM/Mailing/BAO subfolder.  If so, identify if you can disable that extension.  If not, you may want to follow up, either in the comments to this answer, or with the extension author.