C# 网页sapx页面调用用户邮箱客户端

 刚接手这个功能总觉得一脸懵逼。以前做的都直接拼接好字符串然后调用邮件接口直接发出其他人。这次的需求是拼接好字符串之后调用用户客户端让发送邮件的人确认数据是否正确再发送出去。虽然听起来很简单,可是到小司机我手里就变得超级难,一路艰辛还是记录下来,如果看答案快点可直接读到最后;

1.第一次百度的答案 System.Diagnostics.Process.Start()

 string sEmailMSG = "mailto:" +HttpUtility.UrlEncode( Emailto) + "?CC=" + HttpUtility.UrlEncode(EmailToCC) + "?subject=" +HttpUtility.UrlEncode( emailTitle) + 
                "&body=" +HttpUtility.UrlEncode( emailBody);

            
          System.Diagnostics.Process.Start(sEmailMSG);

在本地测试完成之后部署到服务器,之后完全失效这个方法。一点反映都没有,当然你百度的话,很多就百度到这个方法,你也可能跟我一样的入坑了。后来看了,System.Diagnostics.Process.Start()方法好像调用本地的程序。也就是服务器会自己调用服务器端的客户端,所以到用户那里就失效了。如果您也跟我一样用aspx的后台调用客户端,B/s的话把这个方法抛弃了吧。


2.在页面上写a标签,用href来实现<a href=mailto:[email protected]>send email</a>

这个方法能在服务器上调起邮箱客户端。到这里感觉还是好幸福的,至少看到希望了。但是href链接的数据怎么从后台绑定到href里呢,又脑子死路了,用<% Gethtml() >来在页面上,我当初用href=<% Gethtml()>悲催这样写是谁教我的,想想都好笑。反正一句话部行


3.正确的绑定方式

string sEmailMSG = "mailto:" +HttpUtility.UrlEncode( Emailto) + "?CC=" + HttpUtility.UrlEncode(EmailToCC) + "?subject=" +HttpUtility.UrlEncode( emailTitle) + 
                "&body=" +HttpUtility.UrlEncode( emailBody);


            Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>window.open ('" + sEmailMSG + "')</script>");

好吧重点是其实不需要a标签也能实现,直接用page.ClientScript.RegisterSartupScript(this.GetType(),"","<Script>window.open(sEmailMSG )"</scrpt>)就这样直接弹出调用客户端就好,很简单对吧。







猜你喜欢

转载自blog.csdn.net/ypz131023/article/details/70432426
今日推荐