none
C#怎么发电子邮件 RRS feed

  • 问题

  • 本人新手,做个项目,有密码找回功能,需要发用户电子邮件

    baidu 搜索得列子要填写发邮件人得电子信箱和密码。但是写了后就是发不出去老出错

    大家有发电子邮件得代码么

    也可以联系QQ:253109707

    2010年4月7日 11:08

答案

  • Hi,

    需要有client.EnableSsl

    public static void SendMail(string message, string email, string subject)
            {
                MailMessage mm = new MailMessage();
                mm.From = new MailAddress("xxx@hotmail.com"); //你漏了放
                mm.To.Add(new MailAddress(email));
                mm.Subject = subject;
                mm.Body = message;
                mm.IsBodyHtml = true;
                mm.Priority = MailPriority.High;
                SmtpClient client = new SmtpClient("smtp.live.com", 25);
                client.EnableSsl = true; //需要这
                client.Send(mm);
            }

     

    先尝试寄给自己先,看能吗。如能再试qq.

    SendMail("Testing", "xxx@hotmail.com", "Testing");

     

    2010年4月9日 11:09
  • 楼主你好,

    我上面的例子应该是可以的,我刚才测试了下gmail的也可以。代码可以参考下面的例子。

    你可以申请一个gamil试试。

      <system.net>
        <mailSettings>
          <smtp from="xxx@gmail.com">
            <network host="smtp.gmail.com" port="587" userName="xxx@gmail.com" password="???" />
          </smtp>
        </mailSettings>
      </system.net>

    上面端口号要注意。你自己设置其它的邮箱的时候得确定端口号。

     public void SendMail(string message, string email, string subject)
        {
            MailMessage mm = new MailMessage();
            mm.To.Add(new MailAddress(email));
            mm.Subject = subject;
            mm.Body = message;
            mm.IsBodyHtml = true;
            mm.Priority = MailPriority.High;
            SmtpClient client = new SmtpClient();
            client.EnableSsl = true;
            client.Send(mm);
        }
    上面加了个client.EnableSsl = true;是根据邮箱的需求,有些邮箱要求启用这个,有的没要求。

    Microsoft Online Community Support
    2010年4月12日 2:03
  •             SmtpClient smtpClient = new SmtpClient();
                smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;         //邮件发送方式
                smtpClient.Host = serverHost;                                                              //指定SMTP服务器 例如: serverHost = "smtp.sina.com"
                smtpClient.Credentials = new System.Net.NetworkCredential(serverEmail, serverPassword);//用户名和密码 serverEmail = "服务邮箱名称" serverPassword=“邮箱密码”

      
                String body = “邮件内容”;

                MailMessage mailMessage = new MailMessage(serverEmail, email.Value.Trim()); //email = "被发送人的邮箱"
                mailMessage.Subject = "欢迎注册";//主题
                mailMessage.Body = body;//内容
                mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//正文编码
                mailMessage.IsBodyHtml = true;//设置为HTML格式
                mailMessage.Priority = MailPriority.High;//优先级

                try
                {
                    smtpClient.Send(mailMessage);
                    return true;
                }
                catch (Exception ex)
                {
                    Log4net.saveError(ex.Message);
                    return false;
                }                                                            ps:你还要看下邮箱有没有开启smtp服务

    2010年4月10日 15:33

