You need to sign in to do that
Don't have an account?
Samruddhi Gokhale
Lead auto assignment email getting fired even after setting EmailHeader.triggerUserEmail = false
Hi,
I have a lead trigger which updates the owner of lead to the currently logged in user whenver any user edits a lead. I have the settings to set EmailHeader.triggerUserEmail = false in 'After Update' trigger. Still the system generated mail is getting fired.
Trigger code is as follows:
trigger LeadTrigger on Lead (after update)
{
Database.DMLOptions dlo = new Database.DMLOptions();
dlo.EmailHeader.triggerAutoResponseEmail = false;
dlo.EmailHeader.triggerUserEmail = false;
dlo.EmailHeader.triggerOtherEmail = false;
List<Lead> leadList = new List<Lead>();
for(Lead leadObj:Trigger.newMap.values())
{
leadList.add(new Lead(id=leadObj.Id,ownerId=leadObj.ownerId));
}
if(!leadList.isEmpty())
{
for(Lead l:leadList)
{
if(l.ownerId != Userinfo.getUserId() && Trigger.newMap.get(l.Id).ownerId == Trigger.oldMap.get(l.Id).ownerId)
{
l.ownerId = UserInfo.getUserId();
l.setOptions(dlo);
}
}
database.update(leadList,dlo);
}
I have a lead trigger which updates the owner of lead to the currently logged in user whenver any user edits a lead. I have the settings to set EmailHeader.triggerUserEmail = false in 'After Update' trigger. Still the system generated mail is getting fired.
Trigger code is as follows:
trigger LeadTrigger on Lead (after update)
{
Database.DMLOptions dlo = new Database.DMLOptions();
dlo.EmailHeader.triggerAutoResponseEmail = false;
dlo.EmailHeader.triggerUserEmail = false;
dlo.EmailHeader.triggerOtherEmail = false;
List<Lead> leadList = new List<Lead>();
for(Lead leadObj:Trigger.newMap.values())
{
leadList.add(new Lead(id=leadObj.Id,ownerId=leadObj.ownerId));
}
if(!leadList.isEmpty())
{
for(Lead l:leadList)
{
if(l.ownerId != Userinfo.getUserId() && Trigger.newMap.get(l.Id).ownerId == Trigger.oldMap.get(l.Id).ownerId)
{
l.ownerId = UserInfo.getUserId();
l.setOptions(dlo);
}
}
database.update(leadList,dlo);
}
The reason why in the above scenario DMLOptions does not work is because it only applies to DML calls made after the DML options are applied. I.e. you would need to generate a list of objects to insert/update and set DMLOptions on them.
As a workaround for the scenario shown above, one could use a @future method like so: Helper class