2008-10-24 8 views
14

Tôi có yêu cầu đọc chủ đề, địa chỉ người gửi và nội dung thư của thư mới trong hộp thư đến Outlook của tôi từ chương trình C#. Nhưng tôi nhận được cảnh báo bảo mật 'Chương trình đang cố gắng truy cập vào địa chỉ e-mail bạn đã lưu trong Outlook. Bạn có muốn cho phép điều này'.Cách tránh cảnh báo bảo mật Outlook khi đọc thư nhìn từ chương trình C#

Bởi một số googling tôi thấy vài thư viện COM bên thứ ba để tránh điều này. Nhưng tôi đang tìm một giải pháp mà không yêu cầu bất kỳ thư viện COM bên thứ ba.

Trả lời

10

Xin lỗi, tôi đã gặp phải sự cố gây phiền toái đó trong cả bổ trợ Outlook 2003 và Outlook 2007 và giải pháp duy nhất hoạt động là mua giấy phép Redemption. Trong Outlook 2007, cửa sổ bật lên sẽ chỉ xuất hiện nếu tường lửa của bạn bị hỏng hoặc phần mềm chống vi-rút của bạn đã lỗi thời như tôi nhớ.

+0

Sự thật không may là có quá nhiều sự lạm dụng của Outlook rằng Microsoft đã khóa nó và không cung cấp cách nào xung quanh nó. Tôi đoán bạn có thể cố gắng nhân rộng những gì Redemption làm cho mình, nhưng tôi nghi ngờ chi phí/lợi ích có thể đánh bại giấy phép $ 200. – Godeke

+0

thực sự, $ 200 là không có gì so với thời gian bạn sẽ cần phải đến với một cái gì đó như mua lại – Kasper

+3

Tôi không biết về các bạn, nhưng tôi đã cố gắng trả lời của Kumar xuống dưới đây (sử dụng 'oOutlookApp = Globals.ThisAddIn.Application', chứ không phải hơn là tạo một đối tượng Outlook mới, nó làm việc tuyệt vời cho tôi, bạn hoàn toàn nên bỏ phiếu cho câu trả lời của mình! :-)) – Jared

1

Nếu ứng dụng của bạn không phải là một plug Outlook trong bạn có thể nhìn vào MAPI để đọc dữ liệu từ hộp thư đến

5

Hãy thử điều này

Tools -> Macro -> Security -> Truy cập theo chương trình

Sau đó chọn Không bao giờ cảnh báo tôi về hoạt động đáng ngờ.

+0

Tôi đi theo nguyên tắc hôn. Tôi tìm kiếm stackoverflow tìm thấy thread này chúng ta sẽ gọi nó. Đọc tất cả về các giải pháp ưa thích. Đọc này. Đã thử nó và Dang những gì bạn biết. Nó đã làm việc. Đó là loại giải pháp đơn giản mà tôi thích. Tôi đã may mắn rằng khách hàng của tôi đã sử dụng Outlook2007. Không phải tất cả các Outlook trước đó đều có tùy chọn này. – kingchris

+2

Tất cả các tùy chọn này đều bị tắt trong Outlook 2007. Có phải vì chúng tôi có Exchange Server không? Có thể thiết lập nó thông qua các chính sách nhóm hoặc một cái gì đó như thế? – Lars

+2

Tôi không thấy Quyền truy cập có lập trình vào năm 2003 – Jeff

3

"Nhưng tôi đang tìm một giải pháp không yêu cầu bất kỳ thư viện COM bên thứ ba nào."

Bạn sẽ không tìm thấy. Kasper đã chỉ ra giải pháp duy nhất mà tôi biết. Việc mua lại là thứ duy nhất đã giữ cho các plug-in Outlook và mã hoạt động. Tôi đã thực hiện các add-in Outlook thương mại cho Franklin Covey. Chúng tôi đã khám phá rất nhiều thứ, nhưng Redemption là thứ duy nhất khiến chúng tôi vượt qua rào cản này.

+1

Thực ra, tôi đã có thể tự động "nhấp" vào thư này để người dùng không nhận thấy thông báo (2003 và 2007). Trong một ứng dụng thương mại. –

+0

@Danbystrom: Bạn đã làm điều đó như thế nào? – Jeff

+1

@ Jeff: Đánh lừa Outlook để tin rằng nút OK đang được ép bởi một con người ... –

15

Tôi đã gặp sự cố tương tự khi truy cập địa chỉ email người gửi cho mục thư Outlook. Để tránh 'cảnh báo bảo mật' không tạo đối tượng Ứng dụng mới, thay vào đó hãy sử dụng Globals.ThisAddIn.Application để tạo thư mới.

string GetSenderEmail(Outlook.MailItem item) 
    { 
     string emailAddress = ""; 
     if (item.SenderEmailType == "EX") 
     { 
      Outlook.MailItem tempItem = (Outlook.MailItem)Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olMailItem); 
      tempItem.To = item.SenderEmailAddress; 
      emailAddress = tempItem.Recipients[1].AddressEntry.GetExchangeUser().PrimarySmtpAddress.Trim(); 

     } 
     else 
     { 
      emailAddress = item.SenderEmailAddress.Trim(); 

     } 

     return emailAddress; 
    } 
+4

Nếu bạn đang tạo một bổ trợ triển vọng thực tế (và không phải là một ứng dụng bên ngoài đang khai thác vào Outlook), thì đây là câu trả lời đúng. Trong quá trình bổ trợ không kích hoạt hộp thoại cảnh báo miễn là chúng chỉ sử dụng đối tượng Ứng dụng mà chúng đã được Outlook đưa ra lúc khởi động (tức là không tạo đối tượng Ứng dụng mới). –

+1

Câu trả lời hay! Phần lớn các ví dụ thêm vào mã tôi thấy luôn tạo ra một đối tượng 'Application' mới. Điều này giải quyết SO nhiều vấn đề. : D – Shaamaan

0

Chúng tôi sử dụng Advanced Security for Outlook từ Mapilab cho việc này. Nó hoàn toàn miễn phí, cũng được sử dụng cho mục đích thương mại và vẫn giữ Outlook an toàn (bằng cách chỉ cho phép truy cập từ các ứng dụng được phê duyệt). Chỉ cần đề cập đến các giải pháp đã đề cập trước đó mà chi phí tiền bạc, hoặc có thể thỏa hiệp an ninh.

0

Bạn có thể tắt cửa sổ bật lên bảo mật bằng Trung tâm tin cậy của Outlook. Kiểm tra here.