C#发送邮件

 ASP.NET 2.0 中发送电子邮件变得非常简单。发送电子邮件的类库主要在命名空间 System.Net.Mail中, 在这个命名空间中有两个核心类是:
      · MailMessage:描述一个电子邮件消息;它拥有From,To,Subject,Body等属性;
      · SmtpClient:把一个指定的MailMessage实例发送到一个指定的SMTP服务器。

      发送电子邮件的一般步骤是:
      1.创建一个MailMessage对象;
      2.赋给它的From,To,Subject,Body等属性;
      3.创建一个SmtpClient类实例;
      4.指定关于使用该SMTP服务器的细节(如果它们没有在Web.config中指定);
      5.经由SmtpClient对象的Send方法发送该MailMessage。
      
      下面的代码演示了发送电子邮件的过程:
string mailServerName = "smtp.126.com" //发送邮件的SMTP服务器
string mailFrom = "sender0624@126.com"  //发件人邮箱(用126的邮件服务器,就必须用126邮箱的用户名)
string mailTo = "supremezone@126.com"  //收件人邮箱
string subject = "用代码方式发送邮件";//邮件主题
string body = "这里是邮件正文了" //邮件正文

using (MailMessage message = new MailMessage(mailFrom, mailTo, subject, body))
{
    
//SmtpClient是发送邮件的主体,这个构造函数是告知SmtpClient发送邮件时使用哪个SMTP服务器
    SmtpClient mailClient = new SmtpClient(mailServerName);
    
//将认证实例赋予mailClient,也就是访问SMTP服务器的用户名和密码
    mailClient.Credentials = new NetworkCredential("sender0624""111111");
    
//最终的发送方法
    mailClient.Send(message);
}
            上述 方法是通过Code方式发送邮件的,而在Asp.Net 2.0中Framework考虑更多的是配置式,也就是通过config方式来进行应用程序的控制,减少程序参数硬编码,这个配置节属于<system.net>节下的。
              首先在Web.config文件中增加如下配置节:
<system.net>
    
<!-- 如果是第三方smtp服务器,需要指定userName 和 password,并根据host指定发件人邮件地址from
        测试发现from值必须是userName值加上指定的smpt服务器才行,而且是必须指定的
        如果是本机smtp服务器,只需指定defaultCredentials="true"即可
-->

    
<mailSettings>
      
<smtp deliveryMethod="Network" from ="sender0624@126.com" >
        
<network host="smtp.126.com" port="25" userName="sender0624" password="111111/>
      
</smtp>
    
</mailSettings>
  
</system.net>
接下来是程序代码,你会发现配置方式较Code方式代码是多么简洁,而且避免了硬编码,Smtp信息是从配置文件中读取的。
using (MailMessage message = new  MailMessage())
{
    message.To.Add(
new MailAddress("supremezone@126.com")); //收件人邮箱

    message.Subject = "通过配置文件设置发送邮件";//邮件主题
    message.Body = "这里是邮件正文了" //邮件正文

    SmtpClient mailClient 
= new SmtpClient();
    mailClient.Send(message);
}

              相比Code方式,我们发现配置方式代码中省去了发件人邮箱,SMTP服务器和SMTP服务器认证的 Credentials,代码变得相当简洁,更为重要的是这些信息可以在Web.config文件中配置,这就大大增加了程序的灵活性,这是推荐采用的方式。 需要说明的一点,示例中的邮箱用户名和密码都是真实的,理论上运行该示例程序是可以正常发送邮件的,但发送邮件时程序会抛出异常“邮箱不可用。服务器响应为: Óû§±»Ëø¶¨ ”,但如果Credentials认证信息换成我另一个126邮箱,却能正常发送邮件了,一直没能找到原因所在,将对SmtpClient发送邮件的稳定性做进一步的研究,也希望能得到大家的指导。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用C#编写的控制台程序,用于发送邮件: ```csharp using System; using System.Net; using System.Net.Mail; class Program { static void Main(string[] args) { // 设置邮件服务器 string smtpServer = args[0]; int smtpPort = 25; SmtpClient client = new SmtpClient(smtpServer, smtpPort); // 设置发件人 string from = args[1]; string displayName = args[2]; MailAddress fromAddress = new MailAddress(from, displayName); // 设置收件人 string to = args[3]; MailAddress toAddress = new MailAddress(to); // 创建邮件对象 MailMessage message = new MailMessage(fromAddress, toAddress); // 设置抄送和密送 if (args.Length > 4) { string[] cc = args[4].Split(','); foreach (string c in cc) { message.CC.Add(c); } } if (args.Length > 5) { string[] bcc = args[5].Split(','); foreach (string b in bcc) { message.Bcc.Add(b); } } // 设置主题和内容 message.Subject = args[6]; message.Body = args[7]; // 添加附件 if (args.Length > 8) { string[] attachments = args[8].Split(','); foreach (string attachment in attachments) { Attachment file = new Attachment(attachment); message.Attachments.Add(file); } } // 发送邮件 client.Send(message); Console.WriteLine("邮件发送成功!"); } } ``` 在命令行中输入以下命令即可发送邮件: ``` SendMail 邮件服务器IP 发件人 显示名称 收件人 抄送 密送 主题 内容 文件 ``` 其中,邮件服务器IP、发件人、显示名称、收件人、主题和内容是必填项,抄送、密送和文件是可选项。如果有多个收件人、抄送或密送,可以用逗号分隔。如果有多个文件,也可以用逗号分隔。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值