当前位置:编程学习 > C#/ASP.NET >>

邮件发送图片

请问用.NET 发送邮件,发送图片.
一打开邮箱就可以看到一张大图片

图片并不是以附件的形式发送.
因为以附件形式发送的话,
打开邮件只能看到小图,需要再点击一下

类似 foxMail 里面的插入图片.

需要怎么写 --------------------编程问答--------------------  
<img src="cid:123"> 使用cid:标记,表明图形是放在一个叫123的附件中的 
然后加入一个附件,指定为 
content-type: image/gif 
content-id: <123> 即上面那个123 
content-disposition: inline; filename="sdfsdf" filename是随便指定的 
content-transfer-encodinf: base64 --------------------编程问答-------------------- 还有一个可供参考
http://www.codeproject.com/KB/IP/Pop3MimeClient.aspx --------------------编程问答-------------------- 还有就是要怎么发送HTML格式的邮件
下面是我用HTML格式发送的代码
为什么QQ收到后是显示 源码
而163却收不到
        sendFrom = New MailAddress(Me.TxtSendForm.Text)
        Subject = Me.TxtMailMotif.Text
        If Subject.Trim = "" Then Subject = "无标题"
        Dim result As DialogResult
        If Subject = "" Then
            result = MessageBox.Show("邮件没有添加标题,不要标题吗?", _
            "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
        End If
        '判断该邮件是否具有标题
        If result = Windows.Forms.DialogResult.No Then Exit Sub
        '如果选择要添加标题,则退出过程等待添加标题

        For Each Lw As ListViewItem In lstMailList.Items
            Dim L As MailItemClass = Lw
            Try
                sendTo = New MailAddress(L.Mail)
                message = New MailMessage(sendFrom, sendTo)

                L.Status = "发送中..."
                LblHint.Text = "正在发送邮件至:" & L.Mail
                'message.To.Add(sendTo)
                'message.From = sendFrom                '设置邮件的发送目的地址和原址

                message.BodyEncoding = System.Text.Encoding.UTF8                '选择邮件发送的文本编码

                message.Subject = Subject                '设置邮件发送标题
        HtmlStringBuilder.Append(" </head>")

        HtmlStringBuilder.Append(" <body>")

        HtmlStringBuilder.Append("<table width=""600"" border=""0"" align=""center"" cellpadding=""0"" cellspacing=""0"" bordercolor=""#FFFFFF"">")

        HtmlStringBuilder.Append(" <tr>")

        HtmlStringBuilder.Append("  <td colspan=""2""><img src=""http://www.linguaphonenet.com/edm/08-Jan/banner.jpg"" alt=""lady"" width=""600""></td>")

        HtmlStringBuilder.Append("</tr>")

        HtmlStringBuilder.Append("</table>")

        HtmlStringBuilder.Append("</body>")

        HtmlStringBuilder.Append("</html>")
                message.Body = HtmlStringBuilder.tostring                '获取邮件发送的内容
                If Me.TxtAttachs.Text = "" Then
                Else
                    Attachs = New Net.Mail.Attachment(Me.TxtAttachs.Text)
                    message.Attachments.Add(Attachs)                    '判断是否具有附件,如果有则连带附件发送
                End If

                Select Case Me.ComProity.SelectedIndex '选择并设置邮件发送的优先级
                    Case 0
                        proity = MailPriority.Normal
                    Case 1
                        proity = MailPriority.High
                    Case 2
                        proity = MailPriority.Low
                End Select
                message.Priority = proity
                message.IsBodyHtml = True
                SendMail.Send(message)                '发送邮件

                System.Windows.Forms.Application.DoEvents()
                TextBox1.Text = TextBox1.Text & L.Mail & ":  邮件已经成功发送完毕。" & vbCrLf
                L.Status = "已发送"
                Dim Lg As New MailItemClass
                Lg.Mail = L.Mail
                Lg.Status = "成功"
                lstMailList2.Items.Add(Lg) '添加发送成功

            Catch

                TextBox1.Text = TextBox1.Text & L.Mail & ":  邮件没有发送成功!原因是:" & Err.Description
                L.Status = "失败:" & Err.Description
                Dim Lg As New MailItemClass
                Lg.Mail = L.Mail
                Lg.Status = "失败:" & Err.Description
                lstMailList3.Items.Add(Lg) '添加发送成功
                '获取可能发生意外的错误并通知用户
            End Try

--------------------编程问答-------------------- 呵呵.我重新帮你写了一个
//这个是生成信息

 protected void Button1_Click(object sender, EventArgs e)
        {
            QMail mail = new QMail();

            Attachment attachment = null;
            //File Name
            string fileName = string.Empty;
            string filePath = string.Empty;
            StringBuilder mailBody = new StringBuilder();
            mailBody.Append("content-type:base64");
            mailBody.Append("content-transfer-encodinf:");
            mailBody.Append("content-disposition:inline");
            mailBody.Append("filename:aa");
            //增加附件
            if (File1.Value != "")
            {
                filePath = this.File1.PostedFile.FileName;
                fileName = filePath.Substring(filePath.LastIndexOf("\\") + 1);
                //增加显示图片
                mailBody.Append("content-id:" + fileName);
                mailBody.Append("<img src='cid:" + fileName+"' />");
                attachment = new Attachment(filePath);              
            }
            //正文显示附件
            //<img src="cid:123"> 使用cid:标记,表明图形是放在一个叫123的附件中的 
            //然后加入一个附件,指定为 
            //content-type: image/gif 
            //content-id: <123> 即上面那个123 
            //content-disposition: inline; filename="sdfsdf" filename是随便指定的 
            //content-transfer-encodinf: base64

            


            //Send Mail
            mail.MailSend("minqiang.zhang@metinform.cn", "minqiang.zhang@metinform.cn",
                "minqiang.zhang@metinform.cn", "演示如果在正文显示附件", mailBody.ToString(), attachment, "");

        }


//下面是microsoft自带的mail
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net;
using System.IO;
namespace STS.MailSystem.Common
{
    public class QMail
    {
        /// <summary>
        /// 描述:Email发送通用函数
        /// </summary>
        /// <param name="from">发件人</param>
        /// <param name="to">收件人(多个收件人以逗号隔开)</param>
        /// <param name="subject">主题</param>
        /// <param name="text">内容</param>
        /// <param name="attch">附件</param>
        /// <returns></returns>
        public string MailSend(string from, string to, string cc, string subject, string text, Attachment attch, string priority)
        {
            MailMessage message = new MailMessage(from, to);
            message.CC.Add(cc);
            message.Subject = subject;
            message.Body = text;
            

            //message.CC.Add(new MailAddress(from)); //超送给自己
            //message.Bcc.Add(new MailAddress(""));

            if (attch != null)
            {
                Attachment data = attch;
                message.Attachments.Add(data);
            }

            message.BodyEncoding = System.Text.Encoding.UTF8;//编码方式
            switch (priority.ToUpper())
            { 
                case "HIGH":
                    message.Priority = MailPriority.High;//优先级
                    break;
                case "NORMAL":
                    message.Priority = MailPriority.Normal;//优先级
                    break;
                case "LOW":
                    message.Priority = MailPriority.Low;//优先级
                    break;
                default:
                    message.Priority = MailPriority.Normal;//优先级
                    break;
            }
            
            message.IsBodyHtml = true;//是否是html格式
            SmtpClient client = new SmtpClient();//不同情况更改

            //client.Credentials = CredentialCache.DefaultNetworkCredentials;//匿名认证
            
            
            try
            {
                client.Send(message);
                return "1";
            }
            catch (Exception e)
            {
                
                return e.Message;
            }
            
        }

        

    }
}

--------------------编程问答-------------------- 第一,打开邮件会不会显示附件中的图片要看具体的接收邮件的客户端
第二,你不是以附件形式发送图片那就必须使用超文本模式发送邮件 --------------------编程问答-------------------- mqcan

Qmail 是什么, --------------------编程问答--------------------
引用 1 楼 mqcan 的回复:
<img src="cid:123"> 使用cid:标记,表明图形是放在一个叫123的附件中的
然后加入一个附件,指定为
content-type: image/gif
content-id: <123> 即上面那个123
content-disposition: inline; filename="sdfsdf" filename是随便指定的
content-transfer-encodinf: base64


我试过了.
这种方法好像不行. --------------------编程问答-------------------- <<如何在mail的正文显示图片>>
这个方法好像管用,但是不知道怎么使用,也不知道怎么安装MicroSoft自带的System.Net.Mail 组件http://www.cnblogs.com/mqcan/archive/2008/06/02/1212157.html

我想直接在Outlook打开邮件就可以显示图片.

而不是以附件的形式发送,如果是附件形式发送就会出现邮件最底部,而且outlook还会显示有附件.
如果是以html方式发送有图片的邮件,邮件主题下面就会显示  "阻止了部分图片以帮助防止发送者识别你的计算机.单击此处下载图片." 的提示框.
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,