日期:2014-05-18  浏览次数:20344 次

发邮件的问题
1.发邮件的方法 反复测试后 不能发送了 怎么解决


2.发大量邮件时,如:要发1000个,用线程怎么处理,有一个方法,要传的参数的

------解决方案--------------------
mari
------解决方案--------------------
分200次发
------解决方案--------------------
首先添加命名空间
using System.Net.Mail;
using System.Data.SqlClient;
 
代码其实很简单,当然我这个功能比较简单
就是一个单击事件
C# code

protected void btn_send_Click(object sender, EventArgs e)
    ...{
        MailMessage message = new MailMessage();
        //获取发送者地址
        message.From = new MailAddress(tbx_address.Text.Trim());
        //获取主题
        message.Subject = tbx_subject.Text.Trim();
        //获取发送邮件主题
        message.Body = we_content.Text.Trim();
        message.IsBodyHtml = true;
        //设置数据库链接
        SqlConnection conn = new SqlConnection(getstring());
        conn.Open();
        //数据查询用的是存储过程
        SqlCommand cmd = new SqlCommand("SelectEmail", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter dutyparameter = cmd.Parameters.Add("@MemberDuty", SqlDbType.NVarChar, 20);
        dutyparameter.Value = ddl_selectemail.SelectedValue;
        SqlDataReader dr = cmd.ExecuteReader();
        //执行查询获得要发往的邮件地址
        while (dr.Read())
/ContractedSubBlock.gif" />        
...{
            message.To.Add(dr["MemberEmail"].ToString());
           
        }
        conn.Close();
        SmtpClient client = new SmtpClient();
        client.Send(message);
        lbl_info.Visible = true;
        lbl_info.Text = "发送成功";
       
    }

另外在web。config设置发送邮件的远程服务器连接

代码如下



<system.net>
  <mailSettings>
    <smtp>
      <network host="smtp.163.com" port="25" userName="你的163帐号" password="你的密码" />
      </smtp>
    </mailSettings>
  </system.net

------解决方案--------------------
不能发送的原因是什么?把异常贴出来看看
如果是调用第三方的邮件服务器发送话 如smtp.163.com
最好控制下发送的频率 比如1分钟一封 
太过于频繁会被邮件服务器拒绝的

------解决方案--------------------
不能发邮件你还不能debug? 有什么错误找原因啊

发1000次,相同的邮件不能把收件人都放一起吗,如果怕互相看到,BCC密送不就行了
------解决方案--------------------
C# code

using System.Threading;

 Thread thread = new Thread(new ThreadStart(SendEmail));
            if (thread.ThreadState != System.Threading.ThreadState.Running)
            {
                thread.Start();
            }
  private void SendEmail()
        {

//发送邮件

  System.Threading.Thread.Sleep(3000); //进程休眠。



}

------解决方案--------------------
没用过发邮件的
------解决方案--------------------
探讨
1.发邮件的方法 反复测试后 不能发送了 怎么解决


2.发大量邮件时,如:要发1000个,用线程怎么处理,有一个方法,要传的参数的

------解决方案--------------------
C# code
protected void btn_send_Click(object sender, EventArgs e)
    ...{
        MailMessage message = new MailMessage();
        //获取发送者地址
        message.From = new MailAddress(tbx_address.Text.Trim());
        //获取主题
        message.Subject = tbx_subject.Text.Trim();
        //获取发送邮件主题
        message.Body = we_content.Text.Trim();
        message.IsBodyHtml = true;
        //设置数据库链接
        SqlConnection conn = new SqlConnection(getstring());
        conn.Open();
        //数据查询用的是存储过程
        SqlCommand cmd = new SqlCommand("SelectEmail", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter dutyparameter = cmd.Parameters.Add("@MemberDuty", SqlDbType.NVarChar, 20);
        dutyparameter.Value = ddl_selectemail.SelectedValue;
        SqlDataReader dr = cmd.ExecuteReader();
        //执行查询获得要发往的邮件地址
        while (dr.Read())
/ContractedSubBlock.gif&q