I suggest using the send-mailmessage cmdlet if you are in powershell v2 or v3. It has the -attachments parameter, which takes an array of strings ( string[] ).
You can change your $file variable by declaring it as $file = @() before the foreach user foreach . Inside foreach:
$file += "c:\temp\userhome\userhome-move-$username.log"
change $msgreport as [string] type
and then using the send-mailmessage do cmdlet:
send-mailmessage -SmtpServer "emailserver.business.com" ` -From " userhome-migration@business.com " -to " helpdeskn@business.com " ` -Subject "User migrations" -BodyAsHtml -Body $msgreport -Attachments $file
source share