2009-07-01 39 views
8

Tôi có một ứng dụng được viết bằng C# sử dụng Outlook Interop để mở một thư mới chứa đầy các chi tiết mà người dùng có thể chỉnh sửa trước khi gửi thủ công.Outlook Interop, Mail Formatting

var newMail = (Outlook.MailItem)outlookApplication.CreateItem(
    Outlook.OlItemType.olMailItem); 
newMail.To = "[email protected]"; 
newMail.Subject = "Example"; 
newMail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML; 
newMail.HTMLBody = "<p>Dear Example,</p><p>Example example.</p>"; 
newMail.Display(false); 

Khi người dùng cùng tạo ra một thông điệp mới bằng tay font được thiết lập để Calibri hoặc bất cứ phông chữ người dùng đã thiết lập như mặc định của họ. Vấn đề là văn bản trong email tự động xuất hiện trong phông chữ Times New Roman mà chúng tôi không muốn.

Nếu tôi xem nguồn gốc của một trong những email gửi tôi có thể thấy rằng Outlook đã thiết lập một cách rõ ràng font trong nguồn email:

// Automated 
p.MsoNormal, li.MsoNormal, div.MsoNormal 
{ 
    margin:0cm; 
    margin-bottom:.0001pt; 
    font-size:12.0pt; 
    font-family:"Times New Roman"; 
} 

// Manual 
p.MsoNormal, li.MsoNormal, div.MsoNormal 
{ 
    margin:0cm; 
    margin-bottom:.0001pt; 
    font-size:11.0pt; 
    font-family:"Calibri","sans-serif"; 
} 

Tại sao các định dạng khác nhau và làm thế nào tôi có thể nhận được email tự động để sử dụng cài đặt mặc định của người dùng? Tôi đang sử dụng phiên bản 11 của các hội đồng interop vì có sự kết hợp của Outlook 2003 và 2007 được cài đặt.

Trả lời

2

Vì đây là một email HTML, bạn có thể dễ dàng nhúng bất kỳ kiểu dáng nào bạn muốn vào cơ thể HTML thực tế. Tôi nghi ngờ đó là những gì Outlook đang làm khi bạn tạo một thư từ Outlook GUI.

Tôi thực sự không biết cách nhận cài đặt người dùng. Tôi đã xem qua API Outlook (nó là một con thú lạ), nhưng không thấy bất cứ điều gì có thể cung cấp quyền truy cập vào các thuộc tính thông báo mặc định.

+0

Không thực sự là những gì tôi muốn ... nhưng có lẽ là tốt như tôi sẽ nhận được ngay bây giờ! –

0

Trải nghiệm của tôi là tạo email KHÔNG sử dụng cài đặt email mặc định.

Bạn đang thiết lập chính xác newMail.HTMLBody thành giá trị, thay vì chèn HTML của bạn vào đó. Tôi đặt cược nếu bạn kiểm tra nội dung của HTMLBody, nó sẽ bắt đầu bằng nội dung nào đó, như mã css

BAO GIỜ, bất cứ khi nào bạn cố ĐỌC từ một trong các giá trị email, người dùng của bạn sẽ nhận được cửa sổ bật lên bảo mật chương trình đang cố gắng truy cập..blah blah blah "

Tôi đã gặp phải điều này khi cố gắng duy trì chữ ký của người dùng, không bao giờ tìm được cách tốt để lấy nó mà không kích hoạt lời nhắc bảo mật.

+0

Trong trường hợp Lỗi chung, Roman New Times đến từ đâu? Tôi thấy một hành vi tương tự nhưng không thể tìm thấy cuộc sống của tôi nơi phông chữ được chọn đến từ đó. – Ben

+0

Ngoài ra. Mặc dù tôi chỉ định định dạng cơ thể là HTML, nhưng nó chuyển sang Văn bản thuần túy. Nếu tôi không cung cấp bất kỳ nội dung tin nhắn nào thì nó sẽ giữ nguyên cài đặt định dạng HTML. Nếu tôi áp dụng văn bản nội dung, nó sẽ chuyển sang Văn bản thuần túy. – Ben

6

Nó hoàn toàn bực bội.

Điều đó không giúp bạn khi Google gặp sự cố, có vô số câu trả lời cho bạn biết chỉ cần phong cách văn bản trong CSS. Yeeessss, tốt, nếu bạn đang tạo email đầy đủ và có thể tạo kiểu/kiểm soát toàn bộ văn bản. Nhưng trong trường hợp của bạn (và của chúng tôi) ý định là để khởi động email với một số văn bản ban đầu và người dùng cuối thêm văn bản của riêng mình. Đó là văn bản bổ sung của anh ấy được thể hiện hoàn toàn trong Times New Roman.

Giải pháp mà chúng tôi tìm thấy là tiếp cận vấn đề theo một hướng khác. Và đó là sửa chữa cơ sở/mặc định cơ bản trong Outlook là phông chữ được lựa chọn của chúng tôi thay vì Times New Roman.

Điều đó có thể được thực hiện bằng cách:

  1. mở Word (có, không Outlook)
  2. Đến Options -> Advanced -> Options Web
  3. Thay đổi font chữ mặc định trong tab Fonts

video ở đây:
http://www.youtube.com/watch?v=IC2RvfoMFz8

Tôi đánh giá cao điều này không hữu ích nếu bạn cần để kiểm soát hoặc thay đổi phông chữ theo chương trình. Nhưng đối với những người làm việc với những khách hàng chỉ muốn phông chữ email cơ bản là không phải là là Times New Roman bất cứ khi nào email được tạo từ mã, điều này có thể hữu ích.

Các vấn đề liên quan