Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在MVC API中使用SendGrid Web API,附件不起作用_Asp.net Mvc_Api_Sendgrid - Fatal编程技术网

Asp.net mvc 在MVC API中使用SendGrid Web API,附件不起作用

Asp.net mvc 在MVC API中使用SendGrid Web API,附件不起作用,asp.net-mvc,api,sendgrid,Asp.net Mvc,Api,Sendgrid,下面是我使用SendGrid API发送电子邮件的代码,但是附加文件在这里不起作用。 请帮我做同样的事情 // Init SmtpClient with credentials from config file var smtpSection = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp"); string api_user = smtp

下面是我使用SendGrid API发送电子邮件的代码,但是附加文件在这里不起作用。 请帮我做同样的事情

 // Init SmtpClient with credentials from config file
            var smtpSection = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");

            string api_user = smtpSection.Network.UserName;
            string api_key = smtpSection.Network.Password;
            string toAddress = ConfigHelper.ErrorEmailTO;
            string toName = strFromName;
            string subject = Mailsubject;
            string text = "Test Body...";
            string fromAddress = strFromEmail;
            if (isInTestMode) {
                fromAddress = ConfigHelper.ErrorEmailTO;
            }

            string FileName = ((System.IO.FileStream)(attachments[0].ContentStream)).Name;
            MemoryStream ms = new MemoryStream();
            using (FileStream file = new FileStream(FileName, FileMode.Open, FileAccess.Read))
            {
                byte[] bytes = new byte[file.Length];
                file.Read(bytes, 0, (int)file.Length);
                ms.Write(bytes, 0, (int)file.Length);
            }
            ms.Position = 0;

            byte[] fileData = null;
            using (var binaryReader = new BinaryReader(ms))
            {
                fileData = binaryReader.ReadBytes(Convert.ToInt32(ms.Length));
            }



            string url = "https://sendgrid.com/api/mail.send.json";

            // Create a form encoded string for the request body,Here All Code Except Files parameter is working.

            string parameters = "api_user=" + api_user + "&api_key=" + api_key + "&to=" + toAddress +
                                "&toname=" + toName + "&subject=" + subject + "&text=" + text +
                                "&from=" + fromAddress + "&files=" + fileData 

            try
            {
                WebRequest request = WebRequest.Create(url);
                request.Method = "POST";
                string postData = parameters;
                byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = byteArray.Length;
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();

                WebResponse response = request.GetResponse();
                Console.WriteLine(((HttpWebResponse)response).StatusDescription);
                dataStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(dataStream);
                string responseFromServer = reader.ReadToEnd();
                Console.WriteLine(responseFromServer);
                reader.Close();
                dataStream.Close();
                response.Close();
                return true;
            }
            catch (WebException ex)
            {
                // Catch any execptions and gather the response
                HttpWebResponse response = (HttpWebResponse)ex.Response;

                // Create a new read stream for the exception body and read it
                StreamReader streamReader = new StreamReader(response.GetResponseStream());
                string result = streamReader.ReadToEnd();

                // Write the results to the console
                Console.WriteLine(result);
                return false;
            }
现在,上面的代码正在使用我发送电子邮件的API凭据。
电子邮件已成功接收,但不包含任何附件。

请求的内容类型应设置为“多部分/表单数据”

这是一个老职位;但如果有人需要,仍然发布解决方案

foreach(var item in attachments)
{
  //Assuming that attachments as a collection of full file path
  var data = HttpUtility.UrlEncode(File.ReadAllBytes(item));
  var name = System.IO.Path.GetFileName(item);
  parameters = parameters + "&files[" + name + "]="+data;
}

它在'request.GetResponse()'处出现错误,因此它在这里不起作用。感谢您的回答。这是一篇旧文章。我使用了其他方法使它起作用,但我无法识别它。