我已经编写了一个触发器,可以在创建“创意”记录时向特定电子邮件组发送电子邮件。我必须根据两个多选选项列表字段的组合向组发送电子邮件,因此我在“自定义设置数据”中添加了这些组合,并使用它来获取电子邮件ID。以下是我的代码。
Public Class IdeaTriggerOperations1
{
Public Static Void NotifyBUonNewDiscussion1(List<Idea> IdeaIds)
{
Set<String> CategoryNameSet = new Set<String>();
Set<String> ProductNameSet = new Set<String>();
//Set and clear emailAddresses
String[] emailAddressess = new String[40];
emailAddressess.clear();
//Set Messaging
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
Messaging.reserveSingleEmailCapacity(1);
//Get Email Template Id
EmailTemplate et = [SELECT Id FROM EmailTemplate WHERE developerName = 'Idea_New_Discussion_Posted_BU'];
For(Idea I : IdeaIds)
{
String completeEmailList = '';
for(String str : I.Categories.split(';'))
{
CategoryNameSet.add(str);
system.debug('-----------CategoryNameSet--------'+CategoryNameSet);
}
If(I.Product__c != NULL)
{
for(String str1 : I.Product__c.split(';'))
{
ProductNameSet.add(str1);
system.debug('-----------ProductNameSet--------'+ProductNameSet);
}
}
Else{
ProductNameSet = NULL; }
// Generating Email List values for BU ...
If(i.Include_BU__c == True)
{
If(!ProductNameSet.contains('Automata') && !ProductNameSet.contains('DRAM') && !ProductNameSet.contains('eMCP') && !ProductNameSet.contains('eMMC') && !ProductNameSet.contains('HMC') && !ProductNameSet.contains('MCP') && !ProductNameSet.contains('NAND') && !ProductNameSet.contains('NOR') && !ProductNameSet.contains('SSD') && !ProductNameSet.contains('N/A'))
{
Idea_Custom_Setting__c nc = Idea_Custom_Setting__c.getValues('Product All');
completeEmailList += nc.BU_Email_Id__c+ ';' ;
}
List<Idea_Custom_Setting__c> IdeaEmails = Idea_Custom_Setting__c.getall().values();
for(Idea_Custom_Setting__c m : IdeaEmails)
{
If(CategoryNameSet.contains(m.Category__c) && (ProductNameSet.contains(m.Product__c)||ProductNameSet==NULL))
{
completeEmailList += m.BU_Email_Id__c + ';' ;
}
If(CategoryNameSet.contains('Automotive') || CategoryNameSet.contains('Connected Home') || CategoryNameSet.contains('Consumer') || CategoryNameSet.contains('IMM'))
If(ProductNameSet.contains(m.Combined_Category__c))
{
completeEmailList += m.BU_Email_Id__c + ';' ;
}
}
}//End of first IF statement
// Generating Email List values for SME ...
If( i.LastModifiedDate == i.CreatedDate)
{
List<Idea_Custom_Setting_For_SME__c> SMECustSet = Idea_Custom_Setting_For_SME__c.getall().values();
for(Idea_Custom_Setting_For_SME__c N : SMECustSet)
{
If(CategoryNameSet.contains(N.Category_SME__c)){
If(ProductNameSet.contains('N/A'))
{
completeEmailList += N.SME_Email_Id__c + ';' ;
} }
If(CategoryNameSet!=NULL && ProductNameSet.contains(N.Product_SME__c))
{
completeEmailList += N.SME_Email_Id__c + ';' ;
}
If(!ProductNameSet.contains('Automata') && !ProductNameSet.contains('DRAM') && !ProductNameSet.contains('eMCP') && !ProductNameSet.contains('eMMC') && !ProductNameSet.contains('HMC') && !ProductNameSet.contains('MCP') && !ProductNameSet.contains('NAND') && !ProductNameSet.contains('NOR') && !ProductNameSet.contains('SSD') && !ProductNameSet.contains('N/A')){
If(ProductNameSet.contains(N.Special_Value__c))
{
completeEmailList += N.SME_Email_Id__c + ';' ;
}}
}
}
system.debug('-----------completeEmailList--------'+completeEmailList);
for(String str2 : completeEmailList.split(';'))
{
emailAddressess.add(str2);
}
//Set Message Properties
mail.setTargetObjectId(i.CreatedById);
mail.setWhatId(i.Id);
mail.setTemplateId(et.Id);
mail.setSenderDisplayName('SFDC Technical Discussion');
mail.setToAddresses(emailAddressess);
mail.setUseSignature(false);
mail.setBccSender(false);
mail.setSaveAsActivity(false);
// Update the Post to set the SME Notified field to TRUE
If(i.Include_BU__c == True){
List<Idea> nIdea = [SELECT Id, BU_Notified__c FROM Idea WHERE Id IN: Trigger.newMap.keySet()];
for (Idea o :nIdea){
o.BU_Notified__c = True;
}
update nIdea; }
}
// Send the email
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}}
当我使用我的测试类创建一个Idea记录时,我总是会收到错误消息:
System.DmlException:插入失败。第0行的第一个例外;第一个错误:CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY,IdeaTrigger1:执行AfterInsert
引起:System.EmailException:SendEmail失败。第0行的第一个例外;第一个错误:INVALID_EMAIL_ADDRESS,无效地址:: []
Class.IdeaTriggerOperations1.NotifyBUonNewDiscussion1:第114行,第1列Trigger.IdeaTrigger1:第9行,第1列:[]
答案 0 :(得分:0)
没问题斯蒂芬。 我现在能够解决我的问题。
我在课堂上没有使用(SeeAllData = true),当我在创建Idea记录时引用社区ID时导致了这个问题。由于这一点,没有记录被插入。
谢谢!