唉!近来特么QQ邮件也犯二,突然间以前写的代码邮件发不出去,各种报错,无奈之下,换成了@163.com,可是报错依然,该开通(POP3/SMTP/IMAP)的都开通了!我勒了个草,像是在玩哥一样,还好哥不以为然,不然还真不知道和谁过不去。

闲话少叙,言归正传,本次以@163.com为例,来给自己写一份记录事迹,各大邮件商可谓煞费苦心,想收你钱那,唉!从注册开始吧!

当你注册一个@163.com邮箱时,要开通POP3/SMTP/IMAP就必须设置【授权码】,但有了这授权码这类设置得授权了才能用,但是为了能让C#程序通过163服务器发出邮件,那你还得把你的邮箱密码改成【授权码】一样,不然就发不出去(原因本人不明,知道的同学请赐教,不胜感激,但经过结论试验得出!)!

接下来就是上代码

先看我的配置文件

    <add key="sendEmail" value="13066802098@163.com,lei12345678,smtp.163.com,测试邮件"/>
<add key="sendContext" value="您好!欢迎来到XXX网,您的注册验证码是{0},有效期10分钟,过期无效!谢谢"/>
</appSettings>

然后上后台代码

        /// <summary>
/// 发送邮件的方法
/// </summary>
/// <param name="context">邮件内容中要替换的变化部份</param>
/// <param name="toEmail">发送给XXXX的Email(也叫接收者的邮件地址)</param>
/// <returns></returns>
public static string SendEmail(string context, string toEmail)
{
//if (mailToArray == null || mailToArray.Length == 0) return "发送失败,收件人为空!";
//"sender,pwd,serverHost(服务器地址smtp.qq.com),Port(端口号),subject(主题)"
string emailSetting = ConfigurationManager.AppSettings["sendEmail"].ToString();
string settingContent = ConfigurationManager.AppSettings["sendContext"].ToString(); // 格式为:"您好!您……………………{0}……"
context = string.Format(settingContent, context); // 格式化上面的要变{0}的内容 如果发的是不变的内容就不要该代码
if (string.IsNullOrEmpty(emailSetting)) return "配置错误";
string[] arr = emailSetting.Split(',');
if (arr.Length != ) return "配置错误";
string sender = arr[]; // 发送人邮件地址
string password = arr[]; // 发送人邮件PWD
string Server = arr[]; // 发送人邮件服务器地址
//int Port=0;
//if (!int.TryParse(arr[3], out Port)) return "邮件服务器端口号配置错误"; // 发送人邮件服务器地址端口号可以不写
string Subject = arr[]; // 邮件主题
//使用指定的邮件地址初始化MailAddress实例
MailAddress maddr = new MailAddress(sender,"雷先生"); // 这里第二个参数可以写成你想显示的!
//初始化MailMessage实例
MailMessage myMail = new MailMessage();
//向收件人地址集合添加邮件地址
//if (mailToArray != null)
//{
// for (int i = 0; i < mailToArray.Length; i++)
// {
// myMail.To.Add(mailToArray[i].ToString());
// }
//}
myMail.To.Add(toEmail); // 如果用批量 注释这一行,用上面的for添加邮件地址
//向抄送收件人地址集合添加邮件地址
//if (mailCcArray != null)
//{
// for (int i = 0; i < mailCcArray.Length; i++)
// {
// myMail.CC.Add(mailCcArray[i].ToString());
// }
//}
myMail.CC.Add(toEmail); // 如果用批量 注释这一行,用上面的for添加抄送邮件地址
//发件人地址
myMail.From = maddr;
//电子邮件的标题
myMail.Subject = Subject;
//电子邮件的主题内容使用的编码
myMail.SubjectEncoding = Encoding.UTF8;
//电子邮件正文
myMail.Body = context;
//电子邮件正文的编码
myMail.BodyEncoding = Encoding.Default;
myMail.Priority = MailPriority.High;
myMail.IsBodyHtml = true;
//在有附件的情况下添加附件
// try
// {
// if (attachmentsPath != null && attachmentsPath.Length > 0)
// {
// Attachment attachFile = null;
// foreach (string path in attachmentsPath)
// {
// attachFile = new Attachment(path);
// myMail.Attachments.Add(attachFile);
// }
// }
//}
//catch (Exception err)
//{
// throw new Exception("在添加附件时有错误:" + err);
//}
SmtpClient smtp = new SmtpClient();
//指定发件人的邮件地址和密码以验证发件人身份
smtp.Credentials = new NetworkCredential(sender, password);
//smtp.UseDefaultCredentials = true;这句不要,否则发不出,一定要注意!!!!!!!!!!!!!!!!!!!!!!!!!
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //设置SMTP邮件服务器
smtp.Host = Server;
// smtp.EnableSsl = true;
//smtp.Port = 587;
try
{
//将邮件发送到SMTP邮件服务器
smtp.Send(myMail);
return "成功";
}
catch (System.Net.Mail.SmtpException ex)
{
return "失败";
} }

