System.Net.Mail.SmtpException: 发送邮件失败。 ---> System.FormatException: Base-64 字符数组的无效长度。
用163的邮箱是不会出问题的,用了公司提供的邮箱就出现这个问题,贴出如下代码,求解决方案
public void sendMail(string host, int port, string mailAddress, string username, string pwd, string title, string content, List<string> sendTo,
           bool usePassword)
        {
            try
            {
                SmtpClient smtp = new SmtpClient(host, port);
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.EnableSsl = false;
                if (usePassword)
                    smtp.Credentials = new NetworkCredential(username, pwd);
                else
                    smtp.UseDefaultCredentials = true;
                MailMessage mm = new MailMessage();
                mm.Priority = MailPriority.High;
                mm.From = new MailAddress(username, mailAddress, System.Text.Encoding.UTF8);
                foreach (string toEmail in sendTo)
                {
                    mm.To.Add(toEmail);
                }
                mm.Subject = title; //邮件标题
                mm.SubjectEncoding = Encoding.UTF8;
                string con = EncodeString(content);
                Console.WriteLine(con);
                mm.Body = con;
                mm.BodyEncoding = System.Text.Encoding.UTF8;
                mm.IsBodyHtml = true;
                smtp.Send(mm);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
  
            }
        }

解决方案 »

  1.   

    http://topic.csdn.net/u/20100326/22/d76de6a9-f9ad-4b82-a576-53e0a6e2dcc8.html
      

  2.   

    EncodeString 这个方法里面干什么了
      

  3.   

    public string EncodeString(string content)
            {
                byte[] encrypted = Convert.FromBase64String(content);
                return System.Text.ASCIIEncoding.UTF8.GetString(encrypted);
            }
      

  4.   

    换成这样试试
    public string EncodeString(string content)
    {
        byte[] encrypted = Encoding.UTF8.GetBytes(content);
        return Convert.ToBase64String(encrypted);
    }
      

  5.   

    还是一样提示System.Net.Mail.SmtpException: 发送邮件失败。 ---> System.FormatException: Base-64 字符数组的无效长度。
      

  6.   

    mm.Body = content;
    直接赋值行不行
      

  7.   

    就是直接赋值不行才用到EncodeString方法的,呵