как открыть vCard по умолчанию в Outlook 2007/03? - PullRequest
0 голосов
/ 30 июня 2010

Я сгенерировал vCard из приложения asp.net + c #.Пока заканчивается.в браузерах появляется окно «Открыть с помощью / Сохранить как».Я не хочу появляться в этой коробке.вместо этого я хочу напрямую настроить сгенерированный файл .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();

1 Ответ

0 голосов
/ 30 июня 2010

Если я правильно вас понимаю, проблема в том, что вы получаете диалог запуска или загрузки, когда вы хотите, чтобы vCard просто открывалась из Интернета.

Предполагая, что - это на самом деле то, что вы хотите, я считаю, что вам нужно только установить свой ответ на один из типов MIME vCard (text/x-vcard, text/directory;profile=vCard или text/directory).

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

Надеюсь, это поможет.

- РЕДАКТИРОВАТЬ -

Используя следующий код, мне корректно предлагается открыть или сохранить (и Открыть открывает файл в Outlook) в Internet Explorer. К сожалению, кажется, что 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();
        }
    }
}
...