0

我有一个用 C# 编写的实用程序,它将收集诊断一个软件问题所需的一堆东西(一些环境变量、安装的软件版本、来自它的各种日志和配置文件等......)并包装他们都在一个拉链。我想让最终用户尽可能轻松地向我发送此文件。理想情况下,我希望在他们的默认邮件客户端中出现一封电子邮件,并预先设置为:字段、主题行等……并附上文件。然后他们可以进行任何他们想要的修改,或者只是点击发送。遇到以下问题:

  1. 我不能使用 mailto,因为我需要一个附件并且不支持。

  2. 我知道一些最终用户不使用 Outlook,所以我不能专门为此编写代码(或任何事情,就此而言)。

  3. 我对最终用户的邮件系统/凭据等一无所知...所以我不能直接通过 SMTP 发送电子邮件。我不想只在 gmail 帐户或其他东西中编码,因为如果我们不得不更改密码或其他东西,我不希望它破坏。此外,电子邮件应来自最终用户。

  4. 据我所知,.NET 不支持 MAPI。我发现了一些据说可以让它正常工作的代码,但我也看到它会导致内存泄漏等......另外,这适用于所有非 Outlook 邮件客户端吗?

我在这里缺少任何选项吗?谢谢!

ETA:抱歉,应该添加 - 我们已经考虑使用 FTP,这是一个选项,但远非理想,因为这意味着我们需要额外的步骤(我们有围绕电子邮件的工作流程)。

4

1 回答 1

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","janeDoe@contoso.com");

// 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的代码

于 2013-07-22T17:04:39.123 回答