问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

asp.net 发邮件乱码,该怎么解决

发布网友 发布时间:2022-04-24 06:28

我来回答

1个回答

热心网友 时间:2022-04-27 10:08

发送邮件的代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using jmail;
using System.IO;
using System.Net.Mail;
using System.Net;
using System.Net.Mime;
public partial class getemail : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void sendEmail_Click(object sender, EventArgs e)
    {
        #region
        SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
       
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtpClient.Credentials = new NetworkCredential("likeshan168@gmail.com", "likeshannihao168");
        MailMessage mail = new MailMessage("likeshan168@gmail.com", emailRec.Text.Trim());
        mail.Subject = subject.Text.Trim();
        mail.SubjectEncoding = System.Text.Encoding.UTF8;
        mail.Body = emailbody.Text.Trim();
        mail.BodyEncoding = System.Text.Encoding.UTF8;
        smtpClient.EnableSsl = true;
        string attafile = fileUpload.PostedFile.FileName;
        if (!string.IsNullOrEmpty(attafile))//这里是添加附件的作用
        {
            #region//方法一
            //string filename = Path.GetFileName(attafile);
            //fileUpload.PostedFile.SaveAs(Server.MapPath(filename));
            //System.Net.Mail.Attachment atta = new System.Net.Mail.Attachment(Server.MapPath(filename));
            //mail.Attachments.Add(atta);
            #endregion
            #region//方法二

            //string filepath = Server.MapPath("~/UploadFile/Files");
            //string extName = Path.GetExtension(attafile);
            //if (!Directory.Exists(filepath))
            //{
            //    Directory.CreateDirectory(filepath);
            //}
            //filepath = filepath + "\" + DateTime.Now.ToString("yyyyMMddhhMMssffff") + extName;
            //fileUpload.PostedFile.SaveAs(filepath);

            //System.Net.Mail.Attachment atta = null;
            //if (extName == ".zip" || extName == ".rar")
            //{
            //    atta = new System.Net.Mail.Attachment(filepath, MediaTypeNames.Application.Zip);
            //}
            //else
            //{
            //    atta = new System.Net.Mail.Attachment(filepath, MediaTypeNames.Application.Octet);
            //}
           
           
            #endregion
            #region//方法三
            string filepath = Server.MapPath("~/UploadFile/Files");
            string extName = Path.GetExtension(attafile);
            if (!Directory.Exists(filepath))
            {
                Directory.CreateDirectory(filepath);
            }
            filepath = filepath + "\" + DateTime.Now.ToString("yyyyMMddhhMMssffff") + extName;
            fileUpload.PostedFile.SaveAs(filepath);

            System.Net.Mail.Attachment atta = null;
            if (extName == ".zip" || extName == ".rar")
            {
                atta = new System.Net.Mail.Attachment(new FileStream(filepath, FileMode.Open, FileAccess.Read), attafile, MediaTypeNames.Application.Zip);
            }
            else
            {
                atta = new System.Net.Mail.Attachment(new FileStream(filepath, FileMode.Open, FileAccess.Read), attafile, MediaTypeNames.Application.Octet);
            }
            mail.Attachments.Add(atta);
            #endregion
        }
        mail.Priority = MailPriority.Normal;
        try
        {
            smtpClient.Send(mail);
            ClientScript.RegisterClientScriptBlock(Page.GetType(), "tip1", "alert('发送成功!')", true);
        }
        catch (Exception ex)
        {
            ClientScript.RegisterClientScriptBlock(Page.GetType(), "tip2", "alert('" + ex.Message + "!')", true);
        }
        #endregion
    }
}
接受邮件的代码
<%@ WebHandler Language="C#" Class="getEmail" %>

