Wie sende ich eine Excel-Datei per E-Mail?

Ich habe eine excel-Datei (Excel 2003 /xls-format) und ich möchte per E-Mail versenden mit c#.
Mein code senden erfolgreich, aber wenn ich versuche, öffnen Sie die Antwortdatei, es scheint codiert zu Unrecht.

Beispiel hier ist die Antwort, mit dem Namen:

=_utf-8_B_RWxzesOhbW9sw6FzXzIwMTJfMTBfmtzf.dat

Und hier ist die Antwort, die Datei selbst:

=?utf-8?B?VEdWdmJIWmhjMkZ1Wk1Pelh6UXlYekZmpz0ncia9p3v0zi04p0i/VGtW?=\
\ =?utf-8?B?TlgwZFRXaTU0YkhNPT89?=" Content-Transfer-Encoding: base64
Content-Disposition: attachment

0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAApgadap7/CQAGAAAAAAAAAAAAAAABAAAA
AQAAAAAAAAAAEAAAIwAAAAEAAAD+////AAAAAAAAAAD/////////////////////
////////////////////////////////////////////////////////////////
//////////////////////////////....

Hier ist mein code-fragment:

...
var attachment = new Attachment(WriteFileToMemory("fileFullPath"), "fileName.xls");
attachment.ContentType = new ContentType("application/vnd.ms-excel");
attachmentCollection.Add(attachment);
...


private Stream WriteFileToMemory(string filePath)
{
    var memoryStream = new MemoryStream();
    _openedStreams.Add(memoryStream);
    using (var file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        var bytes = new byte[file.Length];
        file.Read(bytes, 0, (int) file.Length);
        memoryStream.Write(bytes, 0, (int) file.Length);
        file.Close();
    }
    memoryStream.Position = 0;
    return memoryStream;
}

Wie kann ich die Anlage encoding-Typ und die Kodierung sollte ich mit Excel-Dateien?

Bitte helfen Sie mir dieses problem zu lösen.
Vielen Dank im Voraus.

  • Warum gehst du nicht tun: new Attachment( new FileStream("path", FileMode.Open, FileAccess.Read), "fileName.xls") ?
  • Ja, du hast Recht. Jetzt benutze ich Ihre Lösung um die Datei zu laden, aber das problem ist immer noch das gleiche. Sie können die E-mail senden, aber die Codierung der excel-Datei falsch ist.
InformationsquelleAutor ZYD | 2012-11-04
Schreibe einen Kommentar