If you have any application in which you want only your salesforce contacts to log in. You can create log in page and authenticate contacts by giving password to them. For that purpose you need set Contact’s password and send it to their email address and show password as encrypted field on layout so that admin can’t see it. Here’s what we need to do.
Create Custom Button and call webservice to generate password and send to its email address.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | global class myHandler implements Messaging.InboundEmailHandler { global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) { Messaging.InboundEmailResult result = new Messaging.InboundEmailresult(); Messaging.InboundEmail.BinaryAttachment[] tAttachments = email.binaryAttachments; // // Since Attachment is CSV we are taking as BinaryAttachments. list<Account> lstAccount = new list<Account>(); // list of accounts. String csvbody=''; list<list<String>> allFields = new list<list<String>>(); // list of rows in csv list<String> lines = new list<String>(); // Rows of CSV list<String> headers = new list<String>(); // Field names list<String> fields = new list<String>(); // list of fields if(tAttachments !=null){ for(Messaging.InboundEmail.BinaryAttachment btt : tAttachments){ if(btt.filename.endsWith('.csv')){ csvbody = btt.body.toString();//Take the blob body of the CSV binary attachment and extract it to a string object, then process it. try { // Replace instances where a double quote begins a field containing a comma // In this case you get a double quote followed by a doubled double quote // Do this for beginning and end of a field csvbody = csvbody.replaceAll(',"""',',"DBLQT').replaceall('""",','DBLQT",'); // now replace all remaining double quotes - we do this so that we can reconstruct // fields with commas inside assuming they begin and end with a double quote csvbody = csvbody.replaceAll('""','DBLQT'); lines = csvbody.split('\n'); }catch (System.listException e){ System.debug('Limits exceeded?' + e.getMessage()); } } } integer rowNumber = 0; for(String line : lines) { // check for blank CSV lines (only commas) if (line.replaceAll(',','').trim().length() == 0) break; fields = line.split(',', -1); allFields.add(fields); if(rowNumber == 0){ // for getting the field names. for(list<String> rows : allFields){ for(String header : rows){ headers.add(String.valueof(header.trim())); } break; } rowNumber++; continue; } } for(Integer i = 1 ; i < lines.size() ; i++){ Account a = new Account(); a.put(headers[0] , allFields[i][0]); a.put(headers[1] , allFields[i][1]); a.put(headers[2] , allFields[i][2]); lstAccount.add(a); } insert lstAccount; } return result; } } |
The e-mail deliverability is a new feature released in spring 13 and as per the release notes, all newly refreshed sandboxes default to "system email only"
The access level might have been set to "system e-mails".
In setup | Administration setup | Email Administration | Deliverability, verify if the access level is set to "All e-mails".