using System;
using System.Web;
using jmail;
using System.Text;
public class getEmail : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        //context.Response.ContentType = "text/plain";
        POP3Class popClient = new POP3Class();
        try
        {
            popClient.Connect("likeshan168@163.com", "likeshannihao168", "pop.163.com", 110);
            if (popClient != null)
            {
                if (popClient.Count > 0)//收件数目
                {
                    StringBuilder sb = new StringBuilder();
                    Message msg = null;
                    for (int i = 0, len = popClient.Count; i < len; i++)
                    {
                        msg = popClient.Messages[i + 1];
                        string msgid = popClient.GetMessageUID(i + 1);//029DCA8D131AA92586C8FB6CB61B627B0E00000000000001(邮件在服务器中的唯一标识)
                        int c = popClient.GetLastUnreadMessage();
                        msg.ISOEncodeHeaders = false;
                        sb.Append("<p>时间:" + msg.Date.ToString() + "</p>");
                        sb.Append("<p>发件人:" + msg.From + "</p>");
                        string substr = msg.Headers.GetHeader("Subject");//只要有中文就会进行base64的编码,如果是英文的话,就不会进行base64的编码
                        if (substr.Contains("utf-8"))
                        {
                            substr = DecodeStr(substr.Split('?')[3], "utf-8");//=?utf-8?B?5pyJ5LiA5Liq5rWL6K+V?=
                        }
                        if (substr.Contains("gbk") || substr.Contains("GBK") || substr.Contains("GB2312"))
                        {
                            substr = DecodeStr(substr.Split('?')[3], "gbk");
                        }

                        sb.Append("<p>主题:" + substr + "</p>");
                        sb.Append("<p>内容:" + msg.Body + "</p>");
                        int attaCount = msg.Attachments.Count;
                        for (int j = 0; j < attaCount; j++)
                        {
                            sb.Append("<p>附件(" + (j + 1).ToString() + "):" + msg.Attachments[j].Name + "</p>");

                        }
                    }
                    context.Response.Write(sb.ToString());
                }
            }
        }
        catch (Exception ex)
        {
            context.Response.Write(ex.Message);
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
   
    public static string base64GbkDecode(string data)
    {
        string decode = "";
        byte[] bytes = Convert.FromBase64String(data);//先经过base64解码,在经过gbk2312解码
        try
        {
            decode = Encoding.GetEncoding("gb2312").GetString(bytes);
        }
        catch (Exception ex1)
        {
            return "Error in base64Encode" + ex1.Message;
        }
        return decode;
    }

    public static string base64Utf8Decode(string data)
    {
        string result = "";
        try
        {
            System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
            System.Text.Decoder utf8Decode = encoder.GetDecoder();//获取解码器
            byte[] todecode_byte = Convert.FromBase64String(data);//先经过base64解码,在经过utf-8解码
            int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);//多少个字符
            char[] decoded_char = new char[charCount];//字符字符数组
            utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);//解码到字符数组
            result = new String(decoded_char);
        }
        catch (Exception e)
        {
            return "Error in base64Encode" + e.Message;
        }
        return result;
    }

    //base64解码
    public static string DecodeStr(string allstr, string code)
    {
        //形如=?...?=是结束开始的标志
        //=?utf-8?B?5rWL6K+V5o6l5pS25pys6YKu5Lu26L+Z5piv5Li76aKY?=
        //=?gbk?B?suLK1L3TytXN4rK/08q8/tXiuPbKx9b3zOU=?=
        //返回的字符串
        string str = "";
        if (code == "gbk")
        {
            str = base64GbkDecode(allstr);
        }
        else if (code == "utf-8")
        {
            str = base64Utf8Decode(allstr);
        }
        return str;
    }
    //    string subjectStr = popMail.Messages[i].Headers.GetHeader("Subject");
    //subjectstr = DecodeStr(subjectallstr.Split('?')[3], “utf-8”);
    //再次申明下一定要用popMail.Messages[i].Headers.GetHeader(“Subject”)的形式,
    //如果原来页面用的是UTF-8编码popMail.Messages[i].Subject得到的将是直接经jmail解码后的乱码
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 .net发送邮件问题(在线等) 施工现场安全措施有哪些? C#.net 发邮件的问题 net发送邮件总是失败,不知道为什么 .net 邮件发送附件的问题 .net环境下五种邮件发 .net 邮件发送 .net发邮件问题? .net 发送邮件 .net发送邮件报错 怎么用.net做发送文档 图片 等几种形式的 .net的发展前景? .net发布时,如何发布成一个.exe的包。 瑜伽证怎么考啊? 关于.net发送邮件的问题,高手进!!! .net 发送(html网页)邮件 瑜伽证是怎么考的?我是瑜伽小白… 怎么考瑜伽证书? 利川凉粉的汤怎么做 FBI与一般警察有什么区别? 基坑保护措施有哪些? 如何实现在.Net环境下发送大量邮件或发送手机短信 .net 短信发送怎么调用接口? 施工作业过程中有哪些危害因素以及需要采取的安全防护防范措施? .NET 自动发送邮件程序 如何做好个人在施工过程中的安全防护工作 ASP.NET发送邮件一定要指定一个作为发送邮件的邮-箱账号和密码么? 你自己想想吧不聊了你明天还要上班好好干加油什么意思? 男生对女生说:不聊了吧,睡觉去,以免精尽人忘。 是什么意思 那要不不聊了吧是那样意思 我跟一个男生聊天 每当我说到我还没吃或我在吃饭 他就跟我说你吃吧 不聊了 是什么意思啊! 好吧,不聊了,明天要上班的, 这句话有什么特殊含义 她说好了不聊了,怎么回 女生和男生说,不聊了,这样你就不会怀疑我有目的了,男生说行吧,男生是什么意思? 对于女生说“不和你聊了”大家是如何应对的? 我跟一个男生聊天 每当我说到我还没吃或我在吃饭 他就跟我说你吃吧 不聊了 是什么意思啊!都是我主动 手机百度贴吧不能聊天,怎么办 一个男孩对一个女孩说,那就不聊了吧,女孩突然哭了是为什么? 哈哈那就不聊了吧 相亲后女方说很晚先睡吧不聊了她还会和我发展吗