When I refresh a sandbox I have a class that runs to fix some things like email addresses and custom settings. I've also been asked to email the developer the new org ID so that their testing environments can stay connected.
The problem is when I refresh the sandbox, email deliverability defaults to "system email only", and I cannot switch it to "All Emails" until after logging in, which is well after the refreshpostcopy has run. This means I can't email as part of the refreshpostcopy.
Is there a way to set email deliverability to "all emails" in apex? If not is there another way to get the developer that information?
String sysemail = [SELECT Email FROM User WHERE Email like 'myusername' LIMIT 1].email; List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>(); Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); List<String> sendTo = new List<String>(); sendTo.add('firstname.lastname@example.org'); mail.setToAddresses(sendTo); mail.setSubject('Subject'); mail.setPlainTextBody('New Sandbox ID is '+context.organizationId()); mails.add(mail); Messaging.sendEmail(mails);
The error I get is
System.EmailException: SendEmail failed. First exception on row 0; first error: NO_MASS_MAIL_PERMISSION, Single email is not enabled for your organization or profile.: