powershell 寄送email(內部server)
Send-MailMessage -From "it@test.com" -To "test@test.com" -Subject "subjects" -Body "FYI" -Attachment "C:\sayhello\hello.csv" -SmtpServer "192.1.2.1"
Send-MailMessage -From "it@test.com" -To "test@test.com" -Subject "subjects" -Body "FYI" -Attachment "C:\sayhello\hello.csv" -SmtpServer "192.1.2.1"
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true } $EmailToAddresses = @("test1@test.com", "test2@test.com") $EmailTo = "" $EmailFrom = "it@test.com" $Subject = "subjects" $Body = "FYI" $SMTPServer = "192.1.2.1" $filenameAndPath = "C:\sayhello\sayhello.csv" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password"); foreach ($EmailTo in $EmailToAddresses) { $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body) $attachment = New-Object System.Net.Mail.Attachment($filenameAndPath) $SMTPMessage.Attachments.Add($attachment) $SMTPClient.Send($SMTPMessage) }
好久沒有打包自己開發的程式,尤其是msi 或是 msix 方便讓網域主控站派送,
因此試用了advanced installer 17.5, 欲藉由匯入visual studio 2019 專案, 打包成msi檔案,
但是出現了,以下錯誤,
.ctor could not load file or assembly system.runtime.compilerservices.unsafe 4.0.4.1
原以為是vs的問題, 後來爬文終於找到解法, 這個問題似乎出現很久, advanced installer 呈現已知但是無解的狀態,看來真的很複雜.
步驟1. 安裝.net framework 4.7.2 (請與vs專案參考版本同步)
步驟2. 以管理者身分執行, developer command prompt for vs 2019
步驟3. 輸入以下指令(請與vs專案參考版本同步)
gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Runtime.CompilerServices.Unsafe.dll" gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Numerics.Vectors.dll"
我個人很喜歡老派這個字, 英文叫做 old school
周遭的人有好多好多老派的人, 他們不喜歡網頁版郵件, 只習慣使用單機版的outlook收發信件, 作業系統更是windows不做他想.
因為公司多了一個越南廠, 考量初期VPN自架, 不作為主力, 該廠的通訊錄就無法透過vpn, 以LDAP方式分享 .
可是outlook通訊錄就只有兩種 : MAPI, LDAP
MAPI可以是離線版, LDAP必須連線才能使用
偏偏老派的做風就是: 離線也要能寫寫郵件, 看看郵件(pop3完全下載), 與存取完整的通訊錄
這下好了, 我得準備離線版的通訊錄, 爬文好幾天, 終於找到一個方式跟大家分享:
網域伺服器上, 可透過powershell執行指令,匯出csv通訊錄
Get-ADUser -Filter 'mail -like "*<domain>"' -SearchBase "<search base>" -Properties * | Select -Property DisplayName,GivenName,Surname,mail,Title,Department,Office | Export-CSV "<csv file location>" -NoTypeInformation -Encoding UTF8
以test.com為例子
Get-ADUser -Filter 'mail -like "*test.com"' -SearchBase "OU=taipei,DC=test,DC=com" -Properties * | Select -Property DisplayName,GivenName,Surname,mail,Title,Department,Office | Export-CSV "c:\aaa.csv" -NoTypeInformation -Encoding UTF8
我開發的windows app, 使用visual studio 2019 community version , 語言使用vb
https://github.com/WilliamFromTW/ImportFromCsvToOutlook https://github.com/WilliamFromTW/ImportFromCsvToOutlook/releases
因為時間不多, 未來也不打算花太多時間在通訊錄上面, 爬文的過程只能找到零星vba for outlook版本或是程式片段, 四處碰壁, 無人可以解答, 頂多就是要你教老派的人, 使用outlook匯出匯入功能, 一堆步驟, 將csv檔案匯入到outlook, 這簡直是天方夜譚.
因此就自行開發,並且開源, 這樣直接編譯成可安裝執行的APP, 讓他們透過定期提供的csv檔案, 就能很方便匯入通訊錄了.
微軟的網域主控站非常好用, 尤其用來管控帳號密碼.
但是修改密碼,就必須透過加入網域的主機才能修改, 有點不方便,
尤其有些人的電腦並沒有加入網域, 要是想改密碼更是麻煩.
基於APACHE 2.0授權的 https://github.com/pwm-project/pwm 就能協助我們修改密碼.
安裝成功後, 請先用管理者帳號登入, 登入時需要額外設定忘記密碼的安全提問(管理者可直接跳過),
此時要選擇修改設定檔案, 將修改密碼的複雜度降低(但不可低於原本網域設定), 我是順便將安全提問改成一個就好.
以前要新增ldap通訊錄,非常麻煩, 一堆設定, 昨天找了一些資源, 包括想要從registry方面下手都失敗, 好險有人寫了一個超方便的程式, 可以快速新增ldap 通訊錄, 感謝啊!
https://github.com/andreighita/MAPIToolkit
官網很詳細寫了說明, 我也整理了一下給大家下載
前陣子弄了docker image postfixad , 可以讓我簡單架設可與網域主控站整合的郵件服務器.
既然有了郵件服務器, 通常還要提供roundcube這類的webmail ,
但是我不想使用webmail的最大問題: 就是帳號跟郵件不一致
登入webmail的帳號與email不相同時, 就很麻煩, 例如:
登入的帳號是 001 , 可是emai卻變成 001@kafeiou.pw , 而不是網域在mail屬性建立的william@kafeiou.pw
這困擾我很久, 甚至想要自己寫一個roundcube的plugin , 想要登入的時候, 改寫email,
後來發現roundcube有個plugin很好用, 就是 new_user_dialog , 啟用後,第一次登入,會強迫設定名字與email, 雖然帳號與email不相同, 就讓麻瓜自行更改吧, 哈
以下列出docker 安裝roundcube方式
docker run --restart always --name roundcubemail -e ROUNDCUBEMAIL_DEFAULT_HOST=tls://<郵件主機> -e ROUNDCUBEMAIL_SMTP_SERVER=tls://<郵件主機> -p 8080:80 -d roundcube/roundcubemail
https://kafeiou.pw/wp-content/uploads/2020/08/unlock_outlook_2016_attach_size_limit.7z
這只能解除outlook的限制, 不代表郵件伺服器的限制也跟著解除
最近發現office 2016的outlook收信出現信收到了, 但是有些卻看不到, 改用webmail卻又正常顯示出來, 查看一下發生的情境應該是 windows 10 (2004版本) + office 2016 , 因為office 2016安裝完畢無法進行更新, 所以出現無法正常收信的情形, 因此必須讓系統能自動更新office.
官網上寫說兩個步驟
1. 執行office任一程式, 如word , excel , 第一次執行的時候會詢問更新策略, 選擇自動更新
2. windows 內建的更新功能, 選取進階選項, 確認更新時,接收其他microsoft產品更新
若還是不行, 可自行修改registry
HKEY_LOCAL_MACHINE\software\policies\microsoft\office\16.0\common\OfficeUpdate DWORD: EnableAutomaticUpdates Value: 1
或是執行別人做好的更新程式
https://kafeiou.pw/wp-content/uploads/2020/07/Office2016_C2R_RegUpdate.zip