KO,就这样,可以根据需要改动!

老话题之C#写邮件发送的更多相关文章

  1. C# 邮件发送遇到的错误

    记录写邮件发送功能遇到的一些错误 1.System.Net.Mail.SmtpException:“Transaction failed. The server response was: DT:SP ...

  2. Python写自己主动化之邮件发送(匿名)

    为了可以实现邮件发送功能.首先.我们须要了解一下邮件的发送过程是什么样子的,此处不再具体说明,请大家自行搜索或查看p=438">http://www.sogouqa.com/?p=43 ...

  3. IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (一)

    邮件发送功能总结        第一部分 背景   一.使用场景 (1)注册验证    注册各大网站,通常需要输入邮件地址,在注册成功后,会发送一封邮箱验证的邮件,点击确认,证明这个邮箱是用户自己的 ...

  4. [RHEL] RHEL7.0 下 Postfix + Dovecot 实现邮件发送

    RHEL7.0 下 Postfix + Dovecot 实现邮件发送 一.前言 大家都对邮件服务(mail service)很感兴趣嘛.我在自己 博客站 预言了自己会实战一次,访问量一天到十几(毕竟平 ...

  5. J2EE 邮件发送那些事儿

    距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...

  6. Java邮件发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  7. .Net(C#)最简单的邮件发送案例

    一.序言 刚开始接触邮件发送功能的时候,在网上找的资料都挺复杂的!对于新手入门有点难(至少对于本人来说,第一次接触的时候确实不容易).这里就写一段简单的邮箱发送代码,备忘,也给新手一个参考(相关类的字 ...

  8. Jenkins邮件配置,实现邮件发送策略(可实现每个Job对应不同的发送邮箱)

    前言: 首先,要有一个用来发送的邮箱,首选网易!参考:http://www.cnblogs.com/EasonJim/p/6051636.html,这里我注册了网易的免费企业邮箱. 并且我新建没多个邮 ...

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

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

随机推荐

  1. c++ const(不断跟新)

    1.把一个 const 对象的地址赋给一个普通的.非 const 对象的指针也会导致编译时的错误: const double pi = 3.14; double *ptr = π // error: ...

  2. ios 更改UITableview中Section的字体颜色

    -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UILabel *c ...

  3. python线程池ThreadPoolExecutor用法

    线程池concurrent.futures.ThreadPoolExecutor模板 import time from concurrent.futures import ThreadPoolExec ...

  4. [LintCode] 最多有多少个点在一条直线上

    /** * Definition for a point. * struct Point { * int x; * int y; * Point() : x(0), y(0) {} * Point(i ...

  5. ctf-HITCON-2016-houseoforange学习

    目录 堆溢出点 利用步骤 创建第一个house,修改top_chunk的size 创建第二个house,触发sysmalloc中的_int_free 创建第三个house,泄露libc和heap的地址 ...

  6. 深入理解Flask中的上下文

    https://blog.csdn.net/barrysj/article/details/51519254 1.AppContext类即是应用上下文,可以看到里面只保存了几个变量,其中比较重要的有: ...

  7. Xshell 连接虚拟机特别慢 解决方案

    由于各种原因,xshell连接虚拟机的rhel或者CentOS都几乎是龟速...... 今天专门查了一下解决方案: 原来是ssh的服务端在连接时会自动检测dns环境是否一致导致的,修改为不检测即可,操 ...

  8. 如何在python项目中写出像Django中一样功能的settings

    一  核心文件目录结构 二  实现代码 resdme: 在实现此功能主要用到的知识点及模块: 1.反射 3.内置方法dir # 全局配置 NAME = 'root' # 用户配置 NAME = 'pe ...

  9. python迟邦定

    1.绑定 将函数体和函数调用关联起来,就叫绑定 2.迟绑定 在程序运行之前(也就是编译和链接时)执行的绑定是早绑定,迟绑定(late binding)是发生在运行时. 3.实例说明 def outer ...

  10. Oracle 实现拆分列数据的split()方法

    -- 创建需要划分的字符串 with T1 as( select 'one,two,three,four,five,six,seven,eight,nine,zero' as source_strin ...