function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
kumar raj 7kumar raj 7 

Who ever not logged in 38 days in salesforce. i need to send to user automativcally using batch apex

Hello All,

Can you please suggest please


global class SendMailtousers implements Database.Batchable<sObject>
{
    List<Messaging.MassEmailMessage> listmail = new List<Messaging.MassEmailMessage>();
    
    global database.QueryLocator start(database.BatchableContext bc)
    {   
        string query='Select id,Email,IsActive,Name from User where isActive=true and lastLoginDate < :DATE.TODAY()-38';
        return Database.getQueryLocator(query);
    }
    global void execute(database.BatchableContext bc,list<user> scope)
    {
        list<string> ccmail=['mani@gmail.com,suresh@gmail.com'];
        ccmail=new list<string>();
        List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
        for(User u: scope)
        {
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); 
            List<String> sendTo = new List<String>();
            sendTo.add(u.Email);
            mail.setToAddresses(sendTo);
            mail.setCcAddresses(ccmail);
            mail.setSenderDisplayName('Test Mail'); 
            mail.setSubject('subject');  
            mail.setPlainTextBody('body'); 
            mails.add(mail);
        }
        Messaging.sendEmail(mails);  
        
    }
    global void finish(database.BatchableContext bc)
    {
        
    }
}
Nayana KNayana K


string query='Select id,Email,IsActive,Name from User where isActive=true and lastLoginDate < LAST_N_DAYS:38';

please try changing the query once