2017年6月1日 星期四

[研究] [ASP.NET] [C#] [WebForm] 寄信問題

[研究] [ASP.NET] [C#] [WebForm] 寄信問題

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

沒有留言:

張貼留言