2013-07-22 4 views
0

У меня есть утилита, написанная на C#, которая собирает кучу вещей, необходимых для диагностики проблемы с помощью части программного обеспечения (некоторые переменные env, версии установленного программного обеспечения, различные журналы и настройки файлы из него и т. д.) и завернуть их в zip-файл. Я хотел бы сделать это как можно проще для конечного пользователя, чтобы отправить мне этот файл. В идеале, я бы хотел, чтобы сообщение электронной почты появлялось в почтовом клиенте по умолчанию, с предустановленным в: полем, теме и т. Д. ... и прикрепленном файле. Затем они могут делать любые изменения, которые им нужны, или просто нажать отправить. Следующие вопросы:Отправка диагностического файла из утилиты C#

  1. Я не могу использовать mailto, так как мне нужно приложение, и это не поддерживается.

  2. Я знаю, что некоторые из конечных пользователей не используют Outlook, поэтому я не могу специально для этого кодировать (или что-нибудь в этом отношении).

  3. Я ничего не знаю о почтовых системах/учетных данных конечных пользователей и т. Д., Поэтому я не могу отправить электронную почту напрямую через SMTP. Я не хочу просто указывать в учетной записи gmail или что-то еще, потому что я не хочу, чтобы она ломалась, если нам нужно было сменить пароль или что-то в этом роде. Кроме того, письмо должно поступать от конечного пользователя.

  4. Из того, что я вижу, MAPI не поддерживается в .NET. Я нашел код, который якобы заставляет его работать в любом случае, но я также видел, что это может вызвать утечку памяти и т. Д. Кроме того, это хорошо работает со всеми почтовыми клиентами, отличными от Outlook?

Есть ли какие-либо варианты, которые мне не хватает здесь? Благодаря!

ETA: Извините, вы должны добавить - мы рассмотрели использование FTP и это вариант, но далеко не идеальный, поскольку это означает дополнительные шаги на нашем конце (у нас есть рабочие процессы вокруг писем).

+1

Рассматривали ли вы FTP? – BillH

+0

Считается, но надеется, что этого не сделать. См. Комментарий ниже. – teleute00

+0

У меня нет опыта с этим, но в другом месте я получил предложение использовать uuencoding. Насколько я могу судить, он, по-видимому, был заменен базой64? и 2. Я не уверен, как это поможет ситуации ... – teleute00

ответ

0

Как сказал Билл в своем комментарии, использование FTP, вероятно, будет вашим лучшим выбором. Вы можете использовать FTPWebRequest класс:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm"); 
request.Method = WebRequestMethods.Ftp.UploadFile; 

// This example assumes the FTP site uses anonymous logon. 
request.Credentials = new NetworkCredential ("anonymous","[email protected]"); 

// Copy the contents of the file to the request stream. 
StreamReader sourceStream = new StreamReader("testfile.txt"); 
byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
sourceStream.Close(); 
request.ContentLength = fileContents.Length; 

Stream requestStream = request.GetRequestStream(); 
requestStream.Write(fileContents, 0, fileContents.Length); 
requestStream.Close(); 

FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription); 

response.Close(); 

код из http://msdn.microsoft.com/en-us/library/ms229715.aspx

+0

Я думал об этом. Был надеяться найти альтернативу, потому что 1. это означает разрешение анонимного FTP и 2. Затем у нас есть больше шагов на нашей стороне (когда электронное письмо приходит с вложением, все это просто хранится в CRM под учетной записью пользователя, тогда как если оно FTP'd, тогда мы должны получить его, а затем прикрепить его вручную и т. Д., Если я не смогу найти способ сценария тоже). Таким образом, это вариант, но определенно не рекомендуется, если в любом случае будет иметь дело с электронной почтой. Спасибо за образец кода, хотя, безусловно, будет хорошим началом, если нам придется идти этим путем. – teleute00

+0

@ teleute00 Я бы не подумал, что с Anon FTP есть что-то неправильное, если оно правильно контролируется. Я не думаю, что есть простой способ добиться того, что вы смотрите на электронную почту, учитывая ваши обстоятельства. Другим вариантом будет веб-сервис, на который он автоматически отправит сообщение ... но это, скорее всего, будет больше, чем настройка FTP. – Mansfield

+0

На самом деле у меня нет полномочий разрешать анонимный FTP на нашем конце, и если прошлый опыт - это руководство, у меня будет время, убеждающее TPTB. Но если это единственный вариант ... :-( – teleute00

Смежные вопросы