【问题标题】:how to open vCard bydefault in outlook 2007/03?如何在 Outlook 2007/03 中默认打开 vCard?
【发布时间】:2010-06-30 13:27:58
【问题描述】:

我已经从 asp.net + c# 应用程序生成了 vCard。在结束时。浏览器弹出“使用/另存为打开”框。我不想出现这个框。而不是那个,我想直接将生成的.vcf文件设置为用outlook 2007或03打开。怎么办? 我的代码是:

S

ystem.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
            //vCard Begin
            stringWrite.WriteLine("BEGIN:VCARD");
            stringWrite.WriteLine("VERSION:2.1");
            //Name
            stringWrite.WriteLine("N:" + nameLast + ";" + nameFirst +
                                  ";" + nameMiddle + ";" + nameTitle);
            //Full Name
            stringWrite.WriteLine("FN:" + nameFirst + " " +
                                  nameMiddle + " " + nameLast);
            //Organisation
            stringWrite.WriteLine("ORG:" + company + ";" + department);
            //URL
            stringWrite.WriteLine("URL;WORK:" + uRL);
            //Title
            stringWrite.WriteLine("TITLE:" + title);
            //Profession
            stringWrite.WriteLine("ROLE:" + profession);
            //Telephone
            stringWrite.WriteLine("TEL;WORK;VOICE:" + telephone);
            //Fax
            stringWrite.WriteLine("TEL;WORK;FAX:" + fax);
            //Mobile
            stringWrite.WriteLine("TEL;CELL;VOICE:" + mobile);
            //Email
            stringWrite.WriteLine("EMAIL;PREF;INTERNET:" + email);
            //Address
            stringWrite.WriteLine("ADR;WORK;ENCODING=QUOTED-PRINTABLE:" + ";" +
                                  office + ";" + addressTitle + "=0D" +
                                  streetName + ";" + city + ";" +
                                  region + 

";" + postCode + ";" + country);

        //Revision Date
        //Not needed
        //stringWrite.WriteLine("REV:" + DateTime.Today.Year.ToString() +
        //            DateTime.Today.Month.ToString() + DateTime.Today.Day.ToString() + "T" +
        //            DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + 
        //            DateTime.Now.Second.ToString() + "Z");
        //vCard End
        stringWrite.WriteLine("END:VCARD");
        response.Write(stringWrite.ToString());
        response.AppendHeader("Hi", "PMTS");
        response.End();

【问题讨论】:

    标签: c# asp.net outlook vcf-vcard


    【解决方案1】:

    如果我对您的理解正确,那么问题是当您的意思是让 vCard 简单地从网络打开时,您会得到一个运行或下载对话框。

    假设 实际上是您想要的,我相信您只需将您的响应设置为 vCard MIME 类型之一(text/x-vcardtext/directory;profile=vCardtext/directory) .

    Response.ContentType = "text/x-vcard";
    

    希望对你有帮助。

    - 编辑-

    使用以下代码,系统会正确提示我在 Internet Exploder 中打开或保存(并在 Outlook 中打开文件)。不幸的是,Chrome 似乎仍然不支持打开文件,因此似乎有一个永久的下载框。在 IE 中尝试以下代码,您就会明白我的意思;有用。此外,附带说明 - 如果格式正确,我将能够更容易地复制您的代码。您是否有机会编辑您的帖子、突出显示代码并点击“101010”图标?非常感谢,祝你好运!

    using System;
    using System.IO;
    using System.Web.UI;
    
    namespace WebApplication1
    {
        public partial class _Default : System.Web.UI.Page
        {
            private string nameLast = "May";
            private string nameFirst = "Lance";
            private string nameMiddle = "R.";
            private string nameTitle = "Mr.";
            private string company = "CoreLogic";
            private string department = "Development";
            private string uRL = "http://www.lancemay.com";
            private string title = "Application Developer Senior";
            private string profession = "Developer";
            private string telephone = "(123) 555-1212";
            private string fax = "(321) 555-1212";
            private string mobile = "(555) 555-1212";
            private string email = "lancemay@gmail.com";
            private string office = "Louisville";
            private string addressTitle = "";
            private string streetName = "123 Easy St.";
            private string city = "Louisville";
            private string region = "KY";
            private string postCode = "40223";
            private string country = "US";
            protected void Page_Load(object sender, EventArgs e)
            {
                StringWriter stringWrite = new StringWriter();
                System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
                //vCard Begin
                stringWrite.WriteLine("BEGIN:VCARD");
                stringWrite.WriteLine("VERSION:2.1");
                //Name
                stringWrite.WriteLine("N:" + nameLast + ";" + nameFirst + ";" + nameMiddle + ";" + nameTitle);
                //Full Name
                stringWrite.WriteLine("FN:" + nameFirst + " " + nameMiddle + " " + nameLast);
                //Organisation
                stringWrite.WriteLine("ORG:" + company + ";" + department);
                //URL
                stringWrite.WriteLine("URL;WORK:" + uRL);
                //Title
                stringWrite.WriteLine("TITLE:" + title);
                //Profession
                stringWrite.WriteLine("ROLE:" + profession);
                //Telephone
                stringWrite.WriteLine("TEL;WORK;VOICE:" + telephone);
                //Fax
                stringWrite.WriteLine("TEL;WORK;FAX:" + fax);
                //Mobile
                stringWrite.WriteLine("TEL;CELL;VOICE:" + mobile);
                //Email
                stringWrite.WriteLine("EMAIL;PREF;INTERNET:" + email);
                //Address
                stringWrite.WriteLine("ADR;WORK;ENCODING=QUOTED-PRINTABLE:" + ";" + office + ";" + addressTitle + "=0D" + streetName + ";" + city + ";" + region + ";" + postCode + ";" + country);
    
                stringWrite.WriteLine("END:VCARD");
                Response.ContentType = "text/x-vcard";
                Response.Write(stringWrite.ToString());
                Response.AppendHeader("Hi", "PMTS");
                Response.End();
            }
        }
    }
    

    【讨论】:

    • 是的,你完全明白了我的问题。但我使用了这些哑剧。但没有工作兰斯。你能告诉或询问某人吗?请。我只是想避免那个“运行或下载对话框”框。并希望内置(通过 c# 代码)设置为生成的 .vcf 文件作为 Outlook。
    • @Lalit:重新阅读您的评论后,您似乎想做一些您做不到的事情。有时你不能强制执行任何东西(谷歌浏览器),而在你可以的时候,浏览器仍然有发言权;不是服务器(服务器只能提出建议,设置 MIME 类型会这样做)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多