Создать электронное письмо, которое будет загружено клиентом и отправлено из его учетной записи Outlook - PullRequest
5 голосов
/ 13 июля 2010

Одним из требований к приложению, над которым я работаю, является предоставление пользователям возможности отправлять отчет об отладке в нашу службу поддержки по критическим ошибкам (во многом как отчеты об ошибках Windows).

Мне сказаличто сообщения электронной почты должны приходить с почтовой учетной записи клиента, чтобы служба поддержки не получала спам и не вызывала множество повторных вызовов.

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

Я пытался, но безуспешно,использовать компонент взаимодействия Outlook, который является спорным вопросом, поскольку в последние 6 часов я обнаружил, что создание более чем нескольких экземпляров приложения очень ресурсоемко.

Ответы [ 3 ]

4 голосов
/ 13 июля 2010

Если вы хотите, чтобы пользователь отправлял почтовый клиент, я не вижу, как System.Net.Mail поможет вам.

У вас есть два варианта:

  1. mailto:support@domain.com?subject=Error&body=Error message here...

  2. получить пользователя для загрузки электронной почты в каком-либо формате, открыть его в своем клиенте и отправить его

Вариант 1 будетвозможно сломаться со сложными телами.При использовании варианта 2 вам нужно найти формат, который поддерживается всеми почтовыми клиентами (которые используют ваши пользователи).

При выборе варианта 1 вы можете хранить данные электронной почты локально на вашем сервере, используя какой-либо идентификатор ошибки и простоотправьте письмо с идентификатором ошибки в теме:

mailto:support@domain.com?subject=Error 987771 encountered

2 голосов
/ 13 июля 2010

В одном из наших приложений пользователь нажимает кнопку «Создать», и он создает и открывает электронное письмо в Outlook.Все, что им нужно сделать, это нажать кнопку отправки.Функции приведены ниже.

public static void generateEmail(string emailTo, string ccTo, string subject, string body, bool bcc)
        {
            Outlook.Application objOutlook = new Outlook.Application();
            Outlook.MailItem mailItem = (Outlook.MailItem)(objOutlook.CreateItem(OlItemType.olMailItem));

            /* Sets the recipient e-mails to be either sent by 'To:' or 'BCC:' 
             * depending on the boolean called 'bcc' passed. */
            if (!(bcc))
            {
                mailItem.To = emailTo;
            }
            else
            {
                mailItem.BCC = emailTo;
            }
            mailItem.CC = ccTo;
            mailItem.Subject = subject;
            mailItem.Body = body;
            mailItem.BodyFormat = OlBodyFormat.olFormatPlain;
            mailItem.Display(mailItem);
        }

Как вы можете видеть, в данный момент электронное письмо выводится в виде открытого текста, поскольку оно должно было быть дружественным к ежевике.Вы можете легко изменить формат на HTML или richtext, если вам нужны некоторые параметры форматирования.Для HTML используйте mailItem.HTMLBody

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

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

Я должен отметить, что это используется в приложении C # и что оноссылается на Microsoft.Office.Core и using Outlook в классе электронной почты, в котором находится функция.

2 голосов
/ 13 июля 2010

Простой ответ - то, что вы пытаетесь достичь, нереально достижимо на всех платформах и почтовых клиентах. Когда просят сделать невероятное, разумно придумать альтернативу и предложить это.

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

Я всегда справлялся с этим, регистрируя ошибку и текст в базе данных и интегрируя это с системой тикетов. Возможно также есть mailto: как Брюс предлагает с subject = ID & body = text, чтобы позволить пользователю отправлять что-либо по электронной почте.

Я не думаю, что файл формата .eml также поможет - потому что им нужно будет переслать его, и большинство пользователей, вероятно, запутаются.

.eml - это фактически обычный текст сообщения, включая заголовки в соответствии с RFC-5322.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...