如何从本地asp.net 4.0 Web应用程序发送支持图像的电子邮件

时间:2014-12-26 08:50:56

标签: email c#-4.0 ckeditor html-email asp.net-4.0

我制作了一个电子邮件管理系统,可以发送电子邮件并将电子邮件另存为草稿。我有一个更大的问题,发送带图像的电子邮件。我尝试了很多时间,但我还没有完成它。我只想将图像启用电子邮件发送到发件人地址。

这里我将我的电子邮件正文作为ntext数据类型存储到sql server,之后我只发送到邮件地址。在这里,我把我的表格屏幕截图一般的想法。我如何从ckeditor和linqpad检索电子邮件正文如何存储它。

这是我检索电子邮件正文的形式:

enter image description here

这是linqpad屏幕截图我如何将电子邮件正文存储到db:

enter image description here

现在只关注最后一个标题"图像已启用电子邮件"它现在有图像的电子邮件正文我只想要这个图像来检索电子邮件。

我还包括最终收件人的最终输出收到此表单的电子邮件:

enter image description here

这是来自gmail的原始邮件视图:

From: shalinbgajjar7008@gmail.com 
To:  
Date: Tue, 23 Dec 2014 19:30:58 +0530 
Subject: Image Enabled Email 

<table border="0" cellpadding="1" cellspacing="1" style="width: 700px;">
    <tbody>
        <tr>
            <td>
                <img alt="" src="/NewsLetter/images/Winter.jpg" style="width: 500px; height: 375px;" /></td>
            <td>
                <h3>
                    <span style="font-family:tahoma,geneva,sans-serif;"><span style="font-size:28px;">This is Image Enabled Mail For Testing </span></span></h3>
            </td>
        </tr>
    </tbody>
</table>
<p>
     </p>

我只是希望我在电子邮件正文中设置的图像应该对收件人的电子邮件地址可见。

   -------------------- Upadted ------------------------

这里我将我的代码放在从Web应用程序发送电子邮件中:

public static void SendReplyMail(string subject, string Host, string Port, string email, string password, string emails, string ccs, string bccs, string body, List<string> file_names)
    {
        MailMessage msg = new MailMessage();
        System.Net.Mail.SmtpClient client = Util.GetSmtpClient();
        msg.IsBodyHtml = true;
        client.Host = Host;
        System.Net.NetworkCredential basicauthenticationinfo = new System.Net.NetworkCredential(email, password);
        client.Port = int.Parse(Port);
        client.EnableSsl = true;
        client.UseDefaultCredentials = false;
        client.Credentials = basicauthenticationinfo;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        msg.From = new MailAddress(email);
        if (emails.Contains(","))
        {
            string[] values1 = emails.Split(',');
            for (int i = 0; i < values1.Length; i++)
            {
                values1[i] = values1[i].Trim();
            }
            foreach (var item1 in values1)
            {
                msg.To.Add(new MailAddress(item1.ToString()));
            }
        }
        else
        {
            msg.To.Add(new MailAddress(emails));
        }
        if (!string.IsNullOrEmpty(ccs))
        {
            if (ccs.Contains(","))
            {
                string[] values2 = ccs.Split(',');
                for (int i = 0; i < values2.Length; i++)
                {
                    values2[i] = values2[i].Trim();
                }
                foreach (var item2 in values2)
                {
                    msg.CC.Add(new MailAddress(item2.ToString()));
                }
            }
            else
            {
                msg.CC.Add(new MailAddress(ccs));
            }
        }
        if (!string.IsNullOrEmpty(bccs))
        {
            if (bccs.Contains(","))
            {
                string[] values3 = bccs.Split(',');
                for (int i = 0; i < values3.Length; i++)
                {
                    values3[i] = values3[i].Trim();
                }
                foreach (var item3 in values3)
                {
                    msg.Bcc.Add(new MailAddress(item3.ToString()));
                }
            }
            else
            {
                msg.Bcc.Add(new MailAddress(bccs));
            }
        }
        msg.Subject = subject;
        msg.Body = body;
        using (DataClassesDataContext db = new DataClassesDataContext())
        {
            for (int i = 0; i < file_names.Count; i++)
            {
                Attachment mailAttachment = new Attachment(Path.Combine(HttpRuntime.AppDomainAppPath, "EmailFiles/" + db.Files.Where(f => f.File_name.Equals(file_names[i].Substring(0,15))).Select(f => f.File_name + f.File_ext).SingleOrDefault().ToString()));
                msg.Attachments.Add(mailAttachment);
            }
        }
        client.Send(msg);
    }

当html body有图像标记时,有些人可以知道如何编写图像二进制写入。 请帮帮我......

1 个答案:

答案 0 :(得分:3)

https://www.emailarchitect.net/easendmail/kb/vbnet.aspx?cat=8

看起来它就像你想做的那样。