C# 通过smptclient和C使用uri的电子邮件附件
我必须执行以下操作:我的文档存储在服务器上。我得到的唯一路径是URI 我想拿到文件,但我一直在拿403C# 通过smptclient和C使用uri的电子邮件附件,c#,uri,email-attachments,smtpclient,C#,Uri,Email Attachments,Smtpclient,我必须执行以下操作:我的文档存储在服务器上。我得到的唯一路径是URI 我想拿到文件,但我一直在拿403 string[] myArray = context.Request.QueryString["ItemsArray"].Split(','); MailMessage m = new MailMessage(new MailAddress("bart@schelkens.be"), new MailAddress("bart@
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以发送我的文档。在打开流之前尝试添加以下行:
wb.Headers.Add("User-Agent: Other");
它可能是禁止的,因为您的服务器不认为您是受信任的客户机,并且在没有用户代理的情况下阻止所有连接
[编辑1]
如果尝试从SharePoint下载文件,则必须使用以下位置的SharePointOnline凭据:
您必须在某个地方定义凭据:
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中使用此凭据:
[编辑2]
如果您在内部部署环境中打开,则可以使用网络凭据。尝试使用以下方法:
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");
提供文档所在文件夹的读/写权限
当前该文件夹没有读/写权限,这就是为什么当您尝试附加文档时,它返回403禁止的错误。仍然收到相同的错误:远程服务器返回错误:403禁止。@BartSchelkens您在这一行收到错误:var stream=wb.OpenReadpath?如果您在一个域中,请尝试在您的网络中添加该域凭据,或者回答“帮助”。因为服务器使用NTL身份验证,所以他使用了CredentialCache。仍然会收到相同的错误。这些文件托管在SharePoint中。这可能是导致问题的原因吗?如果运行应用程序的帐户是sharepoint网站中的有效用户,则可以尝试使用UseDefaultCredentials。如果这没有帮助,可能会有帮助。但是当我直接转到URI时,我会得到文档,因为它是由Sharepoint管理的。若我并没有错,那个么你们正试图附加来自IIS的文件。因此,只需根据以下链接尝试分配权限:
wb.Headers.Add("user-agent", " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");