2017-06-01
續這兩篇
[研究][C#]加密加簽寄信(使用Cpi.Net.SecureMail)(一)
http://shaurong.blogspot.com/2017/02/ccpinetsecuremail.html
[研究][C#]加密加簽寄信(使用Cpi.Net.SecureMail)(二)
http://shaurong.blogspot.com/2017/02/ccpinetsecuremail_13.html
********************************************************************************
狀況1:Visual Studio 2017 下寄信成功,發行 (deploy) 到本機 Windows Server 2016 IIS 上寄信會失敗
測試可以成功寄信,Outlook 也可以收到加簽信,
但把程式複製、修改,放入某方案中使用,
client.Send(message); 在 Visual Studio 2017 下寄信成功,
發行 (deploy) 到本機 Windows Server 2016 IIS Web Server 上,用瀏覽器執行寄信會失敗
把
Label_MSG1.Text = ex.Message.ToString();
改為
Label_MSG1.Text = ex.InnerException.Message.ToString();
印出更詳細的錯誤訊息
發現 C:\inetpub\mailroot\Pickup 似乎沒有足夠存取權限,搜尋整個方案,在 web.config 找到
<system.net> <mailSettings> <smtp deliveryMethod="SpecifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="C:\inetpub\mailroot\Pickup" /> </smtp> </mailSettings> </system.net> |
解決方法有2種:
1. 讓網站能存取 C:\inetpub\mailroot\Pickup
2. 換一個網站能寫入的目錄
因為敝人網站不放 C:\Inetpub,而是 D:\web,所以把 C:\inetpub\mailroot\Pickup 改為 D:\web\mailroot\Pickup,並且建立 D:\web\mailroot 目錄。
client.Send(message); 可以正常執行完畢了。
問題發生的原因疑似在 Visual Studio 2017 下執行時候,會另外建立一個有寫入權限的暫時目錄使用,但是 deploy 到 IIS 後,會使用 web.config 中設定的目錄,後者若權限不足,就會出錯。
********************************************************************************
狀況2:信件寄出成功,卻收不到信
狀況1解決後,client.Send(message); 可以正常執行完畢了,但是卻收不到信件。(單獨簡單的 Cpi.Net.SecureMail.dll 程式寄信後可以收到)
後來發現寄出信件好像沒有真的寄出,而是放在 D:\Production\mailroot\Pickup,嘗試把 Web.config 中相關設定都註解掉。
<!-- <system.net> <mailSettings> <smtp deliveryMethod="SpecifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="D:\web\mailroot\Pickup" /> </smtp> </mailSettings> </system.net> --> |
Outlook 可以收到網站寄出的加簽信件了。
(完)
相關
[研究][C#]加密加簽寄信(使用Cpi.Net.SecureMail)(一)
http://shaurong.blogspot.com/2017/02/ccpinetsecuremail.html
[研究][C#]加密加簽寄信(使用Cpi.Net.SecureMail)(二)
http://shaurong.blogspot.com/2017/02/ccpinetsecuremail_13.html
[研究] [ASP.NET] [C#] [WebForm] 寄信問題
http://shaurong.blogspot.com/2017/06/aspnet-c-webform.html
沒有留言:
張貼留言