第一种方式发送邮件,不读取配置文件发送邮件,(本地测试可以,但是服务器上不行)

/// <summary>
/// 发送邮件
/// </summary>
/// <param name="emailAddressList">收件人地址集合</param>
/// <param name="Subject">邮件标题</param>
/// <param name="Body">邮件体(可以为html)</param> public void email(List<string> emailAddressList, string Subject, string Body) {
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
client.Host = "smtp.163.com";//使用163的SMTP服务器发送邮件
client.UseDefaultCredentials = true;
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
client.Credentials = new System.Net.NetworkCredential("15221591234@163.com", "1321510477");//163的SMTP服务器需要用163邮箱的用户名和smtp授权码作认证,如果没有需要去163申请个,
//这里假定你已经拥有了一个163邮箱的账户,用户名为abc,密码为*******
System.Net.Mail.MailMessage Message = new System.Net.Mail.MailMessage();
Message.From = new System.Net.Mail.MailAddress("15221591234@163.com");//这里需要注意,163似乎有规定发信人的邮箱地址必须是163的,而且发信人的邮箱用户名必须和上面SMTP服务器认证时的用户名相同
//因为上面用的用户名abc作SMTP服务器认证,所以这里发信人的邮箱地址也应该写为abc@163.com
if (emailAddressList == null || emailAddressList.Count <= 0)
return;
foreach (string email in emailAddressList)
{
Message.To.Add(email);//将邮件发送给Gmail
}
//Message.To.Add("123456@gmail.com");//将邮件发送给Gmail
//Message.To.Add("123456@qq.com");//将邮件发送给QQ邮箱
Message.Subject = Subject;
Message.Body = Body;
Message.SubjectEncoding = System.Text.Encoding.UTF8;
Message.BodyEncoding = System.Text.Encoding.UTF8;
Message.Priority = System.Net.Mail.MailPriority.High;
Message.IsBodyHtml = true;  //可以为html
try
{
client.Send(Message);
}
catch(Exception ex)
{
string path = Server.MapPath("~") + "\\mail.txt";
if (!System.IO.File.Exists(path))
{
FileStream fs1 = new FileStream(path, FileMode.Create, FileAccess.Write);//创建写入文件
StreamWriter sw = new StreamWriter(fs1);
sw.WriteLine(DateTime.Now.ToString() + " ;Source:" + ex.Source + " ;HelpLink:" + ex.HelpLink + " ;Message:" + ex.Message);//开始写入值
sw.Close();
fs1.Close();
}
else
{
StreamWriter sr = System.IO.File.AppendText(path);
sr.WriteLine(DateTime.Now.ToString() + " ;Source:" + ex.Source + " ;HelpLink:" + ex.HelpLink + " ;Message:" + ex.Message);//追加写入值
sr.Close();
}
}
}

第二种方式,通配置web.config发送邮件,(服务器上也能成功,推荐这种方式,方便以后修改smtp服务)

配置文件如下

<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="15221591234@163.com" >
<network host="smtp.163.com" userName="15221591234@163.com" password="1321510477" />
</smtp>
</mailSettings>
</system.net>
</configuration>

代码如下

/// <summary>
/// 发送邮件
/// </summary>
/// <param name="emailAddressList">收件人地址集合</param>
/// <param name="Subject">邮件标题</param>
/// <param name="Body">邮件体(可以为html)</param>
public void email(List<string> emailAddressList, string Subject, string Body)
{
try
{
SmtpSection cfg = NetSectionGroup.GetSectionGroup(WebConfigurationManager.OpenWebConfiguration("~/web.config")).MailSettings.Smtp;
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(cfg.Network.Host);
client.UseDefaultCredentials = true;
client.Credentials = new System.Net.NetworkCredential(cfg.Network.UserName, cfg.Network.Password); client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; System.Net.Mail.MailMessage Message = new System.Net.Mail.MailMessage();
Message.From = new System.Net.Mail.MailAddress(cfg.From);//这里需要注意,163似乎有规定发信人的邮箱地址必须是163的,而且发信人的邮箱用户名必须和上面SMTP服务器认证时的用户名相同
//因为上面用的用户名abc作SMTP服务器认证,所以这里发信人的邮箱地址也应该写为abc@163.com
if (emailAddressList == null || emailAddressList.Count <= 0)
return;
foreach (string email in emailAddressList)
{
Message.To.Add(email);//将邮件发送给Gmail
}
//Message.To.Add("123456@gmail.com");//将邮件发送给Gmail
//Message.To.Add("123456@qq.com");//将邮件发送给QQ邮箱
Message.Subject = Subject;
Message.Body = Body;
Message.SubjectEncoding = System.Text.Encoding.UTF8;
Message.BodyEncoding = System.Text.Encoding.UTF8;
Message.Priority = System.Net.Mail.MailPriority.High;
Message.IsBodyHtml = true; //可以为html client.Send(Message);
}
catch (Exception ex)
{
string path = Server.MapPath("~") + "\\mail.txt";
if (!System.IO.File.Exists(path))
{
FileStream fs1 = new FileStream(path, FileMode.Create, FileAccess.Write);//创建写入文件
StreamWriter sw = new StreamWriter(fs1);
sw.WriteLine(DateTime.Now.ToString() + " ;Source:" + ex.Source + " ;HelpLink:" + ex.HelpLink + " ;Message:" + ex.Message);//开始写入值
sw.Close();
fs1.Close();
}
else
{
StreamWriter sr = System.IO.File.AppendText(path);
sr.WriteLine(DateTime.Now.ToString() + " ;Source:" + ex.Source + " ;HelpLink:" + ex.HelpLink + " ;Message:" + ex.Message);//追加写入值
sr.Close();
}
}
}

