[0].id так как select возвращает лист
Строка с ошибкой - выделена жирным
Contact c = [select id, Email from Contact where email <> null limit 1];
List<Messaging.SingleEmailMessage> lstMsgs = new List<Messaging.SingleEmailMessage>();
Messaging.SingleEmailMessage msg = new Messaging.SingleEmailMessage();
msg.setTemplateId( [select id, name from EmailTemplate where Name = :'Notification_The_deal_in_process'].id );
msg.setWhatId( [select id from Account limit 1].id );
msg.setTargetObjectId(c.id);
msg.setToAddresses(new List<String>{email});
lstMsgs.add(msg);
// Send the emails in a transaction, then roll it back
Savepoint sp = Database.setSavepoint();
Messaging.sendEmail(lstMsgs);
Database.rollback(sp);
// For each SingleEmailMessage that was just populated by the sendEmail() method, copy its
// contents to a new SingleEmailMessage. Then send those new messages.
List<Messaging.SingleEmailMessage> lstMsgsToSend = new List<Messaging.SingleEmailMessage>();
for (Messaging.SingleEmailMessage message : lstMsgs) {
Messaging.SingleEmailMessage emailToSend = new Messaging.SingleEmailMessage();
emailToSend.setToAddresses(message.getToAddresses());
emailToSend.setPlainTextBody(message.getPlainTextBody());
emailToSend.setHTMLBody(message.getHTMLBody());
emailToSend.setSubject(message.getSubject());
lstMsgsToSend.add(emailToSend);
}
Messaging.sendEmail(lstMsgsToSend);
}
[0].id так как select возвращает лист
меня всегда такие сокращения удивляют.
спокойно выквери в лист,
проверь что там есть хотя бы одна запись (может ни одной нет с таким именем, и что коду делать теперь?),
возьми ее id и выведи в дебаг.
И после этого со спокойной душой двигайся дальше по логике
Обычно это либо лень, либо отсутствие понимания, когда запоминают примеры кода с индийских блогов и прочих стэковерфлоу
двоеточие из запроса убери