2014-05-14 81 views
4

我有一个应用程序将根据先前的级别批准为每个级别创建任务表单。在创建每个任务时,我必须将电子邮件发送给所有参与任务的用户。为此,我使用SPUtility.SendEmail()方法。但不幸的是,迄今为止它并没有奏效。调试器成功通过SendEmail方法,没有任何异常。但价值永远是假的。 SMTP服务器正在为SP应用程序以外的应用程序工作。我的代码如下所示。SPUtility.SendEmail()总是返回假

SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      using (SPSite spSite = new SPSite(SiteURL)) 
      { 
       using (SPWeb spWeb = spSite.OpenWeb()) 
       { 
        headers = new StringDictionary(); 
        headers.Add("to", To); 
        headers.Add("from", From); 
        headers.Add("cc", CC); 
        headers.Add("bcc", BCC); 
        if (Priority.Equals("High")) 
        { 
         headers.Add("X-Priority", "1 (Highest)"); 
         headers.Add("X-MSMail-Priority", "High"); 
         headers.Add("Importance", "High"); 
        } 
        headers.Add("subject", Subject); 
        headers.Add("content-type", "text/html"); 
        Status = SPUtility.SendEmail(spWeb, true, true, To, Subject, Body); 
       } 
      } 
     }); 

请帮我解决这个问题。所有的建议将不胜感激。提前致谢。

+0

您是否在sharepoint admin中设置了传出电子邮件SMTP? – user3373870

+0

@ user3373870:是的。我做了.. – MAC

+0

看看当你调试你的代码时,这会给你什么 当然,你必须改变(网络);到您的网站 'var IsEmailServerSet = SPUtility.IsEmailServerSet(web);' – user3373870

回答

0

几分钟前我有同样的问题。 您可能会遇到smtp服务器RELAY的问题。

试试这个:

  1. 打开IIS 6
  2. 转到SMTP虚拟服务器(开放性)
  3. 标签一般:在下拉列表中的服务器选择IP地址经过
  4. 标签访问

    4.1 访问控制确保匿名访问被选中

    4.2 中继限制添加IP:127.0.0.1和服务器

  5. 标签交货的IP地址:进入按钮“出站连接”并设置端口= 587

这就是所有。 我希望有帮助

+0

对!令人惊讶的是“Internet信息服务(IIS)管理器”是没用的。只要我启动“Internet信息服务(IIS)6.0管理器”,并点击“本地计算机”,我看到[SMTP虚拟服务器#1]处于“停止”状态!可能是因为我上次重新启动IIS。 – jumxozizi

0

它在我看来像你使用错误的方法签名。你将会遇到设置标题为StringDictionary的麻烦,但是你使用了不使用这些标题的重载SPUtility.SendEmail()。 试试这个:

SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      using (SPSite spSite = new SPSite(SiteURL)) 
      { 
       using (SPWeb spWeb = spSite.OpenWeb()) 
       { 
        headers = new StringDictionary(); 
        headers.Add("to", To); 
        headers.Add("from", From); 
        headers.Add("cc", CC); 
        headers.Add("bcc", BCC); 
        if (Priority.Equals("High")) 
        { 
         headers.Add("X-Priority", "1 (Highest)"); 
         headers.Add("X-MSMail-Priority", "High"); 
         headers.Add("Importance", "High"); 
        } 
        headers.Add("subject", Subject); 
        headers.Add("content-type", "text/html"); 
        Status = SPUtility.SendEmail(spWeb, headers, Body); 
       } 
      } 
     });