我通过ASP.NET MVC使用服务组件.我想以异步方式发送电子邮件,让用户做其他事情,而不必等待发送.
当我发送没有附件的邮件时,它工作正常.当我发送带有至少一个内存附件的消息时,它会失败.
所以,我想知道是否可以使用异步方法与内存中的附件.
这是发送方法
public static void Send() {
MailMessage message = new MailMessage("from@foo.com", "too@foo.com");
using (MemoryStream stream = new MemoryStream(new byte[64000])) {
Attachment attachment = new Attachment(stream, "my attachment");
message.Attachments.Add(attachment);
message.Body = "This is an async test.";
SmtpClient smtp = new SmtpClient("localhost");
smtp.Credentials = new NetworkCredential("foo", "bar");
smtp.SendAsync(message, null);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我目前的错误
System.Net.Mail.SmtpException: Failure sending mail.
---> System.NotSupportedException: Stream does not support reading.
at System.Net.Mime.MimeBasePart.EndSend(IAsyncResult asyncResult)
at System.Net.Mail.Message.EndSend(IAsyncResult asyncResult)
at System.Net.Mail.SmtpClient.SendMessageCallback(IAsyncResult result)
--- End of inner exception stack …Run Code Online (Sandbox Code Playgroud) 我有一个报告服务服务器已经有一些运行报告,我现在需要通过自定义网站(运行asp.net MVC3)生成它们.
我需要以流/字节的形式检索此报告以将其发送给用户.没有"报告查看器"左右.
上次我使用报告服务是使用sql 2005,我们应该作为参考一个不起眼的asmx文件.
现在是什么,sql server报告2008 R2,.Net4和visual studio 2010?我找不到解释整个事情的教程.
(实际上我找不到sql 2008 r2没有报表查看器的教程)
在我看来,用户可以搜索一个文档,一旦得到结果,他们可以点击它的 id,然后根据 id 从特定的 url 下载该文档:http://test.com/a.ashx?format = pdf&id= {0}
例如,如果 id 为 10,则下载文档的 url 将为:http://test.com/a.ashx?format=pdf&id=10,当用户点击它时,他们就可以下载该文档。
在我看来,它是这样的:
foreach (var item in Model)
{
<td>
<a href=@string.Format("http://test.com/a.ashx?format=pdf&id={0}",item.id)>
@Html.DisplayFor(modelItem => item.id)
</a>
</td>
}
Run Code Online (Sandbox Code Playgroud)
下面是我的 SendEmail 控制器操作。
我能够向用户发送电子邮件。但我在发送附件时遇到问题。我的问题是:如何将 URL 附带的文档附加到电子邮件中?
public static bool SendEmail(string SentTo, string Text, string cc)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("test@test.com");
msg.To.Add(SentTo);
msg.CC.Add(cc);
msg.Subject = "test";
msg.Body = Text;
msg.IsBodyHtml = true;
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment(???);
msg.Attachments.Add(attachment);
SmtpClient client = …Run Code Online (Sandbox Code Playgroud)