ASP.NET Senden Sie Bild-Anhang Mit E-Mail Ohne zu Speichern Auf Dateisystem

Ich versuche ein Formular erstellen, senden Sie eine E-Mail mit angehängtem Bild und bin laufen in einige Probleme. Die form, die ich am erstellen ist ziemlich groß, so habe ich eine kleine test-form für die Zwecke dieser Frage. Die E-Mail senden und die Anlage vorhanden ist, auf die E-Mail, aber das Bild ist beschädigt oder sowas, da es nicht sichtbar ist.

Auch..

Ich nicht wollen, um das Bild zu speichern auf das Dateisystem. Sie denken vielleicht, es ist verworren, nehmen Sie die image-Datei aus den fileupload zu einem Bach, aber dies ist aufgrund der Tatsache, dass die wirkliche form, die ich arbeite, wird es erlauben, mehrere Dateien Hinzugefügt werden, die über eine single-fileupload und wird gespeichert in der session, damit die Bilder nicht aus dem fileupload-Steuerelement direkt auf "Absenden".

Datei: TestAttachSend.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestAttachSend.aspx.cs" Inherits="TestAttachSend" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <h1>Send Email with Image Attachment</h1>

            Email Address TO:  <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox><br />
            Attach JPEG Image: <asp:FileUpload ID="fuImage" runat="server" /><br />

            <br />

            <asp:Button ID="btnSend" runat="server" Text="Send" onclick="btnSend_Click" /><br />

            <br />

            <asp:label ID="lblSent" runat="server" text="Image Sent!" Visible="false" EnableViewState="false"></asp:label>
        </div>
        </form>
    </body>

    </html>

Datei: TestAttachSend.aspx.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.IO;

public partial class TestAttachSend : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSend_Click(object sender, EventArgs e)
    {
        if (fuImage.HasFile && fuImage.PostedFile.ContentType == System.Net.Mime.MediaTypeNames.Image.Jpeg)
        {
            SmtpClient emailClient = new SmtpClient();
            MailMessage EmailMsg = new MailMessage();

            EmailMsg.To.Add(txtEmail.Text.Trim());
            EmailMsg.From = new MailAddress(txtEmail.Text.Trim());
            EmailMsg.Subject = "Attached Image";
            EmailMsg.Body = "Image is attached!";

            MemoryStream imgStream = new MemoryStream();
            System.Drawing.Image img = System.Drawing.Image.FromStream(fuImage.PostedFile.InputStream);
            string filename = fuImage.PostedFile.FileName;

            img.Save(imgStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            EmailMsg..Attachments.Add(new Attachment(imgStream, filename, System.Net.Mime.MediaTypeNames.Image.Jpeg));

            emailClient.Send(EmailMsg);

            lblSent.Visible = true;

        }
    }
}

InformationsquelleAutor KGO | 2010-04-13

Schreibe einen Kommentar