How is RecId field created in Dynamics AX

For more info on the recID generation, check out help contents (F1) of systemSequence class under AOT -> System Documentation -> Classes.
And the table where recIDs are stored is 'SystemSequences' stored again under System Doc -> Tables.
As to the question of when it is actually generated, my suspicion is some time during xRecord.insert() / xRecord.doinsert()

Dynamics AX: Setup Email Alerts and Send Mail using X++ Code

Microsoft Dynamics Ax

Following steps illustrates how to setup and activate Email Alerts in DAX 2009.
In Ax we have two types of Alerts.
    1 ) Pop-Up Alerts , shown in AX Forms as pop-up windows.
    2 ) Email Alerts , where alert message will be sent to users by mail.  In other words its extended
         version of Pop-up Alerts.
How it Works :
   a ) For every alert ax creates record in SysOutgoingEmailTable and 
        SysOutgoingEmailData.
   b ) Then Email distributor batch(Class->SysEmailBatch->run method)  job reads the message
         from the above table and after validating execute the mail.
Now we will see what all setups are required for activating second type of alert.
Step1 : Activates the Alerts feature for user in options form .
             Go to  Tool-->Options  , set show email alerts  as

Step 2 :  Set Email Parameters , Administration->Setup->Email Parameters
                 Define parameters like which SMTP  Server to use for sending mails and credentials
                 by which mail will be sent to users.

Step 3 : Add Email distributor batch to BatchJob Queue. This job will be responsible for sending mails to users. So if you are not receiving any email it means u have not scheduled this batch job to run.
             Administration->Periodic->Email-Processing--->Batch

Set the recurrence as No End date and minutes as 15-30 minutes.
Step 4 : Check the Batch Job queue for Email distributor batch job , you should find new record
               in batch queue as
               Basic-->Inquiries-->Batch Job

               For this record Click on Alerts and select check box "Error" . It means whenever this
               batch job fails you will get alert.

Incase of any failure you can debugg SysEmailBatch Class run method .
Step 5: Set up Email Templates and attach to EventParameters.
              Basic -> Setup -> Alerts -> Alert Parameter.

Step 6 :   Job to test whether u have configured correctly or not.
static void Mail_Send(Args _args)
                 {

EventParameters eventParameters = EventParameters::find();
                      SysUserInfo             sysUserInfo;
                     UserInfo                userInfo;
                     ;
                    // SysUserInfo has Alert and email info
                    sysUserInfo = SysUserInfo::find(curuserid());
                     // UserInfo has the language info
                    //userInfo = xUserInfo::find(false, eventRule.UserId);
SysEmailTable::sendMail(eventParameters.AlertTemplateId,userInfo.Language,sysUserInfo.Email);