asp.net jmail 接收

场景:asp.net运用jmail接收外部邮件

asp.net使用jmail接收外部邮件
最近我们公司要接收外部邮件
功能都差不多都实现了,不过一个很奇怪的问题就是设置了163的邮箱之后,但是我用jamil接受到的邮件并不会全部的接收
很多邮件都会接收失败!例如
service@51cto.com,info@mail1.dianping.com,很多企业邮件都接收不了,但是个别的有可疑接收,我目前只可以接收到卓越网的企业邮件,但是如果是163的邮件又可以接受的到,就连QQ邮箱都接收不到,请问jamil接收外部邮件还需要什么特别的设置吗??? 请大家看看!!!谢谢.....

方法在这里面
  private bool webf_pop3_mail(DateTime dt_pop, string ls_server, int in_pop, string user, string password, ref string arg_msg)
  {
  bool rslt = true;
  jmail.POP3Class popmail = new jmail.POP3Class();//建立收邮件对象 
  jmail.Message mailmessage; //建立邮件信息接口 
  jmail.Attachments atts;//建立附件集接口 
  jmail.Attachment att;//建立附件接口 
  popmail.Connect(user, password, ls_server, in_pop);
  string ls_sql = "select isnull(max(pop_senddate),0) as date_time from oa_pop_msg where pop_inmail='" + user.Trim() + "' and pop_opid=" + Session["opid"].ToString().Trim() + " and pop_issend=0 ";
  DataTable dt = cs_con.Select(ls_sql, null, ref arg_msg).Tables[0];
  DateTime d_time = dt_pop;
  if (dt.Rows[0]["date_time"].ToString().Trim() != "1900-1-1 0:00:00")
  {
  d_time = Convert.ToDateTime(dt.Rows[0]["date_time"]);
  }
  int billid = 0;
  int num = 0;
  string mail_billid = "";
  if (popmail.Count > 0)
  {
  for (int i = 1; i <= popmail.Count; i++) //根据取到的邮件数量依次取得每封邮件 
  {
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(Convert.ToInt32(Application["timeoutSecond"]))))
  {
  try
  {
  mailmessage = popmail.Messages[i]; //取得一条邮件信息 
  string ls_msg_date = mailmessage.Headers.Text;
  if (mailmessage.Headers.Text.IndexOf("From:") - mailmessage.Headers.Text.IndexOf("Date:") - 12 > 0)
  {
  ls_msg_date = mailmessage.Headers.Text.Substring(mailmessage.Headers.Text.IndexOf("Date:") + 5, mailmessage.Headers.Text.IndexOf("From:") - mailmessage.Headers.Text.IndexOf("Date:") - 12).Trim();
  }
  else
  {
  ls_msg_date = mailmessage.Headers.Text.Substring(mailmessage.Headers.Text.IndexOf("Date:") + 5, mailmessage.Headers.Text.IndexOf("To:") - mailmessage.Headers.Text.IndexOf("Date:") - 12).Trim();
  }
  DateTime dt_date = Convert.ToDateTime(ls_msg_date);
  if (dt_date > d_time)
  {

  if (!new_id.tryGetNewID("oa_pop_msg", "pop_billid", ref billid, ref arg_msg))
  {
  rslt = false;
  arg_msg = "接收是ID参生失败!";
  scope.Dispose();
  goto ext_webf_pop3_mail;
  }
  atts = mailmessage.Attachments; //取得该邮件的附件集合 
  mailmessage.Charset = "UTF-8"; //设置邮件的编码方式 
  mailmessage.Encoding = "base64"; //设置邮件的附件编码方式 
  mailmessage.ISOEncodeHeaders = false; //是否将信头编码成iso-8859-1字符集 

  string ls_yxjb = mailmessage.Priority.ToString(); //邮件的优先级 
  string ls_fsyx = mailmessage.From; //邮件的发送人的信箱地址 
  string ls_fsr = mailmessage.FromName; //邮件的发送人 
  // string ls_yjzt =Server.HtmlDecode( mailmessage.Subject); //邮件主题 
  string ls_yjzt = mailmessage.Subject;
  string ls_yjnr = "";
  if (mailmessage.HTMLBody != null)
  {
  ls_yjnr = mailmessage.HTMLBody; //邮件内容 
  }
  string ls_yjdx = mailmessage.Size.ToString(); //邮件大小 
  string ls_h = mailmessage.Headers.ToString();
  if (!webf_insert_msg(billid, Convert.ToInt32(Session["opid"]), ls_yjzt.Trim(), ls_yjnr.Trim(), dt_date, ls_fsyx, System.DateTime.Now, user.Trim(), atts.Count, ref arg_msg))
  {
  rslt = false;
  arg_msg = ls_yjzt + "邮件接收失败!";
  scope.Dispose();
  goto ext_webf_pop3_mail;
  }
  for (int j = 0; j < atts.Count; j++)
  {
  att = atts[j]; //取得附件 
  string attname = att.Name; //附件名称 
  int file_size = att.Size;
  string path = Server.MapPath("../uploadfile/") + Session["opid"].ToString().Trim() + "_" + System.DateTime.Now.Millisecond.ToString().Trim() + "_" + attname.Replace("/", "");
  att.SaveToFile(path); //上传到服务器 
  int get_id = 0;
  if (!new_id.tryGetNewID("permit_msg_image", "billid", ref get_id, ref arg_msg))
  {
  rslt = false;
  arg_msg = ls_yjzt + "邮件接收附件失败!";
  scope.Dispose();
  goto ext_webf_pop3_mail;
  }
  Byte[] filedata = new Byte[file_size];
  System.IO.FileInfo fi = new System.IO.FileInfo(path);
  System.IO.FileStream fs = fi.OpenRead();
  fs.Read(filedata, 0, file_size);
  fs.Close();
  if (!webf_insert(get_id, billid, System.DateTime.Now, attname, attname.Substring(attname.LastIndexOf(".") + 1), file_size, 6, filedata, ref arg_msg))
  {
  rslt = false;
  arg_msg = ls_yjzt + "邮件接收附件失败!";
  scope.Dispose();
  goto ext_webf_pop3_mail;
  }
  if (File.Exists(path))
  {
  File.Delete(path);
  }
  }
  scope.Complete();
  }
  else
  {
  scope.Dispose();
  goto ext_webf_pop3_mail;
  }
  }
  catch
  {
  arg_msg = "邮件接收失败!";
  num++;
  mail_billid = mail_billid + ";第" + i + "条";
  scope.Dispose();
  }
  }
  }
  ext_webf_pop3_mail: ;
  att = null;
  atts = null;
  }
  else
  {
  arg_msg = "没有新邮件!";
  }
  popmail.Disconnect();
  popmail = null;
  if (num > 0)
  {
  arg_msg = "邮箱" + user + ",接收中有" + num.ToString() + "条接收失败,分别为" + mail_billid + "";
  }
  return rslt;
  }

------解决方案--------------------
不是技术的原因。而是反垃圾邮件机制。

注意做反向解析,避免ip和domain被运营商加入黑名单。

和被block的邮件服务商联系,寻求帮助。
------解决方案--------------------
JMAIL免费版本的功能是受限制的啦!