2010-06-30 19 views
0

J'ai généré la vCard à partir de l'application asp.net + C#. En finissant. les navigateurs s'ouvrent pour "ouvrir avec/Enregistrer sous" boîte. Je ne veux pas apparaître cette case. plutôt que cela, je veux directement définir le fichier .vcf généré pour ouvrir avec Outlook 2007 ou 03. que dois-je faire? Mon code est:comment ouvrir vCard bydefault dans 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(); 

Répondre

0

Si je vous comprends bien, le problème est que vous obtenez une boîte de dialogue d'exécution ou télécharger quand vous voulez dire pour la carte de visite simplement ouvert de la toile.

En supposant que est en fait ce que vous êtes désireux, je crois que vous avez seulement besoin de mettre votre réponse à l'un des types MIME vCard (text/x-vcard, text/directory;profile=vCard ou text/directory).

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

J'espère que cela aide.

- EDIT -

En utilisant le code suivant, je suis bien invité à ouvrir ou enregistrer (et Open ouvre le fichier dans Outlook) dans Internet Exploder. Malheureusement, Chrome ne prend toujours pas en charge l'ouverture de fichiers, il semble donc, il semble y avoir une boîte de téléchargement de façon permanente. Essayez le code suivant dans IE et vous verrez ce que je veux dire; Ça marche. En outre, sur une note de côté - j'aurais été en mesure de répliquer votre code un peu plus facile si correctement formaté. Vous avez la possibilité de modifier votre message, de mettre le code en surbrillance et de cliquer sur l'icône "101010"? Merci beaucoup, et bonne chance!

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 = "[email protected]"; 
     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(); 
     } 
    } 
} 
+0

oui, vous avez parfaitement compris ma question. Mais j'ai utilisé ces mimes.but ne fonctionne pas Lance. Pouvez-vous s'il vous plaît dire ou demander à quelqu'un pour this.please.I je veux juste éviter cette boîte de dialogue «exécuter-ou-télécharger». et que vous voulez incorporer (par un code C#) au fichier .vcf généré comme Outlook. –

+0

@Lalit: Après avoir relu votre commentaire, il semble que vous vouliez faire quelque chose que vous ne pouvez pas faire. Vous ne pouvez pas forcer l'exécution de quelque chose parfois (Google Chrome), et le temps que vous le pouvez, le navigateur a toujours son mot à dire; pas le serveur (le serveur ne peut que faire la suggestion, ce qui définit le type MIME). – Lance