以前,我的SPUtility.SendMail
函数可以正常工作。
但是最近没有电子邮件发送出去。
根据几篇文章,我尝试设置HttpContext.Current to null before invoking SendMail and change HttpContext.Current back
,并使用elevated rights
。但是他们没有用。
try
{
using (var elevatedSite = new SPSite(TestConfig.GetString(TestConfig.Config.SiteUrl).TrimEnd('/')))
{
using (var elevatedWeb = elevatedSite.OpenWeb())
{
var to = new StringBuilder();
foreach (var grp in grpNames)
{
var group = elevatedWeb.SiteGroups[grp];
var groupValue = new SPFieldUserValue(elevatedWeb, group.ID, group.Name);
var inbox = new Inbox
{
Title = String.Format("Report generated@{0}", fileURL),,
};
foreach (SPUser user in group.Users.Cast<SPUser>().Where(usr => !usr.Email.IsNullOrEmpty()))
{
to.AppendFormat("{0},", user.Email);
}
}
bool isSent = SPUtility.SendEmail(elevatedWeb, true, false, "test@mail.com", ...);
}
}
}
catch (Exception ex)
{
ex.PreserveStackTrace();
throw;
}
try-catch
和event viewer
没有返回错误。
还检查了发送状态isSent
,并返回了true
:
参考文献:
https://sharepoint.stackexchange.com/questions/93979/why-is-httpcontext-current-set-to-null
http://emailfromsharepoint.blogspot.com/2012/04/send-email-from-sharepoint.html