Rod*_*cia 1 c# sharepoint sharepoint-2007
我正在编写一个应用程序,它在整个应用程序的生命周期中发送大量电子邮件.
用户抱怨该应用程序确实没有响应并且通常很慢.我唯一可以提出的原因是发送的电子邮件很重.所以我认为我可以通过在不同的线程中发送电子邮件来解决问题!
我在SPUtility助手类中使用SendEmail方法.现在,我有一个看起来像这样的方法:
public static void SendEmail(SPWeb web, string to, string subject, string body)
{
//Some logic goes here
System.Threading.ThreadPool.QueueUserWorkItem(o =>
{
SPUtility.SendEmail(web, false, false, to, subject, body, false);
});
}
Run Code Online (Sandbox Code Playgroud)
此方法在DLL中定义,并且它是从许多不同的webpart调用的.
但这不起作用.如果我删除了QueueUserWorkItem位,并让它在一个线程之外发送电子邮件,它就像一个魅力,但再次,它很慢.
我怎么解决这个问题?
我怀疑你最好使用MailMessage Class(System.Net.Mail)
MailMessage mess =
new MailMessage(
SPContext.Current.Site.WebApplication.OutboundMailReplyToAddress,
sendTo,
subject,
message);
mess.IsBodyHtml = true;
SmtpClient smtp =
new SmtpClient(
SPContext.Current.Site.WebApplication.OutboundMailServiceInstance.Server.Address);
smtp.Send(mess);
Run Code Online (Sandbox Code Playgroud)
此MSDN帖子与您的情况类似,使用SPUtility.SendEmail发送电子邮件的速度很慢
小智 5
还有一个选项可以做这样的事情:
public static void SendEmail(SPWeb web, string to, string subject, string body)
{
var siteId = Web.Site.ID;
System.Threading.ThreadPool.QueueUserWorkItem(o =>
{
using (var site = new SPSite(siteId))
using (var myWeb = site.OpenWeb())
{
SPUtility.SendEmail(myWeb, false, false, to, subject, body);
}
});
}
Run Code Online (Sandbox Code Playgroud)
也许某人会感兴趣.
| 归档时间: |
|
| 查看次数: |
3233 次 |
| 最近记录: |