открыть существующее письмо с внешним видом с веб-сайта - PullRequest
1 голос
/ 02 декабря 2011

Мы сохраняем некоторые электронные письма из определенной папки «Входящие» сервера Exchange в какую-либо систему отслеживания. Пользователь смотрит на эту систему отслеживания с помощью браузера.

Сейчас я пытаюсь создать ссылку на веб-странице, которая, конечно же, открывает существующее электронное письмо в Outlook 2010 на клиенте.

Для создания этой ссылки у меня есть вся необходимая информация об электронном письме / элементе (с использованием Microsoft.Exchange.WebServices).

Так как это сделать?

хорошо, что у меня так далеко: преобразовать ewsId (идентификатор почты на сервере Exchange) с сервера Exchange в entryid из outlook. это делается с помощью метода ConvertId в EWS.

теперь у меня проблема в том, что когда я пытаюсь загрузить почту с помощью outlook, я получаю сообщение об ошибке «элемент не может быть открыт. Попробуйте еще раз».

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

хорошо, я нашел решение опубликовать мой код здесь:

на стороне сервера (c # с обменом веб-сервисом):

    private static String GetOutlookEntryId( EmailMessage message, ExchangeService esb ) {
        AlternateId ewsId = new AlternateId( IdFormat.EwsId, message.Id.ToString(), "email.address@test.de" );
        AlternateIdBase entryId = esb.ConvertId( ewsId, IdFormat.EntryId );
        return Base64StringToHexString( ( (AlternateId)entryId ).UniqueId );
    }

    public static String Base64StringToHexString( String base64String ) {
        byte[] bytes = System.Convert.FromBase64String( base64String );

        StringBuilder sbHexString = new StringBuilder();
        for( int i = 0; i < bytes.Length; i++ ) {
            sbHexString.Append( bytes[i].ToString( "X2" ) );
        }
        return sbHexString.ToString();
    }

на стороне клиента (Internet Explorer, Outlook установлен, vbscript):

<script language="vbscript">
sub openMailInOutlook
    mailID = "the entry id converted from exchange id on the server side"

    set olApp = createobject("Outlook.Application")

    set session = olApp.Session
    set originalMailItem = session.GetItemFromID( mailID )

    originalMailItem.Display

    set olNs = Nothing
    set olApp = Nothing
end sub

1 голос
/ 02 декабря 2011

Привет, я думаю, это поможет U

В принципе, есть три способа сделать это.

  • Использование mailto для открытия приложения Outlook
  • Использование традиционной SMTP отправки почты
  • Использование библиотеки объектов Outlook для открытия внешнего вида вместе с добавленным вложением в качестве неотъемлемой части приложения.

Использование Mailto Link

<A href=”mailto:Bob@somewhere.com
         ?Cc:Roxy@righthere.com
         &Subject:Using Mailto to send mails&Body:this is a test”>. 

Это глупый способ сделать это. Передайте атрибуты вместе с mailto

Однако, если вы хотите использовать это в VB.Net LinkLabel. Вы можете сделать это так

Dim strURL as String strURL = “mailto:Bob@somewhere.com
                              ?Cc:Roxy@righthere.com
                              &Subject:Using Mailto to send mails&Body:this is a test” 
Process.Start(strURL)

Использование SMTP Send Mail

Перед началом кодирования убедитесь, что вы импортируете связанное пространство имен

Imports System.Web.Mail

Здесь идет код

Public Function SMTPCall()
    Dim strTo As String
    Dim strFrom As String 
    Dim strBody As String 
    Dim strSubject As String 
    strTo = "Bob@somewhere.com" 

    'Make sure you set the from address, 
    'some SMTP servers wouldn't send a mail without the FROM address 
    strFrom = "Roxy@righthere.com" `
    strBody = "Test on Sending Mail"` 
    strSubject = "Did this mail reach you yet?" `
    SmtpMail.Send(strFrom, strTo, strSubject, strBody) `
End Function`

Выглядит хорошо, но ограничением двух вышеупомянутых методов является невозможность отправки вложения. Что делать, если пользователь хочет получить доступ к адресной книге Outlook, а также отправить письмо вложение?

Использование библиотеки объектов MSOutlook

Вот небольшой фрагмент кода для интеграции Outlook с VB.Net с использованием библиотеки объектов MS Outlook.

  • Сначала создайте экземпляр объекта приложения Outlook.
  • Убедитесь, что вы добавили ссылки в Список проектов.
  • Щелкните правой кнопкой мыши по ссылкам в обозревателе решений. Добавьте «библиотеку объектов Microsoft Outlook 10.0».

    публичная функция OutlookCall () 'Взять экземпляр приложения Outlook Dim oOutlook As New Outlook. Приложение ()

    'Create an instance of the MailItem 
    Dim oMailitem As Outlook.MailItem`
    
    'Create an instance of the Attachment 
    Dim oAttach As Outlook.Attachment
    oMailitem = oOutlook.CreateItem(Outlook.OlItemType.olMailItem)
    oMailitem.To = “Bob@somewhere.com”
    oMailitem.Cc = “Roxy@righthere.com”
    oMailitem.Subject = "Email Integration with Outlook and VB.Net"
    
    'txtFilepath is a text box that contains the path for attachment.
    If (txtFilepath.Text = "") Then
        MsgBox ("You did not attach a file")
    Else
        'Attach the file Path to the Mail Item 
        oMailitem.Attachments.Add(txtFilepath.Text)
    End If
    
    'PING….Displays the Outlook along with the To,Cc,Subject and Attachment 
    oMailitem.Display()
    

    Функция завершения

Есть много других функций, которые вы можете сделать с этим объектом внешнего вида. Надеюсь, это поможет.

Примечание:

  • Microsoft Outlook должен быть установлен на машине.
  • Microsoft Outlook считается почтовым клиентским приложением по умолчанию.
  • Если существующий экземпляр отправляющего элемента outlook уже запущен, он все равно создаст новое почтовое сообщение.

это поможет вам

...