Setting User Photo to Mail Contact
It is not possible to upload profile photo to Mail Contact.
But the current situation is inconvenient for Users since they are using a huge number of Mail Contacts.
It would more manageable function that Admin User can set a profile photo for each Mail Contact.
This feedback is based on a customer voice from support SR.
My experience is similar to those of other commentors. In our environment, We're able to add the photos to cloud-only contacts, but they only show up in the GAL in Outlook (and they show up surprisingly fast), but never show up in Outlook web app or Outlook mobile app. This is the command, run against Exchange Online Remote PowerShell, using an image less than 10kb in size:
Import-RecipientDataProperty -Identity firstname.lastname@example.org -Picture -FileData ([Byte]$(Get-Content -Path "C:\photo.jpg" -Encoding Byte -ReadCount 0))
It's possible to use the import-recipientdataproperty -Picture... PowerShell command to upload a photo to a mail contact. However this command is restricted to photo's less than 10Kb in size. If undertaking against O365 and EXO, the photo takes a while to appear in the GAL, and never appears in any O365 web interface (i.e. OWA, SPO etc.). There is also no official documentation from MS on where the photo data is stored for contact objects...
Upload photos with Exchange Commandlet "Set-UserPhoto" for MailUsers would do it. Unfortunately Microsoft allows this only for Mailbox Users what doesn't really help ig you have a lot of users without a Mailbox (like Schools, Teachers with Mailboxes and Students without).