First, I have custom attributes in vCenter with email of VM owner and end date of the VM.
Second, I have the PowerCLI/Powershell script that list the name of the VM, email of VM owner, the end date of the VM (attached script)
I just need to add something to send email to every owner of the VM with expiration notification 4 weeks before the actual enddate like the (attached mail in word doc.)
Note: May be an owner has a lot of VMs about to expire so I need his/her related VMs in one mail. Also, you can change the script that I have made.