2017-05-03 4 views
0

Ich arbeite mit einem Azure Mobile Services-Backend und ich kann eine E-Mail erfolgreich über SendGrid senden. Jedes Mal, wenn ich versuche, einen Anhang hinzuzufügen, schlägt er jedoch fehl. Ich erhalte die E-Mail nie. Nach ein wenig Recherche fand ich heraus, dass ich nur einen virtuellen Weg brauchte. Ich habe den Pfadnamen geändert, funktioniert aber immer noch nicht.Senden von E-Mail-Anhang über SendGrid C# schlägt fehl

Ich kann nicht herausfinden, warum dies fehlschlägt.

Unten ist mein Code:

var client = new SendGridClient("apiKey"); 

var msg = new SendGridMessage() 
     { 
      From = new EmailAddress(sender), 
      Subject = "Adherence Report", 
      PlainTextContent = "Sample Content ", 
      HtmlContent = "<strong>Hello, Email!</strong>" 
     }; 
      msg.AddTo(new EmailAddress(receipient, null)); 
      msg.AddAttachment(@"~\sample\adherence.csv", "Testing", null, null, null); 

     var response = await client.SendEmailAsync(msg); 
+2

_ "scheitert" _ und _ "funktioniert nicht" _ gibt uns nicht viel weiter - erhalten Sie irgendwelche Ausnahmen? Gibt es Hinweise auf Probleme innerhalb der SendGrid Admin-Schnittstellen? Haben Sie den Inhalt von "Antwort" überprüft? –

+0

Mögliches Duplikat. Versuchen Sie die Server.MapPath, um den vollständigen Pfad http://StackOverflow.com/questions/37945281/Sending-an-Email-with-attachment-using-sendgrid –

+0

@JamesThorpe, bis jetzt keine Ausnahmen ausgelöst werden, und ich sehe keine Probleme innerhalb die SendGrid-Schnittstelle. Ich habe den Körper der Antwort ausgedruckt und das ist, was ich "Antwort" habe: "System.Net.Http.StreamContent", "Datei": "~ \\ Beispiel \\ adherence.txt"}}. – naffie

Antwort

1

ich den Inhalt der Antwort überprüft und festgestellt, dass heißt versagt, weil die geplante Sende mit einem 400 BAD REQUEST Fehler abgebrochen wird, wurde.

Nach einigen Recherchen stieß ich auf diesen Link mail errors von der SendGrid-Website. Unter dem Abschnitt für Befestigung Fehler, erklären sie, dass

Der Anlageninhalt muss Base64 codiert werden.

Dies ist, warum mein Anhang fehlgeschlagen ist. So, endlich zu bekommen es funktioniert, bearbeitet ich meinen Code wie folgt:

string sampleContent = Base64Encode("Testing"); // base64 encoded string 
var client = new SendGridClient("apiKey"); 

var msg = new SendGridMessage() 
    { 
     From = new EmailAddress(sender), 
     Subject = "Adherence Report", 
     PlainTextContent = "Sample Content ", 
     HtmlContent = "<strong>Hello, Email!</strong>" 
    }; 
     msg.AddTo(new EmailAddress(recipient, null)); 
     msg.AddAttachment("myfile.csv", sampleContent, "text/csv", "attachment", "banner"); 

    var response = await client.SendEmailAsync(msg); 

stellte sich heraus, das war kein Duplikat Frage nach allem, da ich eine andere Art von Frage, die sich mit E-Mails über SendGrid senden. Der Dateiname funktioniert auch so wie er ist. Der Anruf an Server.MapPath ist für mich nicht notwendig.

Ich bin in der Lage, E-Mails mit Anhängen erfolgreich zu empfangen.