全部回复

  • Hi,

    两种方法

    1. System.Web.Mail (.net 1)
    2. System.Net.Mail (.net 2 以上,较好用)
    http://blog.sina.com.cn/s/blog_48275c8801009zfo.html
    2010年4月7日 11:18
  • 等了好长时间哦  谢谢你哈·我去看看代码

    2010年4月7日 11:21
  •  public void SendMail()
        {
            string mailto = "253109707@qq.com";
            string mailfrom = "6305263@163.com";
            System.Net.NetworkCredential credential = new System.Net.NetworkCredential("6305263", "密码");
            SmtpClient smtp = new SmtpClient("smtp.company.com");
            smtp.Credentials = credential;

            MailMessage message = new MailMessage(mailfrom, mailto);
            message.SubjectEncoding = System.Text.Encoding.UTF8;
            message.BodyEncoding = System.Text.Encoding.UTF8;
            message.Subject = "subject here";
            message.Body = "body here";
            smtp.Send(message);
            message.Dispose();
        }

    这里得信息都怎么填写呀

    我没看明白,写了一次还没发出去 汗··

     

    2010年4月7日 11:30
  • Hi,

    你需要填入你的SMTP,如你用hotmail

    string mailfrom = "错觉@hotmail.com";
    System.Net.NetworkCredential credential = new System.Net.NetworkCredential("错觉@hotmail.com", "密码"); SmtpClient smtp = new SmtpClient("smtp.live.com");

     

    注:如果你的ISP封锁port25, 你需要用587

    smtp.Port = 587;

     

    2010年4月7日 13:02
  • 有高手解答下么?``

    2010年4月8日 0:17
  • 好像163的不行,你试试别的,而且smtp要用对应的,比如sina就是smtp.sina.com.cn


    http://feiyun0112.cnblogs.com/
    2010年4月8日 2:32
    版主
  • Hi,

    刚找到System.Net.Mail 有 bug。http://hi.baidu.com/smartcash/blog/item/650ffc1e5c211ac1a686695c.html

    我想需要用System.Web.Mail了。

     

    2010年4月8日 2:54
  • 有代码么·发下谢谢·本人新手突然遇见这问题好像对我太有挑战性了 = =~

    2010年4月8日 10:51
  • Hi,

    你的发件人地址是SMTP的地址(xxx@yyy.com)吗?

    yyy.com 通常一定要与smtp服务器一样,否则不给你发。

    2010年4月8日 12:08
  • 你好,

    刚好有个例子,你可以参考下。

    web.config配置:

     <system.net>
        <mailSettings>
          <smtp from="jobs@xxx.net">
            <network host="mail.xxx.net" port="25" userName="jobs@xxx.net" password="???" />
          </smtp>
        </mailSettings>
      </system.net>

    上面代码中jobs@xxx.net为你的邮箱名,mail.xxx.net为你的邮箱smtp服务器地址,password就不用说了。一般网站提供的邮箱都会告诉你smtp服务器地址的。

    你可以去你的邮箱服务商的网站查询。但是如果你使用公司提供的outlook 等有些公司会有限制,你可以找你们公司的网络管理员了解。如果是学习可以用gmail做测试。

    然后C#发送邮件:

      public void SendMail(string message, string email, string subject)
            {
                MailMessage mm = new MailMessage();
                mm.To.Add(new MailAddress(email));
                mm.Subject = subject;
                mm.Body = message;
                mm.IsBodyHtml = true;
                mm.Priority = MailPriority.High;
                SmtpClient client = new SmtpClient();
                client.Send(mm);
            }

    Microsoft Online Community Support
    2010年4月9日 2:35
  • 配置文件

    <system.net>
      <mailSettings>
       <smtp from="zsp6305263@hotmail.com">
        <network host="smtp.live.com" port="25" userName="zsp6305263@hotmail.com" password="密码XXXX" />
       </smtp>
      </mailSettings>
     </system.net>

    C#代码

       public void SendMail(string message, string email, string subject)
        {
            MailMessage mm = new MailMessage();
            mm.To.Add(new MailAddress(email));
            mm.Subject = subject;
            mm.Body = message;
            mm.IsBodyHtml = true;
            mm.Priority = MailPriority.High;
            SmtpClient client = new SmtpClient();
            client.Send(mm);
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            SendMail("222222", "253109707@qq.com", "1111");
        }

    错误!!!

    SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为: 5.7.0 Must issue a STARTTLS command first

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    这个是不是要企业油箱还是怎么回事 他门说QQ油箱可以发 好象是stmp.qq.com

    我发了几次都不好用,后来看sanme98 回复

    string mailfrom = "错觉@hotmail.com";<br/>
    
    System.Net.NetworkCredential credential = new System.Net.NetworkCredential("错觉@hotmail.com", "密码");
    SmtpClient smtp = new SmtpClient("smtp.live.com");
    
    我就使用在这注册的号了 SMTP都是他写的 但是发还是有问题,用户名密码我肯定真实的了 发253109707@QQ.com
    是我SMPT错了(smtp.live.com),使用的就是这论坛的帐号`密码
     还是不能向QQ油箱不信息~
    2010年4月9日 8:27
  • qq邮箱不支持SMTP发送邮件
    2010年4月9日 10:49
  • Hi,

    需要有client.EnableSsl

    public static void SendMail(string message, string email, string subject)
            {
                MailMessage mm = new MailMessage();
                mm.From = new MailAddress("xxx@hotmail.com"); //你漏了放
                mm.To.Add(new MailAddress(email));
                mm.Subject = subject;
                mm.Body = message;
                mm.IsBodyHtml = true;
                mm.Priority = MailPriority.High;
                SmtpClient client = new SmtpClient("smtp.live.com", 25);
                client.EnableSsl = true; //需要这
                client.Send(mm);
            }

     

    先尝试寄给自己先,看能吗。如能再试qq.

    SendMail("Testing", "xxx@hotmail.com", "Testing");

     

    2010年4月9日 11:09
  • 邮箱不可用。 服务器响应为: 5.7.3 Requested action aborted; user not authenticated

    还是不行呀 晕 辛苦你了 可能我油箱有问题么 是不是的企业油箱呀 我就使用hotmail了

    2010年4月10日 2:15
  • 同样的代码,我用我自己的英文hotmail没问题。已经收到mail。

    从服务器给的响应,应该是username 或 password不对。

    试看用游览器login,看是不是忘了密码吗?

    还有在web.config或代码,不要用defaultcredential=true。

    2010年4月10日 11:33
  •             SmtpClient smtpClient = new SmtpClient();
                smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;         //邮件发送方式
                smtpClient.Host = serverHost;                                                              //指定SMTP服务器 例如: serverHost = "smtp.sina.com"
                smtpClient.Credentials = new System.Net.NetworkCredential(serverEmail, serverPassword);//用户名和密码 serverEmail = "服务邮箱名称" serverPassword=“邮箱密码”

      
                String body = “邮件内容”;

                MailMessage mailMessage = new MailMessage(serverEmail, email.Value.Trim()); //email = "被发送人的邮箱"
                mailMessage.Subject = "欢迎注册";//主题
                mailMessage.Body = body;//内容
                mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//正文编码
                mailMessage.IsBodyHtml = true;//设置为HTML格式
                mailMessage.Priority = MailPriority.High;//优先级

                try
                {
                    smtpClient.Send(mailMessage);
                    return true;
                }
                catch (Exception ex)
                {
                    Log4net.saveError(ex.Message);
                    return false;
                }                                                            ps:你还要看下邮箱有没有开启smtp服务

    2010年4月10日 15:33
  • 楼主你好,

    我上面的例子应该是可以的,我刚才测试了下gmail的也可以。代码可以参考下面的例子。

    你可以申请一个gamil试试。

      <system.net>
        <mailSettings>
          <smtp from="xxx@gmail.com">
            <network host="smtp.gmail.com" port="587" userName="xxx@gmail.com" password="???" />
          </smtp>
        </mailSettings>
      </system.net>

    上面端口号要注意。你自己设置其它的邮箱的时候得确定端口号。

     public void SendMail(string message, string email, string subject)
        {
            MailMessage mm = new MailMessage();
            mm.To.Add(new MailAddress(email));
            mm.Subject = subject;
            mm.Body = message;
            mm.IsBodyHtml = true;
            mm.Priority = MailPriority.High;
            SmtpClient client = new SmtpClient();
            client.EnableSsl = true;
            client.Send(mm);
        }
    上面加了个client.EnableSsl = true;是根据邮箱的需求,有些邮箱要求启用这个,有的没要求。

    Microsoft Online Community Support
    2010年4月12日 2:03
  • 谢谢你`一点问题没有`
    2010年4月19日 3:01