我必须执行以下操作:我的文档存储在服务器上。我得到的唯一途径是URI 我试图获取文件,但我一直在收到“403 Forbidden”。
string[] myArray = context.Request.QueryString["ItemsArray"].Split(',');
MailMessage m = new MailMessage(new MailAddress("bart@schelkens.be"),
new MailAddress("bart@schelkens.be")
);
m.Subject = "Emailing documents";
foreach (string path in myArray)
{
using (WebClient wb = new WebClient())
{
wb.UseDefaultCredentials = false;
wb.Credentials = new NetworkCredential(_userName, _passWord);
var stream = wb.OpenRead(path);
m.Attachments.Add(new Attachment(stream, ""));
}
}
string mailBody = "Dear<BR/> Please find attached a new version of the documents.";
mailBody += "<BR/>";
m.Body = mailBody;
m.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("hybrid.kaneka.be");
smtp.EnableSsl = false;
smtp.Send(m);
或者是否有另一种方法可以从网站上获取我的文件然后邮寄?
在SharePoint中,我创建了自己的按钮,使用js文件进入我的ashx邮寄我的文档。
答案 0 :(得分:0)
尝试在打开流之前添加以下行:
wb.Headers.Add("User-Agent: Other");
可能是因为您的服务器不认为您是受信任的客户端并且在没有用户代理的情况下阻止所有连接,这是禁止的。
[编辑1]
如果您尝试从SharePoint下载文件,则必须使用SharePoint Server 2013 Client Components SDK中的SharePointOnlineCredentials
:
您必须在某处定义凭据:
const string username = "username";
const string password = "password";
var securedPassword = new SecureString();
foreach (var c in password.ToCharArray()) securedPassword.AppendChar(c);
var credentials = new SharePointOnlineCredentials(username, securedPassword);
之后,您可以在WebClient
:
wb.Credentials = credentials;
[编辑2]
如果您使用的是本地环境,则可以使用NetworkCredentials。尝试使用以下内容:
wb.Credentials = new NetworkCredential("DOMAINNAME\username", "password");
[编辑3]
也许您的服务器想要一个真正的用户代理。因为如果您的凭据出现问题,将会有401(未经授权)。例如,尝试:
wb.Headers.Add("user-agent", " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");
答案 1 :(得分:0)
提供文档所在文件夹的READ / WRITE权限/权限。
目前该文件夹没有读/写权限/权限,这就是为什么当您尝试附加文档时它返回403 Forbidden error。