smtp服务可以去163申请一个邮箱,然后开通smtp服务(其中15221591234@163.com是你邮箱地址,1321510477是你授权码)

http://jingyan.baidu.com/article/4e5b3e19266fee91901e2489.html

C# smtp邮件发送的更多相关文章

  1. python学习笔记(SMTP邮件发送:带附件)

    博主有段时间没有更新博客了 先整理一个之前整理过的SMTP邮件发送,这次是带附件的功能 #!/usr/bin/env python # -*- coding: utf_8 -*- from email ...

  2. pyqt5实现SMTP邮件发送

    # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'SMTP.ui' # # Created b ...

  3. python学习笔记(SMTP邮件发送)

    想着给框架添加邮件发送功能.所以整理下python下邮件发送功能 首先python是支持邮件的发送.内置smtp库.支持发送纯文本.HTML及添加附件的邮件 之后是邮箱.像163.qq.新浪等邮箱默认 ...

  4. python SMTP邮件发送(转载)

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  5. C# SMTP邮件发送 分类: C# 2014-07-13 19:10 334人阅读 评论(1) 收藏

    邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助: 核心代码: ...

  6. C# SMTP邮件发送 分类: C# 2014-07-13 19:10 333人阅读 评论(1) 收藏

    邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助: 核心代码: ...

  7. java实现smtp邮件发送

    一.准备工作 首先你需要已一个发送邮箱,一般的邮箱都有SMTP.POP3服务,比如QQ邮箱,登陆QQ邮箱开启SMTP服务,开启是服务器会提示你设置独立密码,这个密码是跟邮箱正常登陆的密码不同的,这个是 ...

  8. Python SMTP邮件发送

    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块: email负责构造邮件 ...

  9. C# SMTP 邮件发送之QQ邮箱篇

    邮件发送大家都已经非常熟悉了,微软自带的System.Net.Mail也很好用,那为什么还要说呢? QQ邮箱的SMTP以前是非SSL,用未加密的25端口,后来发送都改成SSL了,端口为465或587( ...

  10. JavaUtil smtp 邮件发送

    需要用到的jar包:javax.mail.jar package com.lee.util; import java.io.UnsupportedEncodingException; import j ...

随机推荐

  1. K - Japan(线段树)

    Japan plans to welcome the ACM ICPC World Finals and a lot of roads must be built for the venue. Jap ...

  2. Codeforces Round #667 (Div. 3) D. Decrease the Sum of Digits (贪心)

    题意:给你一个正整数\(n\),每次可以对\(n\)加一,问最少操作多少次是的\(n\)的所有位数之和不大于\(s\). 题解:\(n\)的某个位置上的数进位,意味这后面的位置都可以被更新为\(0\) ...

  3. PowerShell多任务

    代码 foreach ($server in $servers) { $running = @(Get-Job | Where-Object { $_.State -eq 'Running' }) i ...

  4. CF1463-B. Find The Array

    题意: 给出一个由n个数组成的数组a,这个数组的元素和为S,要求你找出一个由n个数字组成数组b,这个数组满足: 数组中的每个数可以将他两边的数字整除或者被他两边的数字整除 数组b中每个位置的数字减去数 ...

  5. C# 类(3)

    方法重载 和python类似,在调用函数的时候可以指定默认参数,car("Jeep",color="red") 方法重载就是 可以定义几个同名的函数,然后带有不 ...

  6. redis字典

    字典作为一种保存键值对的数据结构,在redis中使用十分广泛,redis作为数据库本身底层就是通过字典实现的,对redis的增删改查实际上也是构建在字典之上. 一.字典的结构

  7. npm publish & 403 Forbidden

    npm publish & 403 Forbidden 403 Forbidden - PUT https://registry.npmjs.org/ https://www.npmjs.co ...

  8. docker-compose All In One

    docker-compose All In One docker-compose 多容器应用 $ docker-compose -h Define and run multi-container ap ...

  9. HTML5 Canvas 2D library All In One

    HTML5 Canvas 2D library All In One https://github.com/search?q=Javascript+Canvas+Library https://git ...

  10. Android 开启 WebView 页面 Chrome debug

    Android 开启 WebView 页面 Chrome debug WebView debug // 开启 WebView 页面 debug testWebView.setWebContentsDe ...