2016-06-03 2 views
2

Я использую RestSharp, чтобы попытаться отправить вложение с помощью API Mailgun. Я попытался подключиться как к файлу в системе с использованием жестко заданного пути, так и из двоичного файла, хранящегося в базе данных, с использованием метода ToArray() свойства varbinary(MAX) (SQL Server) без успеха.Mailgun отправка вложения с RestSharp

Приложение технически отправляет, но при поступлении электронной почты в мой почтовый ящик размер файла всегда составляет примерно 302 байта и всегда поврежден. Я пробовал 3 разных файла и каждый раз получал одинаковые проблемы.

Остальная почта отправляет, доставляет и отображает штраф. Это просто вложения, которые сломаны.

Структура кода:

//Doesnt work(Data property is varbinary(MAX)request.AddFileBytes("attachment",databaseModel.Data.ToArray(),databaseModel.Filename, "multipart/form-data");

//Also doesnt work(Data property is varbinary(MAX)request.AddFile("attachment",databaseModel.Data.ToArray(),databaseModel.Filename, "multipart/form-data");

//Also doesnt work 

var path = @"D:\Template.pdf";   
request.AddFile("attachment",path,"multipart/form-data"); 

ответ

1

я понял это ..

Не предполагается, чтобы добавить "многослойную/форм-данных" на request.AddFile();

Удаление этого исправляет проблему.

-2

Вы всегда можете просто использовать библиотеку почты в Visual Studio (System.Net; System.Net.Mail;) И вы можете отправить электронное письмо с прикреплением таким образом.

I h ave упростил некоторый код из одного из моих проектов, чтобы помочь вам ... Вы можете реализовать это В своей работе очень легко!

using System.Net; 
using System.Net.Mail; 

public void email_send() 
{ 
MailMessage mail = new MailMessage(); 
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); 
mail.From = new MailAddress("your [email protected]"); 
mail.To.Add("[email protected]"); 
mail.Subject = "Test Mail - 1"; 
mail.Body = "mail with attachment"; 

System.Net.Mail.Attachment attachment; 
attachment = new System.Net.Mail.Attachment("c:/textfile.txt"); 
mail.Attachments.Add(attachment); 

SmtpServer.Port = 587; 
SmtpServer.Credentials = new System.Net.NetworkCredential("your [email protected]", "your password"); 
SmtpServer.EnableSsl = true; 

SmtpServer.Send(mail); 

} 

Спасибо,

Джо

+0

вопрос конкретно спрашивает о Mailgun размещаемой службы электронной почты –

6

Этот код работает:

public static void Main(string[] args) 
{ 
    Console.WriteLine(SendSimpleMessage().Content.ToString()); 
    Console.ReadLine(); 
} 

public static IRestResponse SendSimpleMessage() 
{ 
    var path1 = @"C:\Users\User\Pictures\website preview"; 
    var fileName = "Learn.png"; 
    RestClient client = new RestClient(); 
    client.BaseUrl = new Uri("https://api.mailgun.net/v3"); 
    client.Authenticator = 
     new HttpBasicAuthenticator("api", 
            "key-934345306fead7de0296ec2fb96a143"); 
    RestRequest request = new RestRequest(); 
    request.AddParameter("domain", "mydomain.info", ParameterType.UrlSegment); 
    request.Resource = "{domain}/messages"; 
    request.AddParameter("from", "Excited User <[email protected]>"); 
    request.AddParameter("to", "[email protected]");   
    request.AddParameter("subject", "Hello"); 
    request.AddParameter("text", "Testing some Mailgun awesomness! This is all about the text only. Just testing the text of this email."; 
    request.AddFile("attachment", Path.Combine(path1,fileName)); 
    request.Method = Method.POST; 
    return client.Execute(request); 
}